macOS には Apache がインストールされています*1。以前から これを起動し、各ユーザが .htaccsess
で動作を変更できるよう設定しているので Sonoma でもその設定を行います。
Apache の起動
Apache を起動します。
$ sudo apachectl start
http://localhost/ にアクセスすると、いつもの如く It works! が表示されます。
これだけで再起動時にも自動起動するようになります*2。停止するときは以下の通り。
$ sudo apachectl stop
これで再起動時にも自動起動しないようになります。
Apache の設定
設定ファイルは /etc/apache2/
にあります。
有効にするモジュール
httpd.conf を修正し、mop_include (SSI)、mod_cgi (CGI)、mod_userdir (ユーザディレクトリ ~/Sites/
の参照)を有効にします。
--- httpd.conf 2024/01/17 11:01:35 1.1 +++ httpd.conf 2024/01/17 11:08:22 @@ -110,7 +110,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 @@ -171,7 +171,7 @@ #LoadModule cgid_module libexec/apache2/mod_cgid.so </IfModule> <IfModule mpm_prefork_module> - #LoadModule cgi_module libexec/apache2/mod_cgi.so + LoadModule cgi_module libexec/apache2/mod_cgi.so </IfModule> #LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so #LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so @@ -181,7 +181,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 #PHP was deprecated in macOS 11 and removed from macOS 12 @@ -518,7 +518,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
UserDir の設定
extra/httpd-userdir.conf で個々のユーザごとに設定を行えるようにします。
--- extra/httpd-userdir.conf 2024/01/17 11:12:43 1.1 +++ extra/httpd-userdir.conf 2024/01/17 11:13:56 @@ -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>
users/koba.conf (各ユーザごとの設定)で .htaccess の制限を定義します。
<Directory "/Users/koba/Sites/"> Options Indexes MultiViews AllowOverride All Require all granted </Directory>
ここでは制限なく機能が使えるように AllowOverride All
を設定しました。
ログローテーションの設定
/etc/newsyslog.d/org.apache.httpd.conf を追加し、以下を記述しました。
# logfilename [owner:group] mode count size when flags [/pid_file] /var/log/apache2/access_log root:wheel 644 5 * $W0 Z /var/run/httpd.pid /var/log/apache2/error_log root:wheel 644 5 * $W0 Z /var/run/httpd.pid
毎週日曜にログを切り替え、5世代保存します。