アプリケーションを開発から本番に正しくデプロイする方法と、複数のサイト構成に対処する方法。私の開発はすべて var/svn/myapp/trunk にある svn を介して行われ、実際の製品コードは /var/www/myapp にあります。
ローカル マシンの最新コードを「myapp_latest_svn」というディレクトリにチェックアウトします。H_PATH = ' http://myapp.com ' & db_host、db_user_name、および db_password の db config 設定を含むメインの settings.php に、サイトと場所固有のコードがあります。 /myapp.com は単なる Apache エイリアスです) & 本番 (ライブ サイトは myapp.com で実行されます) サーバー上。
また、.htaccess ファイルは運用サーバーのものとは異なります。つまり、開発と本番の間には多くの違いがあります。
私はすべての作業を SVN に保存しています。毎朝、最新のコードをローカルの svn リポジトリに更新する SVN Update を使用しています。ライブの準備ができたら、svn Commit でリリースをビルドします。
次に、リリースでは、適切な開発ファイルをすべて、対応する製品に変更することを忘れないでください。ここで、サイト固有の変更を反映するために、プロダクションの settings.php と .htaccess を手動で編集する必要がありました。
私は、バージョン管理と、エラーが発生しやすく、悪い習慣であるファイルの手動編集を必要とせずに、開発から本番に移行する自動化された方法を探しています。
1 つの方法は、ファイルの本番バージョンを読み取り専用 (0444) にすることです。そうすれば、svn エクスポートを行うときに、ファイルの開発バージョンによって上書きされることはなく、開発から運用に移動するたびにファイルを編集することを心配する必要はありません。しかし、それは継続的インテグレーションのようなことを行うには悪い方法です。
また、settings.php の複数のコピー (localhost、beta、および prod 用に 1 つ) を作成します。次に、svn からエクスポートするシェル スクリプトを使用し、エクスポートが完了すると、デプロイ先の場所に応じて、settings.php を正しい settings.php に置き換えます。そうすれば、すべてが自動化されます。しかし、これも不毛な方法です。
最後の方法は
if( eregi ("myapp.com$", $_SERVER['HTTP_HOST']) ){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
これは、settings.php に関する限り問題ありません。しかし、.htaccess については、.htaccess で上記のようにチェックすることはできません。
設定を変更する必要があるサイトを展開するたびに、やりたくないことがあります。
私のDBスキーマはバージョン管理されていないので、dbは問題ではなく、settings.phpと.htaccessだけです。
また、サイト固有のディレクトリ (/log、/cache、/assets、/downloads) もあるため、svn に一部のディレクトリを更新しないように指示するにはどうすればよいですか。また、上記のファイルに対しても、apache ( www_data) 書き込みアクセスをそのまま保持する必要があります。
最後に、エクスポート時に空のトランク ディレクトリと .svn ファイルを運用サーバーにコピーしたくありません。
Phing またはシェル スクリプトを使用して、svn から運用サーバーに構築するときにこれらの問題を引き起こさずに統合するにはどうすればよいですか。
これは、世の中に出回っている多くの志望アプリ開発者にとって役立つ可能性があります。
前もって感謝します、
稼働時間