ユーザーに待たせずにサイトを更新するにはどうすればよいですか?


8

ダウンタイムはユーザーにとって不便であり、現在、サイトのエンジンがアップグレードされている間はいつでも待たなければなりません。さらに、既製のスクリプトを使用すると、設定の変更が意図したとおりに機能しない可能性があります(ステージングサイトでテストした場合でも)。

サーバー上にサイトの複数のバージョンを保持し、ダウンタイムを発生させることなく(htaccessファイルなどで)バージョンを切り替えるにはどうすればよいですか?

回答:


6

Linux / BSDマシンを使用していますか?その場合、シンボリックリンクを使用してこの目標を簡単に達成できます。

ここにサイトのバージョン1を作成します。

/var/www/www.example.org.v1

このディレクトリを指すシンボリックリンクを作成する

cd /var/www
ln -s www.example.com.v1 www.example.com

これによりls -la、次のようなディレクトリリスト()が表示されます。

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

/var/www/www.example.comドキュメントルートとして使用するようにWebサーバーを設定します。これを変更する必要はありません。すべての再ポイントはファイルシステムレベルで行われます。

これで、サイトのバージョン2を入れ替える場合は、新しいバージョンを次の場所に配置するだけです。

/var/www/www.example.org.v2

そして、このバージョンを指すようにシンボリックリンクを更新します。

ln -sfh www.example.com.v2 www.example.com

これにより、ディレクトリの出力は次のようになります。

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

ご覧のとおり、www.example.comシンボリックリンクは、サイトのバージョン2を指しています。これはアトミック操作であり、使用できないファイルに関連するダウンタイムは発生しません。

もちろん、データベース構造の更新、静的リソースの利用(および正しいバージョンへのリンク)などを確認するにはかなりの複雑さが必要ですが、少なくともこれにより、適切なすべてのリソースが新しいサイトがすぐに利用可能です。

Windows VistaおよびServer 2008では、mklinkコマンドを使用したシンボリックリンクもサポートされていますが、直接の経験はありません。


7

Apacheで仮想ホストを使用して、2つの異なるURLに2つのバージョンのコードを含めることができます。一般的に使用される例は次のとおりです。

test.example.com-> /var/www/version1.2

www.example.com-> /var/www/version1.1

どちらも同じサーバー上にありますが、おそらく1つだけが世界中からアクセスできます。test.example.comが機能していることを確認したら、Apacheの設定で指す場所を変更するだけです... presto。新しいサイト、新しいコード。データベーススキーマの変更がなかったと仮定すると、これは機能するはずです。したがって、変更を加えた後は次のようになります。

test.example.com-> / var / www / newtestversion

www.example.com-> /var/www/version1.2

仮想ホストのapache configディレクティブの例を次に示します。

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

これを行う方法の詳細については、Apache仮想ホストのドキュメントを参照してください

IISでこれを行う方法はわかりませんが、方法もあると思います。

何か問題が発生した場合は、仮想ホストを元に戻し、古いサイトが復旧します...問題ありません。これらの変更を有効にするには、Apacheを再起動する必要がありますが、これは通常、非常に高速な処理です。



0

私が提案すること:

  • 変更をアップロードする前に、開発サーバーでローカルにテストします。テストサーバーで動作することが合理的に確認されるまで、ライブサーバーで変更を行わないでください。
  • 交通量が最も少ないときにメンテナンスを実行します。ほとんどのウェブサイトでは、週末の早朝になります。週末を選択できない場合は、その週のトラフィックが最も少ない時間帯に行ってください。
  • 事前に定期メンテナンスについてユーザーに警告します。

複数のバージョンを設定し、それらをシームレスに切り替える方法はありますか?
ゼラチン

これまでに行ったことはありませんが、複数サーバーまたは仮想サーバーのセットアップでそれを行うことができると思います。それがあなたが探しているものである場合、それはServerFaultのより良い質問に終わるかもしれません。
Virtuosi Media

@Simon:はい、ライブサーバーと一致するようにApache、PHPとMySQLの異なるバージョンのための様々なモジュールをWampServerを使用してインストール- wampserver.com/en
DisgruntledGoat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.