MacportsのApacheでバーチャルホストを設定

今回は、MacportsでインストールしたApacheでバーチャルホストの設定をしてみます。バーチャルホスト(Virtual Host)とは、1つのWebサーバーで複数のWebサイトを運用する技術です。つまり、バーチャルホストを使うと1台のMacで複数のテストサイトを構築することが出来るようになる上、それぞれのサイトでドキュメントルートを持つことが出来るので、とても便利です。

バーチャルホストの設定をする前に、基本的なApacheの設定が終わっている必要があります。Apacheの基本的な設定に関しましては、「httpd.confでMacportsのApacheを設定」をご覧下さい。また、デフォルトだと/opt/local/apache2/htdocsは、Finder上での書き込みの権限がないので、ターミナルで下記コマンドを実行し、パーミッションを777に変更します。

ターミナル

sudo chmod 777 /opt/local/apache2/htdocs

パーミッションの変更が終わったら、/opt/local/apache2/htdocsに新規で追加するサイトのドキュメントルートにしたいディレクトリ(フォルダ)を作成しておきます。

次にターミナルで下記コマンドを実行し、/opt/local/apache2/conf/httpd.confと/opt/local/apache2/conf/extra/httpd-vhosts.confのパーミッションを666に変更し、書き込み可にします。

ターミナル

sudo chmod 666 /opt/local/apache2/conf/httpd.conf
sudo chmod 666 /opt/local/apache2/conf/extra/httpd-vhosts.conf

パーミッションを変更したら、まず/opt/local/apache2/conf/extra/httpd-vhosts.confをエディタで開き、先頭に#のついたコメント行以外をすべて削除し、以下の形式で追記します。ポート番号に関しては、他と重複しないようにする必要があります。私は、8080番あたりの空き番号を使っています。

/opt/local/apache2/conf/extra/httpd-vhosts.conf

Listen ポート番号
NameVirtualHost ドメイン名またはIPアドレス:ポート番号
<VirtualHost ドメイン名またはIPアドレス:ポート番号>
    DocumentRoot /opt/local/apache2/htdocs/ドキュメントルートにしたいディレクトリ名
    ServerName ドメイン名またはIPアドレス:ポート番号
</VirtualHost>

次に/opt/local/apache2/conf/httpd.confをエディタで開き、下記のように編集します。行数に関しては、環境やバージョンによっても変わってきますので、目安と考えて下さい。

/opt/local/apache2/conf/httpd.conf

#462行目
#Include conf/extra/httpd-vhosts.conf
#↓
Include conf/extra/httpd-vhosts.conf

編集が終了したら、念のため文法チェックをしておきましょう。ターミナルで下記コマンドを実行します。

ターミナル

sudo /opt/local/apache2/bin/apachectl configtest

もし、エラーや警告が表示された場合は、表示された内容をヒントに修正しましょう。Syntax OKと表示されれば問題ありません。httpd.confとhttpd-vhosts.confのパーミッションを644に戻します。

ターミナル

sudo chmod 644 /opt/local/apache2/conf/httpd.conf
sudo chmod 644 /opt/local/apache2/conf/extra/httpd-vhosts.conf

最後にApacheを再起動します。ターミナルで下記コマンドを実行します。

ターミナル

sudo /opt/local/apache2/bin/apachectl restart

これでバーチャルホストの設定は完了です。Webブラウザでhttp://自分のIPアドレスまたはドメイン名:ポート番号/のURLにアクセスすると、設定したドキュメントルートのファイルが表示されます。

ついでにデスクトップにhtdocsのエイリアスを作っておきましょう。デフォルトでは、/opt/local/apache2に書き込みの権限がないので、エイリアスを作ることが出来ません。ターミナルで下記コマンドを実行し、/opt/local/apache2のパーミッションを一時的に777に変更します。

ターミナル

sudo chmod 777 /opt/local/apache2

Finder上でhtdocsのエイリアスを作成して、デスクトップに移動させてから、/opt/local/apache2のパーミッションを755に戻します。

ターミナル

sudo chmod 755 /opt/local/apache2

以上で、Macが強力なテストサーバーになりました。私は、VMware FusionでWindowsをインストールしているのですが、もちろんFusionのWindowsからもMacのApacheにアクセスできます。つまり、1台のMacでMacとWindowsの全ブラウザで動作確認が出来てしまうので、とても重宝しています。