Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Nginx 重啟報錯「nginx.pid 不存在」秒級修復:指定配置文件啟動法

編輯:關於伺服器

服務器重啟後 Nginx 未自動拉起,執行 nginx -s reload 提示 open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)。核心原因:Nginx 進程未運行,pid 文件自然不存在。直接指定配置文件啟動主進程即可自動生成 pid 並恢復服務。

錯誤現場

[root@localhost sbin]# ./nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

ls logs/ 確認無 nginx.pid,說明主進程不存在。

一鍵修復命令

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • -c 顯式指定配置文件絕對路徑。
  • 主進程啟動成功後,自動在 logs/nginx.pid 寫入 PID。
  • 後續可正常使用 nginx -s reload/stop/quit。

驗證

[root@localhost logs]# ll
total 12
-rw-r--r-- 1 root root 1246 Dec  9 18:10 access.log
-rw-r--r-- 1 root root  516 Dec 10 15:39 error.log
-rw-r--r-- 1 root root    5 Dec 10 15:38 nginx.pid   # 已生成

根因預防:配置系統級服務自啟

手動啟動僅治標,生產環境務必註冊 systemd/service:

# 建立 /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable nginx
systemctl start nginx

排查檢查清單

  1. nginx -t 驗證配置語法無誤。
  2. netstat -antp | grep :80 確認 80 端口未被佔用。
  3. error.log 檢查啟動錯誤 (權限、路徑、模組缺失)。
  4. 確認 nginx.conf 中 pid logs/nginx.pid; 路徑與實際一致。

「pid 不存在」本質是進程未活,-c 參數直擊核心,30 秒恢復服務;長期治本靠 systemd 托管。

Copyright © Windows教程網 All Rights Reserved