Shadow の制約の 1 つに、バーチャルホストの未サポートがあります。テスト用に 1 台のサーバで複数サイトの代わりをさせているような環境では、Shadow をそのまま利用することができないかもしれません。
この問題を Shadow だけで解決するのは難しい様です。そこで、今回は、xip.io を使って、バーチャルホスト環境で Shadow を利用する方法をご紹介します。
xip.io の機能
xip.io は、37signals によって運営されている無償のサービスで、独自の DNS を使うことで、任意の IP アドレスを返せるようになっています。例えば、xip.io に 10.0.0.1.xip.io というドメイン名を送信すると、 10.0.0.1 がアクセスすべき IP アドレスとして返されます。
つまり、xip.io の前のサブドメインとして 4 つの数字を指定すると、それが、そのドメインの IP アドレスになるわけです。
IP アドレス用のサブドメインの前には、任意のサブドメインを指定できます。例えば、www.10.0.0.1.xip.io とか、test.10.0.0.1.xip.io といった指定ができます。 (どちらの場合も、返される IP アドレスは 10.0.0.1 です)
この機能は、複数のバーチャルホストの指定を可能にします。例えば、プロジェクト A では projectA.10.0.0.1.xip.io を使う、のような利用方法です。
バーチャルホストの設定
常に xip.io を使用するのは、指定が面倒ですし、間違えることもありそうです。必要なのは SHadow を使う時だけなので、バーチャルホストの定義に、別名として追加してしまった方が良さそうです。
具体的な設定方法は以下のような感じです。
- バーチャルホストの定義ファイルを開く (こんな感じの名前のファイルです apache2/extra/httpd-vhosts.conf)
- xip.io に振るための定義を追加する (下の例では、2 つのバーチャルホストにそれぞれ別のディレクトリを対応させています)
<VirtualHost *> DocumentRoot "/Users/foo/Sites/projectA" ServerName projectA ServerAlias projectA.*.xip.io </VirtualHost> <VirtualHost *> DocumentRoot "/Users/foo/Sites/projectX" ServerName projectX ServerAlias projectX.*.xip.io </VirtualHost>
- Web サーバを再起動する (OS X の Web 共有の場合は、チェックを一旦外してから再チェックすれば有効になるようです)
以上の設定ができたら、Shadow を使う時だけ、Chrome に http://projectX ではなく、http://projectX.10.0.0.1.xip.io を指定する、という使い分けができます。
その際、例で使用している 10.0.0.1 を、実際のテストで使うマシンの IP で置き換えることを忘れずに。(IP アドレスは、Shadow の Chrome 拡張機能のポップアップから確認できます)
コメントする