- 問題: 之前使用虛擬機nginx一直都是正常的, 就在昨天重新配置了一下nginx(其實只注釋了反向代理,別的都沒動), 重啟nginx, 卻報錯pid為空. 無法啟動nginx. 而且重啟之前我是使用nginx -t 檢查了OK的, 沒有語法錯誤. 提示信息: invalid PID number '' in "/run/nginx.pid"
- 排查: 在網上看到說nginx 重啟是需要使用pid 的, 既然pid為空. 那就先啟動nginx
sudo /etc/init.d/nginx start #啟動nginx
結果沒有啟動成功. 提示信息: 使用 systemctl status nginx.service -l 查看詳情 或者使用 journalctl -xn 查看信息. 於是輸入這個systemctl status nginx.service , 提示綁定80端口失敗,Starting nginx: [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 那就基本是80端口被占用. 接下來使用 sudo netstat -ntlp | grep 80 或者sudo netstat -ltunp 查看什么程序占用80端口, 找到對應的pid關閉進程. (注意: 加上sudo, 開始沒加結果顯示不出來pid和占用的程序), 發現是Apache進程占用了80端口, 殺死Apache進程. 使用/etc/init.d/apache2 stop 停止Apache服務 使用 ps aux | grep apache2查看 但是Apache進程還存在....換一個kill -s 9 pid, 不知道為什么還是存在Apache進程, 最終是 使用 kill -9 pid 逐個殺死Apache進程的pid(系統顯示的有4個pid) 然后 啟動nginx OK!!!
參考了: https://www.cnblogs.com/wang-yaz/p/9451312.html - nginx重啟需要使用pid: 解釋在這里---> https://www.cnblogs.com/xiohao/p/6433124.html
- 在查資料過程中看到了tcp6的一篇博客: https://www.cnblogs.com/wlzjdm/p/8684202.html (Apache只顯示tcp6 監聽端口)
- 20191018, 今天又遇到了PHP不能啟動的問題, 同樣是因為端口被占用了, 剛開始不知道查看那個端口, 后來在網上看到php-fpm查9000端口, 如果有占用9000端口的程序, kill -s 9 pid, 然后啟動php-fpm