えいのうにっき

a-knowの日記です

systemd で動くプログラムの標準出力をファイルに出力させたい

昨年末に Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき https://blog.a-know.me/entry/2017/12/26/234528 で公開したサービス・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

と、結論だけみると「ふーん」という感じなのだけど、ここに至るまでに少し紆余曲折があった。

続きを読む

最近GitLabの人気が高まっているらしいので、GitHubのリポジトリをミラーリングしてみた

先日、「最近、GitLabの人気が高まっているらしい・再評価されているらしい」と同僚(先輩)から聞いた。あくまでもその人の観測範囲で、ではあるが、GitHub から GitLab に乗り換えたって人も何人かいるらしい。

GitLab の GitHub に対する優位性のひとつとして、CI ツールとコンテナレジストリがバンドルされていることがある、んだそう。なるほどたしかに、CI とかコンテナレジストリってそのリポジトリとの関係は密でもいい・密にしておきたい、ってかんじがするもんなぁ。

GitLab、僕のなかでは「セキュリティなどの理由により、github.com を使うことができないケース」「コストなどの理由で GitHub Enterprise を使うことができないケース」で、"自分たちの環境" に "自分たちで" セットアップして使うもの......という印象だったんだけど、そうか、普通に SaaS 版もあるんだな。上で書いた優位性もすごく腑に落ちたし、どんなもんかちょっと試してみたくなったので、手始めに、GitLab アカウントを作って GitHub リポジトリのミラーを作ってみた。

続きを読む