My開発メモ

Apacheでバーチャルホストを立ち上げる(mac/Monterey)

macに最初からインストールされている Apache でバーチャルホストを立ち上げる。

(注) 文中 USERNAME は、macOSでのユーザーネーム。

(1) /etc/apache2/extra/httpd-vhosts.conf

...(略)...

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Library/WebServer/Documents"
    ServerName localhost
    ErrorLog "/private/var/log/apache2/localhost-error_log"
    CustomLog "/private/var/log/apache2/localhost-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@mysite
    DocumentRoot "/Users/USERNAME/Sites/Documents"
    ServerName mysite
    ErrorLog "/private/var/log/apache2/mysite-error_log"
    CustomLog "/private/var/log/apache2/mysite-access_log" common
</VirtualHost>

(2) /etc/apache2/httpd.conf

以下の行のコメントを外して有効化する。

184 LoadModule userdir_module libexec/apache2/mod_userdir.so
521 Include /private/etc/apache2/extra/httpd-userdir.conf
527 Include /private/etc/apache2/extra/httpd-vhosts.conf

(3) /etc/apache2/extra/httpd-userdir.conf

以下の行のコメントを外して有効化する。

17 Include /private/etc/apache2/users/*.conf

(4) /etc/apache2/users/USERNAME.conf

以下の内容でファイルを作成する。

USERNAME.conf

<Directory "/Users/USERNAME/Sites">
  Options Indexes MultiViews
  AllowOverride All
  Require all granted
</Directory>

(5) /etc/hosts

http://mysite でアクセスできるようにする。

127.0.0.1       localhost mysite
255.255.255.255 broadcasthost
::1             localhost

apacheの再起動

% sudo apachectl restart

なぜかアクセスできない

現在のところ、

http://localhost/

では、htmlは表示されるが、

http://mysite/

では、403 Forbidden となる。

/var/log/apache2/my-site-error_log

[Sat Jun 25 11:12:05.846972 2022] [core:error] [pid 4816] (13)Permission denied: [client ::1:49912] AH00035: access to / denied (filesystem path '/Users/USERNAME/Sites') because search permissions are missing on a component of the path

原因がわかった

% ls -lde / /Users/ /Users/USERNAME/ /Users/USERNAME/Sites

とすると、以下のように出力された。

drwxr-xr-x  20 root             wheel   640  5 10 06:30 /
drwxr-xr-x   5 root             admin   160  6 24 06:48 /Users/
drwxr-x---+ 34 USERNAME  staff  1088  6 25 18:39 /Users/USERNAME/
 0: group:everyone deny delete
drwxr-xr-x   4 USERNAME  staff   128  6 25 10:55 /Users/USERNAME/Sites
ユーザーディレクトリに other に読み取り権限と実行権限がない!

macOS は、ユーザーフォルダを作成するのに、初期値として chmod 750 とするのか〜。

% chmod 751 USERNAME

other に実行権限だけをつけた。これで、うまくいった。

設定ファイルのチェック

% apachectl configtest

カテゴリー: Apache, MacOS, memo

タグ: Apache, virtualhost

カウント: 213