自前ビルドしたApache Webサーバーをシステム起動時に自動起動させる
主題
この投稿で、自前ビルドしたApacheをシステム起動時に自動起動させるための手順を説明する。
背景
macOS Big Surになった事により、ビルトインのApacheは、無用の長物と化した。そこで、この投稿にも書いたとおり、Apacheを自前ビルドして運用することにした。しかし、そのApacheを、システム起動時に自動起動させる事ができていなかった。本稿では、その手順をトライアンドエラーを含めて説明する。
手順
-
プロパティリストの作成
自動起動はlaunchdの機能を用いる。次の内容のプロパティリストを、起動ディスク直下のライブラリ>LaunchDaemonsに作成する。
なお、ファイル名は任意で構わないが、org.apache.httpd
は使わないこと。(使うとビルトインのApacheが起動する)実行するコマンド
yourName
は、ご自分の名前に置き換える。cd /Library/LaunchDaemons sudo vim jp.yourName.httpd.plist
プロパティリストの内容
yourName
は、ご自分の名前に置き換える。<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>jp.yourName.httpd</string> <key>ProgramArguments</key> <array> <string>/usr/local/apache2/bin/httpd</string> <string>-D</string> <string>FOREGROUND</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
-
プロパティリストのパーミッションとグループの確認・設定
これを行わない(または確認しない)と、次項でエラー(Path had bad ownership/permissions)が発生する。パーミッションとグループの確認
パーミッションが0644
、グループがroot:wheel
であることを確認する。ls -l jp.yourName.httpd.plist
もし違う場合は、以下のように設定する。
sudo chmod 644 jp.yourName.httpd.plist sudo chown root:wheel jp.yourName.httpd.plist
-
Apacheの停止
手動起動している場合、Apacheを一旦停止する。(停止しないと、次項でロード後、Webページ表示時に403 Forbidden
が発生する)sudo apachectl stop
-
プロパティリストのロード
sudoを用いる。sudoなしでは、exit code 1
(権限不足)になる。また、必ずロードしておくこと(ロードしておかないと、再起動時にロードされない)sudo launchctl load -w jp.yourName.httpd.plist
-
launchdの確認
ラベルの左隣に0
(正常)が出ていることを確認する。sudo launchctl list jp.yourName.httpd
102 0 jp.yourName.httpd
-
httpdプロセスの確認
概ね次のように表示されていればオーケーである。ps aux | grep httpd
daemon 625 0.0 0.0 4413944 1548 ?? S 9:16PM 0:00.00 /usr/local/apache2/bin/httpd -D FOREGROUND daemon 293 0.0 0.0 4413944 1928 ?? S 9:16PM 0:00.00 /usr/local/apache2/bin/httpd -D FOREGROUND daemon 292 0.0 0.0 4423888 6020 ?? S 9:16PM 0:00.01 /usr/local/apache2/bin/httpd -D FOREGROUND daemon 291 0.0 0.0 4413944 1540 ?? S 9:16PM 0:00.00 /usr/local/apache2/bin/httpd -D FOREGROUND yourName 891 0.0 0.0 4277664 732 s000 S+ 9:19PM 0:00.00 grep httpd root 102 0.0 0.1 4400312 10612 ?? Ss 9:16PM 0:00.06 /usr/local/apache2/bin/httpd -D FOREGROUND
参考サイト
- launchctl leadをするとPath had bad ownership/permissionsとエラーが出るときの対処法
-
File launches in Launchctl with PID – Status 1
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント