« 手作りスコーン | トップページ | クマバチ »

2019年5月 4日 (土)

deamon常時起動

macOSには、httpd(webサーバ)が標準で入ってます。apache2.4系です。これを起動して使うには、terminalから、

$ sudo apachectl start
$ sudo apachectl stop

とやればいい。 でも、、再起動する度にやるのはめんどいし。deamonとして常時起動しておきたいワケ。

macOSの場合は、個別のxml(*.plist)でサービス内容を記述し、それをlaunchdが処理する形をとります。
/System/Library/LaunchDaemons や、~/Library/LaunchDaemons に登録し、それらのサービスはlaunchctl で管理します。

ちなみに、RedHat7/CentOS7系は、systemdがサービスを処理する形式で、
/etc/systemd/system/ に、*.service で記述された起動項目を登録し、systemctlで管理する。

 

xmlで書くか、独自tagで書くかの違いはあるが、考えは同じだ。
昔のinit.dとかに起動スクリプトを延々と書く方式だと、シーケンシャルにdeamonの起動が行われて、その都度waitとか入れられたのではたまったものではない。個々のdeamonの管理もsystemで行いたい。

 

そういう要求から生まれたのが、macOSのlaunchctl や 最近のGNU/Linuxのsystemctlなのだと思う。

では、webサーバ、Apacheをdeamon起動するよう、macOSをセットしてみましょう。
kameya.apache.plist を以下のように作り、Library/LaunchDaemons/下に入れてrootにchownしておきます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>kameya.apache</string>
<key>RunAtLoad</key>
<true/>
    <key>KeepAlive</key>
    <false/>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/httpd</string>
<string>-k</string>
<string>start</string>
</array>
</dict>
</plist>

再起動して見ましょう。

Httpd

 

はい、ちゃんとdeamonで起動してますよ。launchctlではコントロールできないので、この後は今まで通り、

$ sudo apachectl start
$ sudo apachectl stop

を使うことになります。ふむ。 まずはdeamon制御ができました。

|

« 手作りスコーン | トップページ | クマバチ »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 手作りスコーン | トップページ | クマバチ »