6

私は現在、チームが採用している展開方法にかなり悩まされています...非常に時代遅れであり、うまく機能しないことはわかっています。でも、どう変えればいいのかわからないので、どなたかアドバイスお願いします。...

現在の設定は次のとおりです。

  • 2 つのウェブサーバー
  • 1 台のデータベース サーバー
  • 1 台のテスト サーバー

現在の展開の適応

  1. テストサーバーで開発および作業を行い、すべての変更は手動でテストサーバーにアップロードされます。
  2. 変更または機能が完了したら、変更を SVN リポジトリにコミットします。
  3. 変更をコミットした後、変更を最初の Web サーバーにアップロードします。ここでは、サーバー間でファイルを同期するために毎分実行される cronjob があります。

非常に面倒なことは、同期ジョブの開始時にファイルをアップロードするたびに、半分しかアップロードされていないため、同期されたファイルが破損しているように見えることです。もう 1 つのことは、展開に障害が発生すると、元に戻すのが非常に困難になることです。これらは基本的に私が直面している問題ですが、どうすればよいですか?

さらに、最初の Web サーバーには、いつでも他のサーバーと同期する必要があるファイルがあるため、その理由で cronjob がそこにありました。

P/S: 申し訳ありませんが、SVN サーバーはホストされていることを忘れていました。あまり制御できませんが、フックを編集できると思います...

4

3 に答える 3

7

Phingのような展開フレームワークを使用して、Web サーバーへの展開を管理し、cron ジョブを取り除きます。基本的に、実稼働システムでのリリースは自動的に行われるべきではありませんが、現在のビルドが壊れていないことを確認した後にのみ行われるべきです。また、開発システムに依存するべきではありません。

Phing は XML と PHP を使用して展開プロセスを構成および制御するため、プロセスをバージョン管理できます。これは追加の利点です。これにより、展開をアプリケーションの特定のビルドに接続したままにすることができます。

運用 Web サイトがデプロイ プロセスの影響を受けないようにするには、新しいビルドを別のディレクトリにアップロードしてから、そのディレクトリへのシンボリック リンクを作成することを検討してください。何か問題が発生した場合は、以前のバージョンに簡単にシンボリック リンクできます。

CI サーバーの使用も検討してください。

于 2010-04-13T10:52:27.910 に答える
1

私は最後の場所で同じことをしました。私たちが持っていたのは:

  • ウェブサイトごとのリポジトリ
  • /branches/liveライブ サイト (つまり) とテスト サイト (つまり/branches/testing)専用の各 Web サイトのブランチ
  • SVN と通信できる 2 つの Web サーバー
  • SVN と通信できるテスト サーバー
  • すべてのサーバーにSVNコマンドラインクライアントがインストールされていました

各 Web サーバーは独立して動作していたため、互いのことを実際には認識していませんでした。それはロード バランサーに任されていました。各サーバーには 3 時間ごとに実行される cron ジョブがあり、各 Web サイトのブランチの最新バージョンをファイル システムの正しいフォルダーにエクスポートしました。live

私たちのテスト サーバーでは、各 Web サイトのブランチのチェックアウトであり、cron ジョブはありませんでした。testing開発者は、公開前にユーザーがテストできるように何かを公開したいときはいつでも、フォルダーを更新しました。

開発中に、Web サイトの にコミットが行われましたtrunk。変更をテストする準備ができたら、変更をテスト ブランチにマージし、テスト サーバーでチェックアウトを手動で更新しました。変更がライブに移行する準備ができたら、それらはライブ ブランチにマージされ、サーバーはその日の終わりまでに更新されます。

3 年間で、開発者が何かを誤ってコミットし、サイトをロールバックしなければならなかったという問題が 1 件だけありました。

于 2010-04-13T11:03:49.067 に答える
0

部分的な修正として、Web サイトにアクセスしたときに rsync コマンドをトリガーする URL を作成して、いつ rsync を実行するかを制御できるようにします (明らかに、この URL でサーバー 1 をヒットし、この URL を公開しないようにする必要があります)。一般に)。さらに良いのは、curl を使用して、使用するアップロード スクリプトの最後で rsync URL を呼び出すことです。

于 2010-04-13T10:45:53.893 に答える