MacOSXではLinuxのrcに相当するSystemStarterの機能を使ってlighttpdを自動起動します。ユーザインストールのサービスをSystemStarterで起動するには、
上記のファイルを作成する必要があります。(4.のローカライズ用ファイルはオプション扱いですので作成不要)以下、Lighttpdの自動起動のためのファイルを作成していきます。
起動スクリプト本体/Library/StartupItems/Lighttpd/Lighttpdファイルを作成します。起動ファイルは通常のシェルです。
#!/bin/sh
if [ -z $1 ] ; then
echo "Usage: $0 [start|stop|restart] "
exit 1
fi
test -r /etc/rc.common || exit 1
. /etc/rc.common
CONFIG="/etc/lighttpd/lighttpd.conf"
SCRIPT="/usr/local/sbin/lighttpd"
シェルの先頭でこの起動スクリプトに与えられる引数をチェックします。引数は[start|stop|restart]の3つのうちどれかです。引数がこれらのいずれでもない場合はメッセージを出力して終了します。次にスタートアップの仕組みの中で使用する共通関数群(/etc/rc.common)をインクルードします。これらはにLinux等の/etc/init.d/functionなどに相当します。最後に、シェルスクリプト内で使用する変数を定義します。上記の例ではLighttpdの標準インストール先を指定していますので環境に応じて書き換えてください。
以降は、start|stop|restartのパラメータに応じてそれぞれに対応する関数を定義します。それぞれの名前はStartService()/StopService()/RestartService()となります。
StartService ()
{
if [ "${LIGHTTPD:=-NO-}" = "-YES-" ] ; then
ConsoleMessage "Starting Lighttpd Server"
$SCRIPT -f $CONFIG
fi
}
StopService ()
{
ConsoleMessage "Killing Lighttpd Server"
kill `cat /var/run/lighttpd.pid`
}
RestartService ()
{
ConsoleMessage "Restarting Lighttpd server"
/Library/StartupItems/Lighttpd/Lighttpd stop
/Library/StartupItems/Lighttpd/Lighttpd start
}
StartService()関数では/etc/hostconfigファイルのチェックをしています。/Library/StartupItems/以下はシステムによって必ず起動されますがトラブル時や一時的に起動したくない場合などは不便です。その場合、この/etc/hostconfigファイルにLIGHTTPD=-NO-を記述します。実際の起動は特に難しいことはなくてターミナルからコマンドを叩くのと同じです。 -f引数でLighttpdの設定ファイルを指定しています。