LoginSignup
2
7

More than 3 years have passed since last update.

Macのlocalhostで複数ドメインを管理する

Last updated at Posted at 2019-08-15

概要

MacのApacheで立てたローカルホストで、http://hoge.localhostのように任意のドメイン名で複数サイトを管理したい時の方法です。

経緯

自分の場合、複数サイトにまたがるCookieのテストをローカルでしたいときに、RFCの仕様でCookieはポート番号では分離されないのでドメイン名を分ける必要がありました。
http://localhost:8000http://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します。
コメントアウトされているので、先頭の#を外します。

/etc/apache2/httpd.conf
# 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>ディレクティブでディレクトリの認証設定を行ないます。

/private/etc/apache2/extra/httpd-vhosts.conf
# サイト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
/etc/hosts
127.0.0.1       project1.localhost
127.0.0.1       project2.localhost

4. Apacheの起動

Apacheを起動(または再起動)します。

$ sudo apachectl start

5. 確認

新しいウィンドウのブラウザで、http://project1.localhosthttp://project2.localhost を開きます。
それぞれのサイトが見られるようになれば完了です!

参考

最後に

今更思ったけどDockerで2つ環境作ればよかった気がする
間違いや不明な点があれば遠慮なくご指摘ください。
毎回検索とかでApatchがApacheって怒られるけど、Apatchってどうしても書いてしまう。。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7