昨年末に Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき で公開したサービス・Yukizuri のデーモン化手段を、今日、supervisor から systemd に変更した。理由は単純で、会社の同僚(先輩)と「なんで supervisor 使ったの?」「今なら systemd がいいんじゃない?」といったような会話があったため(別に咎められたわけではない)。
今まで supervisor で以下のような指定をして動かしていたものを、
; for yukizuri
[program:yukizuri]
command=/var/www/yukizuri/app/yukizuri.bin -addr=":8080" -logging=true
autostart = true
startsecs = 1
user = root
redirect_stderr = true
stdout_logfile = /var/www/yukizuri/log/production.log
systemd に切り替えるにあたり、以下のようにした。
[Unit]
Description=Yukizuri service
[Service]
Type=simple
ExecStart=/bin/sh -c 'exec /var/www/yukizuri/app/yukizuri.bin -addr=":8080" -logging=true > /var/www/yukizuri/log/production.log'
ExecStop=/bin/kill -SIGTERM $MAINPID
ExecReload=/bin/kill -SIGTERM $MAINPID && /bin/sh -c 'exec /var/www/yukizuri/app/yukizuri.bin -addr=":8080" -logging=true > /var/www/yukizuri/log/production.log'
Restart = always
[Install]
WantedBy = multi-user.target
と、結論だけみると「ふーん」という感じなのだけど、ここに至るまでに少し紆余曲折があった。
続きを読む