ダウンタイムはユーザーにとって不便であり、現在はサイトのエンジンがアップグレードされるたびに待機する必要があります。さらに、市販のスクリプトを使用する場合、設定の変更が意図したとおりに機能しないというリスクがあります(ステージングサイトでテストされた場合でも)。
サーバー上でサイトの複数のバージョンを保持し、ダウンタイムを発生させずにそれらを切り替えるにはどうすればよいですか(たとえば、htaccessファイルを使用)。
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
コマンドを使用したシンボリックリンクもサポートしていますが、直接的な経験はありません。
Apacheの仮想ホストを使用して、2つの異なるURLで2つのバージョンのコードを作成できます。一般的に使用される例は次のとおりです。
test.example.com-> /var/www/version1.2
www.example.com-> /var/www/version1.1
どちらも同じサーバー上にありますが、おそらく世界でアクセスできるのは1つだけです。 test.example.comが機能していることが確認できたら、Apache configでそれらが指す場所を変更するだけで済みます。新しいサイト、新しいコード。データベーススキーマの変更がなかったと仮定すると、これは機能するはずです。そのため、変更後は次のようになります。
test.example.com->/var/www/newtestversion
www.example.com-> /var/www/version1.2
次に、仮想ホストのApache構成ディレクティブの例を示します。
<VirtualHost *:80>
ServerAdmin gabe@localhost
DocumentRoot "/var/www/version1.1"
ServerName test.example.com
</VirtualHost>
これを行う方法の詳細については、 Apache virtual Host documentation を参照してください
IISでこれを行う方法はわかりませんが、方法もあると思います。
何か問題が発生した場合は、仮想ホストを元のホストに戻すと、古いサイトが元に戻ります...問題ありません。これらの変更を有効にするには、Apacheを再起動する必要がありますが、それは一般的に非常に高速です。
IISでは、更新で2つ目の仮想ディレクトリをセットアップできます。
次に、すべてのリクエストをリダイレクトするか、2番目のサイトのバインディングを目的のホスト名に再マッピングします
IIS 7のHTTPリダイレクト: http://technet.Microsoft.com/en-us/library/cc732930(WS.10).aspx
私が提案するもの: