Nginx啟動卡住了

Error: Can’t open PID file /var/run/nginx。pid (yet?) after start: Too many levels of symbolic links

現象:

Nginx啟動時卡住,無法自動執行完啟動命令,顯示下一個命令提示符

可透過systemctl status nginx -l命令檢視nginx詳細狀態資訊

或直接檢視/var/log/messages資訊

systemd: Starting nginx - high performance web server。。。 systemd: Can‘t open PID file /var/run/nginx。pid (yet?) after start: Too many levels of symbolic links

解決方法1

檢查目錄 /var/run 是否為軟連結 (symbolic link) 到/run目錄

# ls -ld /var/runlrwxrwxrwx。 1 root root 6 Sep 14 2020 /var/run -> 。。/run

同時也檢查下目錄 /run 是否也是軟連結

# ls -ld /rundrwxr-xr-x 24 root root 780 Oct 28 06:20 /run

檢查nginx配置中的pid路徑:

# grep -ir pid /etc/nginx /etc/nginx/nginx。conf:pid /var/run/nginx。pid;

建立軟連結時採用的是相對路徑,所以才會產生這樣的錯誤,解決方式是採用絕對路徑建立軟連結

# mv /var/run /var/run_orig && ln-s /run /var/run && ls-ld /var/run

解決方法2

檢查nginx配置中的pid路徑:

# grep -ir pid /etc/nginx/etc/nginx/nginx。conf:pid /var/run/nginx。pid;

找到配置檔案nginx。conf中的pid行

# pid /var/run/nginx。pid;

變更為

pid /run/nginx。pid;

使用sed命令替換pid路徑

sed -i ’s/pid /var/run/nginx。pid/pid /run/nginx。pid/‘ /etc/nginx/nginx。conf

編輯nginx。service

# vim /lib/systemd/system/nginx。service

變更pid路徑

PIDFile=/var/run/nginx。pid

變更為

PIDFile=/run/nginx。pid

應用修改

# systemctl daemon-reload

然後重啟服務

# systemctl restart nginx

最後檢視下服務狀態

# systemctl status nginx。service● nginx。service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx。service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-10-27 23:12:02 CST; 7h ago Docs: http://nginx。org/en/docs/ Process: 1724 ExecStop=/bin/sh -c /bin/kill -s TERM $(/bin/cat /run/nginx。pid) (code=exited, status=0/SUCCESS) Process: 1325 ExecReload=/bin/sh -c /bin/kill -s HUP $(/bin/cat /run/nginx。pid) (code=exited, status=0/SUCCESS) Process: 1729 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx。conf (code=exited, status=0/SUCCESS) Main PID: 1730 (nginx) CGroup: /system。slice/nginx。service ├─1730 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx。conf ├─1731 nginx: worker process ├─1732 nginx: worker process ├─1733 nginx: worker process └─1734 nginx: worker processOct 27 23:12:02 my202108112 systemd[1]: Starting nginx - high performance web server。。。Oct 27 23:12:02 my202108112 systemd[1]: Started nginx - high performance web server。

注意:這個問題不僅會影響 nginx,還會影響 mysql 或 fail2ban 以及其他服務。