Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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ってどうしても書いてしまう。。

mgmgmogumi
Web系/育児エンジニア/Laravel/Node/Go/AWS/Terraform/GAS/AR
https://speakerdeck.com/mgmgmogumi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした