5

以前は、すべてのサイトをライブで編集していました。2 人の訪問者にエラー メッセージが表示されることはあまり心配していませんでした。

とはいえ、2人以上のお客様が来る日が来るかもしれません。変更をテストし、すべての変更を同時に有効にするための最良の方法は何ですか?

単一のファイルをコピーしてサブフォルダーに貼り付け、これらを編集し、完了したらコピーして戻す必要がありますか? コードに完全な URL がある場合はどうすればよいですか (移動すると壊れます)。たぶん、.htaccess ハッカーを使用してこれを回避できますか? データベースのダミーテストデータはどうですか? すべての MySQL テーブルを複製して、代わりにそれらを参照する必要がありますか?

私は懸念している特定のプロジェクトに CakePHP を使用していますが、Cake (これを支援するツールがあるかもしれません) とフレームワークなしの両方で、人々がどのようなアプローチをとっているのか知りたいです。


SVN に関する多くの推奨事項を受け取っています。これは素晴らしいことですが、残念ながら、私のホストはそれをサポートしていません :\

4

5 に答える 5

18

最善の方法は、変更をテストするステージング環境を作成することです。ステージング環境は (理想的には) 実稼働システムの完全な複製です。これにより、多くの頭痛の種や不注意による生産のクラッシュが発生するのを防ぐことができます。

小規模なプロジェクトで作業している場合、最善の方法はリモート サイトをローカルに再作成することです (データベースを含む)。そこにすべての変更をコーディングし、完了したことに満足したら、変更をリモート サイトに一度に展開します。

于 2009-04-06T00:43:38.463 に答える
5

ウェブサイトのコードを完全なバージョン管理(gitまたはsubversion)にすることをお勧めします。ソースを別のプライベートサンドボックスサーバーでテストおよび保守し、リリースの準備ができたらいつでも本番サイトで最新の安定バージョンをチェックしてください。

データベースのサポートのために、小さなプロジェクトでも、開発データベースと本番データベースを別々に管理しています。スキーマの生成と保守、およびサイトの他の部分と一緒にデータのテストまたはブートストラップに使用されるSQLをバージョン管理できます。簡単に分離できる構成ファイルからサイトで使用されるデータベース環境を管理し、バージョン管理ソリューションにそれを無視するように指示します。

絶対URLが問題になります。それらを避けられない場合は、いつでも同じ構成ファイルにホスト名を保存し、必要に応じてそれを読み取ることができます...もちろん、スタイルシートとJavascriptリソース内を除きます。その問題に対する私の2番目の選択肢は、開発サーバーでのURL書き換えマジックまたはそれに相当するものであり、最後の選択肢は/etc/hosts、それらに依存する機能をテストしたいときにファイルをいじることです。

于 2009-04-06T01:22:04.550 に答える
3

ラップトップに開発サーバーをセットアップし、Web サーバーを可能な限り複製します (サーバー ソフトウェアと構成、オペレーティング システム、ファイル システムのレイアウト、インストールされたソフトウェアなど)。そうすれば、ラップトップでコードを記述し、ローカルでテストできます。 ; そこで動作するようになったら、それをサーバーにコピーします。2 台のコンピューターのわずかな違いが原因でいくつかの問題が発生することもありますが、それらは常に迅速に解決されます (そうでない場合に備えて、私は自分のサイトを SVN リポジトリに持っているので、いつでも元に戻すことができます)。

私が以前維持していた別の Web サイトでは、少し異なる戦術を使用しました。つまり、ベース サイトの開発バージョンとなるサイト内の URL パスを指定しました。つまり、http://www.example.com/devweb通常は mirror http://www.example.comhttp://www.example.com/devweb/foo/bar.phpmirrorhttp://www.example.com/foo/bar.phpなどです。ドキュメント ルートの下にフォルダーを作成しましたが、すべてのファイルをコピーする代わりに、要求されたファイルがディレクトリにdevweb存在しない場合にサーバーを構成するようにしました。/devwebドキュメントルートの下にある。ただし、これは別の開発サーバーを持つよりも脆弱な設定でした。

于 2009-04-06T00:55:08.547 に答える
2

アプリが実行されているシステムを決定するためにphpサーバー変数「SERVER NAME」を使用するconfig/database.phpのバージョンがあります。次に、ホーム システム、開発サイト (ライブ マシンと同じ仕様を共有)、およびライブ マシン全体で git リポジトリのクローンを作成すると、それらはすべてそれぞれのデータベースに接続します。

ここに貼り付けましたが、ベーカリーでも入手できると思います。

http://pastebin.com/f1a701145

于 2009-04-15T23:57:11.540 に答える
2

私は CakePHP で書かれたウェブサイトをいくつか持っています。実稼働サーバーのデータベースを使用して、ローカル マシンで開発とテストを行います (静的 IP アドレスで動作する MySQL ログインしかありません)。

すべてのコードが Subversion にチェックインされ、継続的インテグレーション サーバーである Hudson が作成されます。

https://hudson.dev.java.net/

これにより、プロジェクトがビルドされ、運用マシンにデプロイされます。特定のプロジェクトのサブバージョンでコードをチェックアウトし、単純なスクリプトを実行してファイルをサーバー上のステージングまたは本番の場所に SSH/コピーするだけです。これを手動プロセスに設定することも (私が現在持っている)、コードがチェックインされたら展開するように設定することもできます。これを行うために設定できる CI ツールは他にもたくさんあります ( Xincも見てください)。

http://code.google.com/p/xinc/

絶対 URL に関しては、代わりにマシン上でローカルにサイトを解決するために、ホスト ファイルに何かを設定することができます。それは私にとってはうまくいきますが、後でそれを取り出すことを忘れないでください:)

それが役立つことを願っています...

于 2009-04-06T03:14:38.383 に答える