1

新しいプロジェクトを開始しています。

ZF2を使用しています。インストールしたばかりで、Skeleton アプリケーションを起動して実行しています。

これは私の展開プロセスです:

  • ローカル マシンで開発する
  • 次に、公開 github リポジトリにプッシュします
  • 次に、deployhq.com を使用して、ユーザーが変更を確認できる実稼働サーバーにそれらをデプロイします。

私はブログなどでスタック、zendサイト、グーグルを見回そうとしましたが、それでも私の問題に対する本当の理解や解決策はありません。

アプリケーションで、環境に基づいて異なるデータベース資格情報を使用する必要があります。たとえば、ローカル マシンの「dev」の場合は資格情報 A を使用しますが、ライブ サーバーの場合は資格情報 B を使用します。

グローバルおよびローカルの自動ロード構成ファイルなどについて多くのことを読みましたが、私のgithubリポジトリが公開されていることを念頭に置いて、データベースの詳細を含む構成ファイルをコミットすると、すべてが表示されます。

同じ理論で、DB接続を含むグローバルファイルとローカルファイルを作成する方法があるかどうか疑問に思っていました.セキュリティ上の理由からgit経由ではなく手動でプロダクションの詳細をアップロードし、gitにローカル構成ファイルを無視するように指示しますか?また、環境とその場所に基づいて、これらの構成ファイルを使用するようにアプリケーションに指示する方法を知る必要もあります。

4

1 に答える 1

5

Zend 2には

  1. グローバル構成ファイル &
  2. モジュール レベルの構成ファイル

知りたい場合は、以下のリンクを参照してください。

ZF2 で構成がどのように機能するか

同じシナリオがあったとき、上記のリンクを使用して、このような状況を処理するのに非常に適した Zend Config モジュールを理解して活用しました。

2 つのファイルを作成する

production.php ローカル.php

これらの両方のファイルで

環境に基づいてこの配列を返します

return array(
     "dbname" => "yourdbname"
     "dbhostname" => "dbhostname"
     "dbusername" => "yourdbusername",
     "dbpassword" => "yourdbpassword"
 );

zend framewrok アプリケーションの config/autoload/ ディレクトリ

後で以下の手順に従って config/application.config.php ファイルを編集します

// Apache vhost ファイルからアプリケーション環境を取得します (ここでは、Apache vhost ファイルで production または local として設定できます)

$applicationEnv = getenv('APPLICATION_ENV');

$environmentSpecificConfigPath = "config/autoload/{,*.}{".$applicationEnv.",local}.php";

// 次に、構成配列で環境固有の構成パスを渡します

 'config_glob_paths' => array($environmentSpecificConfigPath)

任意のコントローラーまたはアクションで

以下のコードを使用できます

 $configArray = $this->getGlobalConfig(); 

$configarray には、接続を作成するためのすべての DB 資格情報が含まれています

$adapter = new Zend\Db\Adapter\Adapter(array(
    'driver' => 'Mysqli',
    'database' => $configArray['dbname'],
    'username' => $configArray['dbusername'],
    'password' => $configArray['dbpassword']
 ));

アプリケーション全体で構成配列を使用して DB に接続する場合、環境の変更について心配する必要はありません。vhost ファイルに Apache APPLICATION_ENV エントリがあることを確認してください。

Apache vhostファイルに以下の行を追加することでそれを行うことができます

 SetEnv APPLICATION_ENV "production" // in your production server 

 SetEnv APPLICATION_ENV "local"  // in your local 

最後になりましたが、Zend Experts モジュール ZeDB を使用することもできます

https://github.com/ZendExperts/ZeDb

CRUD アプリケーションを管理するには

上記の手順が環境の作成に役立つことを願っています

于 2013-09-20T15:47:16.740 に答える