Apacheの起動と設定(Sonoma編)

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世代保存します。

*1:バージョンは 2.4.56

*2:macOS の apachectl は内部で launchctl を呼び出しており、これが自動起動の設定を行います