💭

【Linux】systemctl daemon-reloadだけでは環境変数は反映はできまてん!

2023/03/23に公開

参考

https://serverfault.com/questions/700862/do-systemd-unit-files-have-to-be-reloaded-when-modified

https://qiita.com/taro-hida/items/ec187c0fae893177e575

発生したこと

いつものように、環境変数をセットしようとおもって手順通り行うが、うまくできない。。。

$ sudo vim /etc/systemd/system/unicorn.service
・
・
・
$ sudo systemctl daemon-reload # 反映!(のつもり)

原因

そもそも、以下のコマンドの細かい挙動を分かっていなかった。

systemctl daemon-reload

systemd で管理されている Unit ファイル群に変更が加えられた場合に実行すると、その変更を systemd に反映できる。daemon-reload はサービス自体をリロード/再起動せず、systemd に新しい構成を認識させるだけらしい。。。

systemctl restart <service-name>

設定ファイルを変更したときに実行すると、設定ファイルの変更を反映できる。

おそらく今までは、デプロイ前に環境変数をセットしていたため、意図せずcapistranoがunicornの再起動を行なってくれていたので、systemctl daemon-reloadだけで十分だったのだが、今回はデプロイ後にセットしたため、うまくできなかったということっぽい。

まとめ

LPICの勉強をしていたおかげで、沼ることなく対処できたのは嬉しかったが、手順書があるような日頃の業務で思考停止で行うのは非常に良くない姿勢だったなと反省。(だろう判断は事故のもと!)

Discussion