2019年11月22日金曜日

systemdを更新したらエラー

最近いろいろサボっていたけど、久しぶりの「yum update」です。
(centos のバージョンも7.7 になってる気がする)

systemd の更新があったようで、mongodb, nginx が起動しませんでした (涙
エラーです...

■ systemd のエラー表示
# nginx の場合
> Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

# mongodb の場合
> Can't open PID file /var/run/mongodb/mongod.pid (yet?) after start: Too many levels of symbolic links

■ エラーの関連リンク
- Systemd error: 'Refusing to accept PID outside of service control group, acquired through unsafe symlink chain'
- service: relax PID file symlink chain checks a bit (#8133)
cgroup 対応でチェックを追加したという事です。

■ 対処
 - /usr/lib/systemd/system/mongod.service
 - /usr/lib/systemd/system/nginx.service
このファイルを編集して
pid のパスを /var/run から /run に変更。

nginx, mongo を起動
> systemctl daemon-reload
> systemctl reload nginx
> systemctl reload mongod
OK ... 無事起動 (うれし涙

一応、nginx, mongo のconf も変更しておく
 - /etc/nginx/nginx.conf
 - /etc/mongod.conf
pid のパスを変更。/var/run -> /run
(/var/run は /run へのシンボリックリンクなので変更しなくても動きますが、systemdの変更に合わせておきます)

mongodbやnginx のように、centos 以外のレポジトリからインストールしたものがあれば、しばらくは要注意。
Can't open PID file /var/run/xxxxx.pid (yet?) after start: Too many levels of symbolic links
このエラー表示を頭の片隅に。

(そもそも、cgroup の勉強ができていないので何とも言えませんが、別の対応方法があるような気もする.....)