Apacheの起動と設定

High Sierra でもやはりWebサーバを起動するUIはありません*1Apache 2.4 がインストールされているのでこれを起動し、各ユーザが .htaccess で動作を変更できるよう設定します。

Apacheの起動

Mavericks時代は launchctl でApacheを常時起動していたのですが、その設定は「移行アシスタント」で引き継がれていないようです。とりあえず以下のコマンドでApacheを起動してみます。

$ sudo apachectl start

http://localhost/ にアクセスすると、例の「It works!」が表示されました。起動は成功。Macを再起動してみるとApacheも再起動していました。あらためて launchctl で設定する必要はなさそうです。*2

Apacheの設定

Apacheの設定ファイルはいままで通り /private/etc/apache2/ 配下にあります*3Apacheの起動と設定 - koba::blog で行った設定も移行されていましたが、肝心の httpd.conf 自体が入れ替えられているので有効にはなっていません。

httpd.conf の設定
diff -u -r1.1 httpd.conf
--- httpd.conf	2018/05/08 14:44:41	1.1
+++ httpd.conf	2018/05/12 19:16:55
@@ -105,7 +105,7 @@
 LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so
 #LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
 #LoadModule request_module libexec/apache2/mod_request.so
-#LoadModule include_module libexec/apache2/mod_include.so
+LoadModule include_module libexec/apache2/mod_include.so
 LoadModule filter_module libexec/apache2/mod_filter.so
 #LoadModule reflector_module libexec/apache2/mod_reflector.so
 #LoadModule substitute_module libexec/apache2/mod_substitute.so
@@ -161,7 +161,7 @@
 LoadModule autoindex_module libexec/apache2/mod_autoindex.so
 #LoadModule asis_module libexec/apache2/mod_asis.so
 #LoadModule info_module libexec/apache2/mod_info.so
-#LoadModule cgi_module libexec/apache2/mod_cgi.so
+LoadModule cgi_module libexec/apache2/mod_cgi.so
 #LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
 #LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
 #LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
@@ -170,7 +170,7 @@
 #LoadModule imagemap_module libexec/apache2/mod_imagemap.so
 #LoadModule actions_module libexec/apache2/mod_actions.so
 #LoadModule speling_module libexec/apache2/mod_speling.so
-#LoadModule userdir_module libexec/apache2/mod_userdir.so
+LoadModule userdir_module libexec/apache2/mod_userdir.so
 LoadModule alias_module libexec/apache2/mod_alias.so
 #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
 #LoadModule php7_module libexec/apache2/libphp7.so
@@ -507,7 +507,7 @@
 #Include /private/etc/apache2/extra/httpd-languages.conf
 
 # User home directories
-#Include /private/etc/apache2/extra/httpd-userdir.conf
+Include /private/etc/apache2/extra/httpd-userdir.conf
 
 # Real-time info on requests and configuration
 #Include /private/etc/apache2/extra/httpd-info.conf

mod_include、mod_cgi、mod_userdir を有効にしました。mod_userdir の設定は extra/httpd-userdir.conf で行います。

extra/httpd-userdir.conf の設定
diff -u -r1.1 extra/httpd-userdir.conf
--- extra/httpd-userdir.conf	2018/05/08 14:50:01	1.1
+++ extra/httpd-userdir.conf	2018/05/08 14:50:29
@@ -13,7 +13,7 @@
 # Control access to UserDir directories.  The following is an example
 # for a site where these directories are restricted to read-only.
 #
-#Include /private/etc/apache2/users/*.conf
+Include /private/etc/apache2/users/*.conf
 <IfModule bonjour_module>
        RegisterUserSite customized-users
 </IfModule>

UserDir は変わらず Sites でした。ユーザごとに異なる設定を行うので users/*.conf をインクルードするよう変更します。

users/koba.conf の設定

Mavericksの時の設定が移行されていたのでそれを元に修正します。.htaccess を自由に使いたいので AllowOverride All となっています。Apache 2.4 からアクセス制御の設定方法が変わっていますので、そこだけ修正しました。

diff -u -r1.1 users/koba.conf
--- users/koba.conf	2018/05/13 11:26:43	1.1
+++ users/koba.conf	2018/05/13 11:27:57
@@ -1,6 +1,5 @@
 <Directory "/Users/koba/Sites/">
     Options Indexes MultiViews
     AllowOverride All
-    Order allow,deny
-    Allow from all
+    Require all granted
 </Directory>

mod_perl も有効にしたいのですが、Apache が 2.4 になっているので別の機会に挑戦します。

追記 (2018-05-31)

ログローテーションについては新たに設定はしなかったのですが、Apacheのログをローテーションさせる - koba::blog で行なった設定が「移行アシスタント」で引き継がれているようです。

*1:Mac OS X 10.7 Lion までは環境設定に「Web共有」の項目があったらしいのですが

*2:Mavericksでも試してみたところ、実は状況は同じというオチでした。apachectl 内部の処理で launchctl を使用していました

*3:/etc/apache2/ でも参照可能なようシンボリックリンクが張られています