MTでステージングサーバーと公開サーバーを分ける際の基本

Webサイトを製作する際に、テスト用のサーバー(ステージングサーバー)でテストを行って、完成したサイトを本番用の公開サーバーに転送することは、よくあることです。
Movable Typeでは、比較的簡単に、このような運用方法を取ることができます。
その基本的な方法を紹介します。

1.URLの置換

Movable TypeのURL関係のテンプレートタグでは、通常はURLにドメイン名の部分が含まれます。
ところが、ステージングサーバーと公開サーバーは、URLが異なります。
そのため、ステージングサーバー用の設定でファイルを出力すると、公開サーバーとはURLが違うので、公開サーバーにファイルを転送しても正しく動作しません。

そこで、ステージングサーバーと公開サーバーのディレクトリ構造を一致させた上で、URLに「http://ドメイン名」の部分を含まないようにすることが考えられます。
それには、Movable Typeに含まれる「replace」というグローバルモディファイアを使います。

まず、ステージングサーバーのMovable Typeのウェブサイト(またはブログ)で、その環境でページを表示できるように、サイトURL(またはブログURL)を設定し、動作を一通り確認します。
その後に、インデックス/アーカイブ/システムの各テンプレートの先頭に、以下のタグを追加します。

<mt:Unless name="hogehoge" replace="http://ステージングサーバーのドメイン名/","/">

例えば、ステージングサーバーのページのアドレスが「http://www.foo.com/~」になるなら、各テンプレートの先頭に以下のようにタグを追加します。

<mt:Unless name="hogehoge" replace="http://www.foo.com/","/">

また、各テンプレートの最後には以下のタグを追加します。

</mt:Unless>

テンプレートの先頭の時点では、「hogehoge」という変数は宣言されていないので、MTUnlessタグの条件が成立し、ブロック内部(=元のテンプレート全体)が再構築されます。
そして、replaceモディファイアによって、MTUnlessタグのブロック内部(=元のテンプレート全体)に含まれる「http://ステージングサーバーのドメイン名/」が、「/」に置換されます。

2.ローカル環境で公開環境のURLをエミュレートする

XAMPP等のローカル環境でテストして、できたサイトを公開環境に転送する場合、ローカル環境で公開環境のURLをエミュレートする方法もあります。
1.の作業(URLの置換)よりも、こちらの方が作業が楽です。

例えばXAMPPの場合、「http://localhost/・・・」のアドレスにアクセスすると、XAMPP上に作ったテストサイトを表示することができます。
ところが、設定を上手く行えば、「http://公開サーバーのアドレス/・・・」にアクセスしたときに、自分のマシンでのみ、XAMPP上のテストサイトが表示されるようにすることができます。

それには、「hosts」というファイルを書き換えます。
hostsファイルは、ホスト名(www.○○○.com等)とIPアドレスの関係を記述したファイルです。
通常は、DNSを使ってホスト名をIPアドレスへ変換しますが、hostsファイルにホスト名とIPアドレスの対応が書いてあると、そちらが優先されます。

この仕組みを使って、公開サーバーのホスト名から、自分のローカル環境のIPアドレスに変換するようにします。
こうすれば、自分のマシンでのみ、公開サーバーのアドレスにアクセスしたときに、XAMPP等のページが表示されます。

Windowsの場合だと、Cドライブ→「windows」フォルダ→「system32」フォルダ→「drivers」フォルダ→「etc」フォルダに、hostsファイルがあります。
管理者権限でメモ帳等を起動してhostsファイルを編集できる状態にし、ファイルの最後に以下を追加します。

127.0.0.1 公開サーバーのホスト名

例えば、公開サーバーのホスト名が「www.foo.com」なら、hostsファイルに以下を追加します。

127.0.0.1 www.foo.com

また、Mac OS X 10.6だと、/etc/hostsファイルを編集します。
ファイルに追加する内容は、Windowsの場合と同じです。

この後、Movable Typeのウェブサイト(またはブログ)でサイトURL(またはブログURL)を設定しなおし、公開サーバーのアドレスでページが出力されるようにして、テストを行います。

なお、テストが終わって公開サーバーにファイルを転送したら、hostsファイルに追加した行を削除して、通常通りに公開サーバーにアクセスする状態に戻します。