macOS Mojave の Apache で Sites ディレクトリを使って localhost を特定アカウントで利用する方法


概要

macOS Mojave (10.14) にアップデートすると、それまで設定していたApacheの設定が吹き飛んだ、かつ、下記の参考文献通り設定ファイルを復活させても期待通りに動作しなかった。なお、それまで設定していたのは、ユーザディレクトリ配下の Sites ディレクトリを使って localhost を特定アカウントで利用する方法です。

参考文献: MacOS X の Yosemite (10.10) で Sites ディレクトリを使って localhost をアカウント別に利用する方法

修正手順

ほぼ参考文献にある、Mojave 以前と同じ手順ですが、Mojave ではユーザ設定ファイル内で DocumentRoot を明示する必要があります。

ユーザーディレクトリを有効化

$ sudo vi /etc/apache2/httpd.conf

以下のコメントアウトを外します。

LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

あと、個人的にPHPを使うのでPHPも有効化

LoadModule php7_module libexec/apache2/libphp7.so

ユーザ設定ファイルの読み込み設定

$ sudo vi /etc/apache2/extra/httpd-userdir.conf
UserDir Sites

Include /private/etc/apache2/users/*.conf
<IfModule bonjour_module>
       RegisterUserSite customized-users
</IfModule>

ユーザー設定ファイルの作成

{username}$whoami で確認してください。

$ sudo vim /etc/apache2/users/{username}.conf

Mojave 以前は1行目のDocumentRootの記述がなくてもいけていましたが、これを追記せねば正しく動作しませんでした。

DocumentRoot "/Users/{username}/Sites/"
<Directory "/Users/{username}/Sites/">
    AllowOverride All
    Options Indexes FollowSymLinks Multiviews
    Require all granted
</Directory>

Apache に適用

$ sudo apachectl -t
$ sudo apachectl restart

初めてやる人はこれも忘れずに。

$ mkdir ~/Sites

以上により、 http://localhost で /Users/{username}/Sites/ にアクセスできます。

↓励みになりますので「いいね」お願いします笑