一、背景
這個錯誤在重啟nginx或者啟動nginx的時候,經常會出現。我之前也一直認為出現這個錯誤是因為有程序占用了nginx的進程。但是知其然不知其所以然。每次報錯都有點懵逼,所以這邊一步步排查錯誤,做個記錄。
二、排錯過程
1、按照提示
//按照提示,執行此命令,查看錯誤原因 systemctl status nginx.service

由報錯信息可知,nginx綁定80端口失敗。詳細錯誤請輸入 -l 繼續查看
2、繼續跟蹤錯誤
//查看錯誤的詳情 systemctl status nginx.service -l
這里輸入 -l 之后,說實話,差距並不大。原因還是綁定端口失敗。
3、nginx配置文件有錯誤
運行下面命令查看修改
nginx -t
4、已經啟動nginx或者配置文件中的端口號被占用
4.1檢查端口是否被占用,如果端口已經被占用,自己權衡一下是換個端口還是把占用端口的進程殺掉
netstat -tnlp
4.2檢查nginx是否已經啟動
ps -aux | grep nginx
如果已經啟動使用下面命令干掉即可
pkill -9 nginx
三、解決方案
1、查看此時占用80端口的程序
netstat -ntlp | grep 80

這里可以看到,80端口是被占用的 。我們再詳細看看占用80的是什么
ps -ef | grep 80
然后找到pid,殺掉這些程序
//-s 9 代表的是快速強制的殺掉pid程序 kill -s 9 pid
2、殺到沒有程序可殺為止,然后啟動nginx

此時啟動成功。
