虚拟机里的nginx启动不了的问题

  • 问题: 之前使用虚拟机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