一、背景
这个错误在重启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
此时启动成功。