概要
MacのApacheで立てたローカルホストで、http://hoge.localhost
のように任意のドメイン名で複数サイトを管理したい時の方法です。
経緯
自分の場合、複数サイトにまたがるCookieのテストをローカルでしたいときに、RFCの仕様でCookieはポート番号では分離されないのでドメイン名を分ける必要がありました。
http://localhost:8000
やhttp://localhost/hoge
などポートやパスでサイトを指定することはありますが、Apacheでドメイン指定する方法をやったことがなかったので忘備録です。
環境
- macOS Mojave 10.14.5
- Apache 2.4.34
※ Apacheバージョンによって設定の記述方法が結構違うので注意
手順
1. httpd.confでバーチャルホスト設定ファイルの読み込み
Apacheの設定ファイルであるhttpd.confを開きます。
$ sudo vim /etc/apache2/httpd.conf
httpd.confの中にそのままバーチャルホストの設定を記述することもできますが、バーチャルホスト用の設定ファイルをIncludeします。
コメントアウトされているので、先頭の#を外します。
# Supplemental configuration
#
# The configuration files in the /private/etc/apache2/extra/ directory can be
# included to add extra features or to modify the default configuration of
# the server, or you may simply copy their contents here and change as
# necessary.
(省略)
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
2. httpd-vhosts.confでバーチャルホストの設定
バーチャルホスト用の設定ファイルを開きます。
$ sudo vim /private/etc/apache2/extra/httpd-vhosts.conf
ファイルを開くと説明とダミーの例が書かれており、末尾に追記していきます。
<VirtualHost>ディレクティブでバーチャルホストの設定、<Directory>ディレクティブでディレクトリの認証設定を行ないます。
# サイト1のバーチャルホストの設定
<VirtualHost *:80>
DocumentRoot /path/to/your/project/directory1
ServerName project1.localhost
# サイト1のディレクトリの設定
<Directory "/path/to/your/project/directory1">
Options FollowSymlinks Includes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# サイト2のバーチャルホストの設定
<VirtualHost *:80>
DocumentRoot /path/to/your/project/directory2
ServerName project2.localhost
# サイト2のディレクトリの設定
<Directory "/path/to/your/project/directory2">
Options FollowSymlinks Includes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3. HostsファイルでDNS設定
Hostsファイルを開き、IPアドレスとホスト名の対応付けを追記します。
$ sudo vim /etc/hosts
127.0.0.1 project1.localhost
127.0.0.1 project2.localhost
4. Apacheの起動
Apacheを起動(または再起動)します。
$ sudo apachectl start
5. 確認
新しいウィンドウのブラウザで、http://project1.localhost と http://project2.localhost を開きます。
それぞれのサイトが見られるようになれば完了です!
参考
- localhostでバーチャルホストを切る - toytools log
- OSXのlocalhostに複数サブドメイン « cross HVN
- Apache2.4で、アクセス制限の記述方法が変更されていた - Qiita
最後に
今更思ったけどDockerで2つ環境作ればよかった気がする
間違いや不明な点があれば遠慮なくご指摘ください。
毎回検索とかでApatchがApacheって怒られるけど、Apatchってどうしても書いてしまう。。