2015年1月2日金曜日

MAMP ver3 バーチャルホスト設定で複数ホスト名でアクセスを可能にする

Macでバーチャルホストを運用する場合はMAMPを選択する方が多いですね。
私もローカルでの作業はMAMPで行っています。

MAMPは単一サイトなら管理画面から簡単にプレビューできるようになっています。


※設定>Webサーバ>ドキュメントルート

この設定を好きなディレクトリに変更することで http://localhost:8888/ で表示するディレクトリを切り替えています。


この機能があるお陰で手軽にローカルホストの参照するディレクトリを切り替えられますが、その反面同時に複数の異なるサイトをローカルでプレビューしたい場合は切り替えが必要なので非常に煩わしいものです。

MAMPにバンドルされているApacheのバーチャルホストでアクセスできるようにできたら便利です。


【お題】複数のホスト名をディレクトリに割り当てて同時にアクセスできる環境を構築する

【実装条件】
  • 検証OS MacOSX 10.9.5 Yosemite
  • Mac向けのローカル仮想サーバー環境、MAMP(バージョン 3.0.7.3)を使用
  • MAMPにバンドルされたApacheを使用(MacのデフォルトのApacheは不使用)
  • Apacheのバーチャルホストで複数ホストを定義
  • ファイルの変更はエディタかターミナルを使用して作業

【プレビュー例】
検索窓にホスト名を入れて表示できるようにする。


【手順】
  1. httpd.conf Listenポートを8888→80に変更 & vhostsを有効化
  2. http-vhosts.confを設定
  3. hosts書き換え
  4. MAMPのポート変更


1. http.conf Listenポートを8888→80に変更

通常ブラウザでHTTPアクセスをする場合、ウェブサーバー(httpd)は80番ポートを使用しますが、MAMPでは8888ポートに設定されています。MAMPの場合はMacOSXにインストールされることを前提としているので、MacOSX標準バンドルのApacheで既に割り当てられている80番ポートと被らないように8888というポート番号が設定されています。

※ここでポート書き換えを行った理由は自分でも明確な答えが出ていませんが、ポートが8888のデフォルトのままではバーチャルホスト設定ファイルにて80番でListenしようと設定しても動作しなかったためです。

【編集するファイル】
/Applications/MAMP/conf/apache/httpd.conf

・48行目あたり
Listen 8888
->
#Listen 8888
Listen 80 
・182行目あたり
ServerName localhost:8888
->
#ServerName localhost:8888
ServerName localhost:80
・573行目あたり(バーチャルホスト設定ファイルを読み込む)
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf 
->
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

上記のように変更していく。

2. http-vhosts.confを設定

バーチャルホスト設定ファイルを編集します。

【編集するファイル】
/applications/mamp/conf/apache/extra/httpd-vhosts.conf
末尾に追加していく。
<VirtualHost *:80>
    DocumentRoot "/Users/YSK/Desktop/vhosts/test1"
    ServerName test1
    <Directory "/Users/YSK/Desktop/vhosts/test1">
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/YSK/Desktop/vhosts/test2"
    ServerName test2
</VirtualHost>
ここでは、ドキュメントルートの場所を
DocumentRoot "〜〜"
で指定しています。
ここではデスクトップ以下に vhosts というディレクトリを作成してそこにバーチャルホスト名となる test1, test2 ディレクトリを管理することにしました。

※test1の設定では、Directoryディレクティブ内に AllowOverride Allを指定することで該当ディレクトリ内で .htaccess によるApacheの設定変更も可能にしています

3. hosts書き換え

【hosts書き換え前の準備】
Finderのメニューバーにて
移動 -> フォルダへ移動 -> /private/etc/hosts
-> hostsに対し右クリック -> 情報を見る
-> 共有とアクセス権 -> 右下の鍵マークをクリックして管理者パスワードを入力して自分のユーザーに対して書き込み権限を追加

【hosts書き換え】
ターミナルでの作業の場合(ターミナルでの編集を強く推奨)
$ vi /private/etc/hosts
127.0.0.1       localhost test1 test2
localhost の後ろに半角スペースで区切って必要なホスト名を追記します。


4. MAMPのポート変更

念のためMAMP側のローカルホストのポートも変更しておきます。
設定 -> ポートタブ -> Apache 8888 -> 80に変更

すべてが完了したらMAMPでApacheを再起動します。


以上でアドレスバーにホスト名を入れると該当箇所に配置したファイルが表示されます。