アプリケーションを開発から運用に正しく展開する方法と、複数のサイト構成を処理する方法。 私のすべての開発はvar/svn/myapp/trunkにあるsvnを通して行われ、 実際の生産コードは/ var/www/myappにあります。PHPアプリケーションを正しく展開するには?
ローカルマシンの最新コードを "myapp_latest_svn"というディレクトリにチェックアウトします。 は、私はあなたが ローカルマシンの設定(ローカルホスト/ myappの中に異なる知っているようであるDB_HOST、db_user_nameとDB_PASSWORDためH_PATH =「http://myapp.com」 &デシベルのコンフィグ設定があり、私のメインのsettings.phpにサイトや場所の特定のコードを持っています。 comは単なるApacheエイリアス)&(実稼働サイトはmyapp.comで稼動しています)サーバです。
また、.htaccessファイルは本番サーバーのファイルとは異なります。要するに、開発者と生産の間にはいくつかの違いがあります。
私はすべて私の仕事をSVNに保管しています。毎朝、ローカルのsvnリポジトリに最新のコードを更新するSVN Updateを使用します。 ライブに行く準備ができたら、私はsvn Commitでリリースをビルドします。
その後、リリースでは、適切なすべてのdevファイルをその製造元に変更することを忘れないようにしなければなりません。 これで、サイト固有の変更を反映するためにproduction settings.php & .htaccessを手作業で編集しなければなりませんでした。
私は、バージョン管理とバージョン の完全なプロダクションに移行する自動化された方法を探しています。これは、エラーが発生しやすく、悪い習慣であるファイルを手作業で編集するものではありません。
1つの方法は、ファイルのプロダクションバージョンを読み取り専用(0444)にすることです。そうすれば、私はsvnのエクスポートを行うときに、 ファイルのdevバージョンで上書きされることはなく、私は 上のファイルの編集について心配する必要はありません。しかし、それは継続的な統合のようなことをする悪い方法です。
また、settings.php(localhost、beta、およびprodの1つ)の複数のコピーを作成することで、次に、svnからエクスポートするシェルスクリプト を使用して、エクスポートが完了すると、展開先のロケーションに応じて、settings.phpを正しいsettings.php、 に置き換えます。そうすれば、すべてが自動化されます。 しかし、これはまた行き届かない道です。
最後の方法は、これは、限りのsettings.phpが懸念しているようで結構です
if(eregi ("myapp.com$", $_SERVER['HTTP_HOST'])){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
です。 しかし、.htaccessのabtは、上記の.htaccessのようにチェックできません。
私は設定を変更する必要がある私のサイトを展開するたびに終わりをしたくない。
私のDBスキーマはバージョン管理されていないので、dbは私の問題ではなく、settings.phpと.htaccessだけです。
また、サイト固有の(/ log、/ cache、/ assets、/ downloads)ので、svnにいくつかのディレクトリを更新しないように指示することもできます。 また、私は上記のファイルのためにそのままapache(www_data)書き込みアクセスを保持する必要があります。
最後に、エクスポートするときに空のトランクディレクトリと.svnファイルを本番サーバーにコピーしたくありません。
どのように私はphingまたはシェルスクリプトを使用して、svnからプロダクションサーバーにビルドするときにこれらの問題を引き起こすことなく統合できますか。
これは野生の野生の多くのアプリ開発者にとって役に立ちます。事前に
おかげで、
ocptime
グレートリンクを持っています!ありがとう! –
シンボリックアセットディレクトリが何をしているのか説明できますか? – dave1010