Symfony2プロジェクトのデフォルトのフォルダー構造では、データベースとメールサーバーの認証情報は、次のデフォルト値でparameters.yml
内のProjectRoot/app/config/parameters.yml
ファイルに保存されます。
parameters:
database_driver: pdo_mysql
database_Host: 127.0.0.1
database_port: null
database_name: symfony
database_user: root
database_password: null
mailer_transport: smtp
mailer_Host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: en
secret: ThisTokenIsNotSoSecretChangeIt
開発中、これらのパラメーターを開発データベースとメールサーバーに変更します。このファイルは、ソースコードリポジトリにチェックインされます。
問題は、本番サーバーにデプロイする場合です。 gitからプロジェクトをチェックアウトして本番サーバーにデプロイすることで、デプロイメントプロセスの自動化を検討しています。
重要なのは、プロジェクトマネージャーが更新のたびにこれらのパラメーターを手動で更新する必要があることです。運用データベースとメールサーバーのパラメーターは機密情報であり、私たちのプロジェクトマネージャーだけがそれらを知っています。
このステップを自動化する方法と、それらが適用されるまで生産パラメーターを保存する場所に関する提案が必要ですか?
名前の変更parameters.yml
からparameters.yml.sample
、無視parameters.yml
をバージョン管理に追加します。
アプリのインストールごとに、.sample
適切な場所に戻り、必要に応じて詳細を編集します。
これにより、各インストールに必要な詳細(メーラー、DB、APIキーなど)を示すサンプルファイルが作成され、シークレットはバージョン管理されません。
本番ファイルの場合、ファイルを使用しないでください。 (ファイルを使用して)開発プラクティスを妨げないはるかに優れた方法は、運用環境でENV変数を使用することです。
この実践の参考になるクックブックを見てください。
http://symfony.com/doc/current/cookbook/configuration/external_parameters.html