Configuration et environnements

Dans une approche typique de configuration, on rencontre de multiples problèmes :

  • Chaque membre de l'équipe a ses propres options de configuration. L'engagement (commit) de sa propre configuration affecte les autres membres de l'équipe.
  • le mot de passe de la base de données de production et les clés d'API ne devraient jamais se retrouver dans le dépôt.
  • Il y a plusieurs environnements de serveur : developpement, test, production. Chacun doit avoir sa propre configuration.
  • Définir toutes les options de configuration pour chacun des cas est une affaire très répétitive et prend trop de temps à maintenir.

Pour résoudre ces problèmes, Yii introduit un concept d'environnement simple. Chaque environnement est représenté par un jeu de fichiers dans le dossier environments. La commande init est utilisée pour initialiser un environnement. Ce que fait exactement cette commande, c'est copier tout ce qui se trouve dans le dossier de l'environnement dans le dossier racine où se trouvent les applications.

Par défaut, il y a deux environnements : dev et prod. Le premier sert au développement et les outils de développement et de débogage y sont activés. Le second sert au déploiement sur les serveurs. Les outils de débogage et de développement y sont désactivés.

Typiquement un environnement contient les fichiers d'amorçage de l'application tels que index.php et les fichiers de configuration avec le suffixe -local.php. Il s'agit soit de fichiers de configuration personnels de membres de l'équipe qui sont généralement dans l'environnement dev ou de configurations de serveurs spécifiques. Par exemple, la connexion à la base de données de production peut être dans une configuration -local.php de l'environnement prod. Ces configurations locales sont ajoutées à .gitignore et ne sont jamais poussées sur le dépôt de code source.

Pour éviter que des configurations ne s'écrasent les unes les autres, l'interface utilisateur (frontend), par exemple, lit les configurations dans cet ordre :

  • common/config/main.php
  • common/config/main-local.php
  • frontend/config/main.php
  • frontend/config/main-local.php

Les paramètres sont lus dans cet ordre :

  • common/config/params.php
  • common/config/params-local.php
  • frontend/config/params.php
  • frontend/config/params-local.php

Une configuration écrase celles qui la précèdent.

Voici le schéma complet :

Configuration de l'application avancée