2

私は、さまざまな場所で実行する必要があるかなり大規模な Web ベースのシステムを開発しています (単独の Web 開発者)。残念ながら、一部のクライアントがダイヤルアップを使用しているため、これを行う必要があり、それらすべての中央サーバーはありません. 各クライアントは VPN の一部であり、ダイヤルアップ/ISDN のクライアントは Cisco ルーターからオンデマンドでダイヤルされます。すべてのクライアントに数秒でアクセスできます。

これらすべてのクライアントに一度に更新をリリースするにはどうすればよいか考えていました。自動化は、システムを展開する 23 以上の場所にあり、それぞれが非常に定期的に使用されるため、優れています。このため、展開時に「更新中」ページを表示して、更新が部分的に完了している間にクライアントがシステムにアクセスしないようにする必要があります。

何が最善の解決策になるかについての考え

編集: Phing との rsync を可能にするFileSyncTaskを見つけました。それを使うつもりです。

4

3 に答える 3

1

ここには、「マスター」コード リポジトリ (SVN、CVS、または GIT など) を維持する場合もあります。これは、「レポにコードのエディションを保持し、ロールバックを許可する」という標準ではありません...このレポには、現在の本番コード(のみ)が保持されます。更新の準備ができたら、作業中の更新されたコードをマスター リポジトリにチェックインします。すべてのサーバーは、定期的にレポをチェックして、変更されているかどうかを確認し、変更が見つかった場合は新しいコードをダウンロードします。そのチェック プロセスには、レポのダウンロードを開始する前にmaintenance.phpファイルを有効にし ( symcbeanが提案)、ダウンロードが完了したらファイルを削除することも含まれます。

于 2010-09-01T14:13:59.160 に答える
0

私が働いている会社では、JavaとPHPの両方である巨大なWebベースのシステムを使用しています。すべてのシステムに、開発環境と本番環境があります。この会社には200人以上の開発者がいるので、私たちが開発する製品のサイズを想像できると思います。

私たちが行ったことは、展開パッケージを作成するためにANTおよびRPMビルドアーカイブを使用することです。これは非常に簡単に実行できます。私はこれを自分でやったことはありませんが、調べる価値があるかもしれません。Linuxシステムを使用しているため、RPMパッケージを簡単にデプロイできるため、RPMパッケージ内のセットアップスクリプトにより、すべてが正しい場所に確実に届くようになります。また、より適切なバージョン処理とリリースプロセスが得られます。

これがお役に立てば幸いです。

Br、ポール

于 2010-08-18T08:58:43.560 に答える
0

これには 2 つの部分があります。最初に単純なものを扱いましょう。

「更新中」ページを表示する必要がある

トランザクションの整合性を維持しながらサイト全体を無効にし、更新中のサーバーからユーザーにメッセージを公開する必要がある場合、これを行う唯一の実用的な方法は、自動プリペンドを使用することです。これは事前に構成する必要があります (注: - これは、新しい PHP 構成のために Web サーバーを再起動することなく、.htaccess ファイルを使用して実行できると思います):

<?php

   if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php')) {
       include_once($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php');
       exit;
   }

次に、maintenance.php を Web ルートにドロップするだけで、予想されるファイルの代わりにそのファイルが表示されます。セッションが期限切れにならないように、おそらく session_start() と自動更新を含める必要があることに注意してください。上記を延長して、2 つ目の php ファイルを追加するなどして、POST がまだ処理される猶予期間を設けることもできます。

リモート サイトへの展開に関しては、コンテンツ ファイルのコピーに ssh 経由で rsync を使用することをお勧めします。これは、次の制御スクリプトを介して呼び出す必要があります。

  1. 上記のようにロックファイルを適用します
  2. rsync を実行してファイルをレプリケートする
  3. 任意のデータベース配置スクリプトを実行します
  4. ロックファイルを削除します

各サイトの設定が異なる場合は、インクルード パスの階層を介してサイト固有のものを管理するか、各サイトの完全なイメージをローカルに維持することをお勧めします。

C.

于 2010-08-18T09:08:50.460 に答える