これは何?
macOSがVersionアップ時にほとんど起こるApacheの設定変更のメモです。
注意
- Mojave向けなので、他のバージョンで以下の設定をして動作を保証するものではありません。
- 設定時はsuper user権限で行うので、権限があるかどうか事前の確認を行ってください。
- この設定は個人の開発環境用の設定で、一般公開用の設定ではありません。
方針
- ウェブサーバをmacOSに同梱されているapacheで動作させる
- ユーザディレクトリを有効化し、
~/{user_name}/Sites/
以下をユーザのDocumentRootとする
- HTTP/2を有効にする
- mod_rewriteを有効にする
- 公開ディレクトリ内のディレクトリ表示、シンボリックリンク、Multiviewを有効にする
- ミドルウェア動作の設定は行わない(例:PHP, Perl等)
- VirtualHostの設定は行わない
設定を行う
/etc/apache2/httpd.conf
の修正
- 以下を有効化
- 有効化するには、行頭の
#
を削除する
LoadModule http2_module libexec/apache2/mod_http2.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Include /private/etc/apache2/extra/httpd-userdir.conf
(↑ /etc/apache2/extra/httpd-userdir.conf
が読み込まれるようになる)
/etc/apache2/extra/httpd-userdir.conf
の修正
Include /private/etc/apache2/users/*.conf
(↑ /etc/apache2/users/{user_name}.conf
が読み込まれるようになる)
/etc/apache2/users/{user_name}.conf
を修正
<Directory "/Users/{user_name}/Sites/">
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
-
{user_name}
には/Users/
に存在するユーザ名を使用する。 - 一行目の
<Directory "/Users/{user_name}/Sites/">
内のSites
を変更することでDocumentRootを変更することが可能。
ディレクトリの作成
ユーザ名:{user_name} のユーザディレクトリを作成する。
$ mkdir -p /User/{user_name}/Sites
apacheを起動
$ sudo /usr/sbin/apachectl restart;
動作確認
以下の2点で動作確認
- ブラウザのアドレスバーに127.0.0.1
と入力してIt works!
と表示される
- ブラウザのアドレスバーに127.0.0.1/~{user_name}/
と入力して/User/{user_name}/Sites
のファイル一覧が表示される
その他
設定できてるはずなのに動かない
正しい使い方であるかは調べていませんが、以下のようにオプションなしでコマンドを実行すると、エラー表示がされることがあります。
$sudo /usr/sbin/apachectl;
ログの確認
ログは以下の2つです。
- /var/log/apache2/error_log
:エラーのログが書き込まれるファイル
- /var/log/apache2/access_log
:アクセスのログが書き込まれるファイル
error_log
/etc/apache2/httpd.conf
の以下を書き換えることでファイル名の変更が可能です。
ErrorLog "/private/var/log/apache2/error_log"
access_log
error_log
と同様に/etc/apache2/httpd.conf
の以下を書き換えることでファイル名の変更が可能です。
CustomLog "/private/var/log/apache2/access_log" common