web-dev-qa-db-ja.com

Symfony2アプリのどこにデータベースとメールのパラメーターを保存する必要がありますか?

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からプロジェクトをチェックアウトして本番サーバーにデプロイすることで、デプロイメントプロセスの自動化を検討しています。

重要なのは、プロジェクトマネージャーが更新のたびにこれらのパラメーターを手動で更新する必要があることです。運用データベースとメールサーバーのパラメーターは機密情報であり、私たちのプロジェクトマネージャーだけがそれらを知っています。

このステップを自動化する方法と、それらが適用されるまで生産パラメーターを保存する場所に関する提案が必要ですか?

4
Songo

名前の変更parameters.ymlからparameters.yml.sample、無視parameters.ymlをバージョン管理に追加します。

アプリのインストールごとに、.sample適切な場所に戻り、必要に応じて詳細を編集します。

これにより、各インストールに必要な詳細(メーラー、DB、APIキーなど)を示すサンプルファイルが作成され、シークレットはバージョン管理されません。

2
Amy B

本番ファイルの場合、ファイルを使用しないでください。 (ファイルを使用して)開発プラクティスを妨げないはるかに優れた方法は、運用環境でENV変数を使用することです。

この実践の参考になるクックブックを見てください。

http://symfony.com/doc/current/cookbook/configuration/external_parameters.html

0
vpassapera