dev/stage/testing環境のサイト更新をプロダクションにプッシュするベストプラクティスは何ですか?


8

今、私は基本的なLAMP構成を実行する開発サーバーを持っています。プロダクションサーバーはslicehostです。しかし、私は、コード/ dbのインスタンスをステージdev> stage>にプッシュする最良の方法が何であるか疑問に思っています。それはあなたがステージをどのように作り出すかと関係がありますか?

サイトをダウンさせることなくどうやってやりますか?ロードバランシングを行わない場合でも可能ですか?

これは幾分一般的なことですが、私はちょうど正しい方向を指摘しています。

1

私は、環境ごとにリリースをパッケージ化して準備するスクリプトを用意している、ある種の自動化された「ビルド」スタイルの環境を調べます。

実際のPHPビルディングはないと認識していますが、設定や設定の問題を変更し、実装する準備が整ったフォルダにすべてを保存するように自動化を設定することができます。

ロードバランシング/ウェブファームスタイルの環境がなくても、完全にダウンタイムをなくすことはできません。しかし、私の本でそれを減らす最も簡単な方法は、一貫したコード準備プロセスを確立し、プロセスを複数回テストすることです。オートメーションはそれを助けるだろう。

実際にファイルをコピーする行為については、よくFTPなどのようなものを使用すること以上のことはよく分かりません。たぶん、読み込みメッセージを表示しています。これもすべてスクリプト化することができます。

最後に、PHPがビルドされていないので、現在のものと変更したものの違いを追跡し、それらのファイルだけを移動することができます。時々それは不必要な複雑さを追加することがあります。


2

私は更新中に私のIPだけがメインサイトを見ることができる "メンテナンスモード"のjiffyを作成するために.htaccessを使用します。誰もが短いメッセージを見るようになるので、すべてが数回のティックでオンラインに戻ってくるはずです。

それから私:

  1. ファイル
  2. 実行自動テストをアップロードし、
  3. 恐ろしく間違って何もないことを確認するために、できるだけ簡単に見てオーバー与える/任意のDBが
  4. SVNのエクスポートを編集してください
  5. それは与えられていますが、あなたは膿前にローカルでできるだけ多くすることができますように、物事をテストする必要があります.htaccessの

を戻しますライブサーバーにヒンジ。生きている時間の更新のためのテストエリアとして機能するために、2人の生きているサーバー(実働サーバー上の潜在的な名前のサブドメインのようなもの)を使う人もいます。これにより、メインサイトの実際のダウンタイムを短縮できます。

更新中にサイトを使用しようとするユーザーには致命的なエラーメッセージが表示されるため、事前にシャットダウンしないで(特にASPNETというバイナリを使用している場合は)ライブサーバーに更新をプッシュしないことが重要です。ロックされたファイルを取得する可能性があります。

  0

さらに、.htaccess-swap-out、DB編集、svnチェックアウト/ファイルアップロード、自動化ユニットテストをすべてスクリプト化して、アップデートがずっと迅速に行われるようにします。 23 9月. 082008-09-23 19:14:11


1

これはいい考えですが、ソース管理システムの自動チェックアウトはどうでしょうか?多分開発のいくつかのブランチを持っているかもしれません - 流出のテスト、メンテナンス/小規模な改善のための開発、生産コードの生産。開発が安定しているときはいつでも、それをプロダクションブランチにマージし、プロダクションマシンが定期的にチェックアウトするようにします。


0

ファイルをすべてのWebサーバーにプッシュする限り、良い古いrobocopyがそのトリックを行うことがわかります。私のdev/stage/prod環境はすべて同じです。サイトがすぐに戻ることをユーザーに指示する一時的なページを作成するだけです。


0

ここでは、変更されたファイルをタールアップし、クラスタ内の各サーバーにそれらをscpし、そこにあるときにuntarする構成ファイルを持つ一連のシェルスクリプトを使用します。このメソッドには欠点があります。各サーバーメンバーにsvnクライアントがインストールされているメソッドを検討しています。新しいリリースにタグを付けると、運用サーバーの作業コピーをその新しいタグに切り替えます。もちろん、私たちは今日メンテナンス時にリリースしていますので、ユーザーには特別なことをする必要はありません(メンテナンスページが表示されます)。


0

私はサイトまたはプリセットURLのリストにアクセスできるようにするための選択肢があります。すべてのユーザーをリダイレクトできます(適切なhttpコードでAPIトラフィックを停止できます)。

これらのURLは、何が起こっているのかをユーザーに説明する静的なHTMLファイルへのリンクです。

これを有効にすると、すべての要求がHTMLファイルに送信される前にデータベースまたはファイルへの要求がないため、更新が展開される '明確な'領域が得られます。


0

svnとftpのタスクを持つapache antは私のための請求書を握っています。 ANTを使ってデータベースを構築する人もいますが、私はそれらを個人的に見たいと思う傾向があります。すべての場所にftp用のきれいでプッシュビルドができたら、それがどれほど簡単かに驚くでしょう。