久しぶりにMAMPを使ってバーチャルホストを設定するのに、すっかりやり方を忘れてとまどったので今後のために手順を記録しておきます。
MAMPはバージョン6.3です。
httpd.confの編集
バーチャルホストを有効にするためhttpd.confを編集します。
httpd.confがある場所は、/Applications/MAMP/conf/apache/httpd.conf
604行目あたりにVirtual hostsの項目があります。
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
行頭コメントアウトを外します。
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
以上でhttpd.confを上書き保存します。
httpd-vhosts.confを編集
次にバーチャルホストの設定ファイルhttpd-vhosts.confを編集します。
httpd-vhosts.confの場所:/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
ドメイン名でバーチャルホストにアクセスする方法
httpd-vhosts.confには、あらかじめサンプルが二つ記述されています。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>から</VirtualHost>までが一括り。
基本的にDocumentRoot
とServerName
があれば大丈夫です。ログを分けたいときはErrorLog、CustomLogも指定するといいのでしょう。
<VirtualHost *:80>
DocumentRoot "/Users/myhome/Sites/dummy-host"
ServerName dummy-host.local
</VirtualHost>
DocumentRootはウェブデータがある場所、ServerNameに記述した名前でブラウザからアクセスします。
hostsファイル編集
ドメイン名でローカルファイルにアクセスするにはもうひと作業。hostsファイルを編集します。
hostsファイルの場所(Macの場合):/etc/hosts
ターミナルなどでhostsを開き、
#MAMP virtual host
127.0.0.1 dummy-host.local
を追記します。(1行目はコメントのため不要)
以上です。
ブラウザからdummy-host.localをアクセスして表示されれば完了です。
ポートを変えてバーチャルホストにアクセスする方法
ドメインではなくポートを変えてバーチャルホストを設定することもできます。
httpd-vhosts.confに以下のように追記します。
Listen 8001
<VirtualHost *:8001>
DocumentRoot "/Users/myhome/Sites/dummy-host"
<Directory "/Users/myhome/Sites/dummy-host">
AllowOverride All
</Directory>
</VirtualHost>
Listen 8001とVirtualHost *:8001は同じポート番号にします。
DocumentRootとDirectory以下も同じ場所を指定
これでhttp://localhost:8001にアクセスして目的のデータが表示されればOKです。
8002,8003〜と増やすことが可能です。
hostsを編集したりしなくて済むのでこちらの方が手軽かな。
うまくいかない時に疑うこと:
設定しても表示されない時に疑うこと
- confファイルを編集したらMAMPを再起動する
- httpdポートは80
- セキュリティソフトのファイヤーウォール(一旦停止して確認してみる)
私の場合ESETのファイヤーウォールが原因でブロックされることがよくあります。