- 问题: 之前使用虚拟机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
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:虚拟机里的nginx启动不了的问题 - Python技术站