回答:
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の設定で指す場所を変更するだけです... 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を再起動する必要がありますが、これは通常、非常に高速な処理です。
IISでは、更新を含む2番目の仮想ディレクトリを設定できます。
次に、すべての要求をリダイレクトするか、2番目のサイトのバインディングを目的のホスト名に再マッピングします
IIS 7でのHTTPリダイレクト:http : //technet.microsoft.com/en-us/library/cc732930(WS.10).aspx
私が提案すること: