備忘録。
何が起きたのか
1. Homebrew で apache をインストール。
$ brew install httpd
ちなみに MacOS 標準搭載の apache 使わなかった理由はこちら。
標準搭載の apache が走ってるかの確認と stop 方法はこちら。
2. とりあえず httpd.conf
の Port を 80 に変える。
# Listen 8080
Listen 80
localhost:80 でちゃんと It Works! が表示されたことを確認。
3. [問題発生] VirtualHost を設定
今回 1 つの Web サーバーで 2 つのサブドメインが異なるウェブサイト (sample1.example.com と sample2.example.com) をホストしたかったので、VirtualHost を立てることに。
VirtualHost の設定は主に 3 ステップ。
- 各ウェブサイトごとの DocumentRoot を新たに作成。
- 各 DocumentRoot の中に表示したい HTML ファイルを格納。
- VirtualHost の設定ファイルをいじいじ。
というわけでこちらの記事を参考に VirtualHost を設定することに。
VirtualHost の設定には、VirtualHost 設定用の .conf
ファイルが必要らしく、/opt/homebrew/etc/httpd/conf.d
というディレクトリ配下に格納するらしい。
のですが。。。
VirtualHost 設定に必要な conf.d
のディレクトリが見つからない!!!!!!(泣)
というか消してもないんだけど。。。 brew install httpd
しただけなのに。。。
$ cd /opt/homebrew/etc/httpd && ls
> extra httpd.conf magic mime.types original
こんな感じで、conf っぽいディレクトリはない。。。。
しかもグーグル先生に "conf.d 見当たらない" ググっても出てこない。。
しょうがないので Gemini 先生に聞くことに。
私: "In my /opt/homebrew/etc/httpd directory, I don't see conf.d directory. what is wrong?"
Gemini 先生: "It's unusual not to see a conf.d directory within your /opt/homebrew/etc/httpd directory, as this is the standard location for additional configuration files in Apache installations managed by Homebrew."
そんなあ!!!!
とりま私がなんかやらかしたのかなあとか思い Gemini 先生が提案してくれた通り brew reinstall httpd
したけどだめ。
httpd.conf をチェックしてみる
Gemini 先生:
"Open your main Apache configuration file (/opt/homebrew/etc/httpd/httpd.conf) and search for a line like IncludeOptional conf.d/*.conf. This line instructs Apache to include configuration files from the conf.d directory. If this line is missing or commented out, uncomment it or add it if necessary. If the line points to a different directory, that's where your additional configuration files might be located."
と言われたので確認するも、そもそも cmd+F で "conf.d" とやってもヒットしない。なんで????
マニュアルで作ることも考えたけど、後でめんどくさい問題になりそうなのでなんとかデフォルトの設定で VirtualHost 作れないか模索した。
解決策
httpd.conf
ファイルとにらめっこしたところ、こんな記載があった。
# Virtual hosts
# Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
ん!!!!なんかそれっぽい。
ぐぐってみたところ、どうやら通常 /httpd/conf.d に格納しているバーチャルホストの設定ファイルが、なぜか homebrew 版だとデフォルトで /extra/ パスに作成されてるっぽい。
(参考にした記事はこちら)
httpd-vhosts.conf
を開くと、デフォルトでこんな感じで記載があった。
# <VirtualHost *:8080>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot "/opt/homebrew/opt/httpd/docs/dummy-host.example.com"
# ServerName dummy-host.example.com
# ServerAlias www.dummy-host.example.com
# ErrorLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-error_log"
# CustomLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-access_log" common
# </VirtualHost>
# <VirtualHost *:8080>
# ServerAdmin webmaster@dummy-host2.example.com
# DocumentRoot "/opt/homebrew/opt/httpd/docs/dummy-host2.example.com"
# ServerName dummy-host2.example.com
# ErrorLog "/opt/homebrew/var/log/httpd/dummy-host2.example.com-error_log"
# CustomLog "/opt/homebrew/var/log/httpd/dummy-host2.example.com-access_log" common
# </VirtualHost>
ここいじったら行けそう!
結論
homebrew で apache をインストールした場合、VirtualHost の設定はhttpd-vhosts.conf
にて行い、
その設定ファイルを同期させるために Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
の一文を httpd.conf
にいれる必要があるということがわかりました!
実践
というわけで、早速 httpd.conf
のこちらの行をコメントアウト。
# Virtual hosts
Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
んで、httpd-vhosts.conf
の設定を変更。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/opt/homebrew/var/www/sample_host"
ServerName sample1.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/opt/homebrew/var/www/sample_host2"
ServerName sample2.example.com
</VirtualHost>
そして忘れちゃいけない、localhost で試すので /private/etc/hosts
を編集。
127.0.0.1 sample1.example.com
127.0.0.1 sample2.example.com
すると。。。
やったあ!!!!
めっちゃググっても出てこない情報だったので、どなたかの役に立てば。
ご指摘あればいつでもお待ちしております!!!!