今天公司系统业务端需要重启nginx时 报错nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) 打开"/var/run/nginx.pid"失败 或没有如此文件或目录
这是执行杀死nginx进程后 导致的pid文件丢失 。所以当我们重载nginx时会提示找不到nginx.pid文件了。nginx 被停止时,var/run/nginx.pid 被删除了。 而 reopen 和 reload命令需要通过 nginx.pid 获取进程号,会去找 var/run/nginx.pid ,如果不存在,就报错了
解决方法:
启动nginx (启动前确保nginx还没启动 启动了的话 kill -9先杀掉nginx主进程号即可)
启动格式 nginx安装目录地址 -c nginx配文件路径
说明:-c 参数指定运行nginx系统的自定义配置文件。
若加:使用自定义配置文件。
若不加:使用默认的nginx.conf(一般位于/usr/local/conf/nginx.conf,具体以实际情况为准)
[root@redis-zuul-eureka-mysql ~]# /usr/sbin/nginx -c /etc/nginx/nginx.conf //启动nginx (或者 nginx -c /etc/nginx/nginx.conf)
[root@redis-zuul-eureka-mysql ~]# ps -ef | grep nginx //查看nginx进程
查看进程存在即表明启动成功 ;
再进入nginx安装目录执行nginx -s reload 就不会报错了。例如的我这里的安装目录是/usr/sbin/nginx
[root@redis-zuul-eureka-mysql ~]# cd /usr/sbin/nginx //进入nginx安装目录
[root@redis-zuul-eureka-mysql ~]# ./nginx -s reload //平滑启动nginx
---------------------------------------------------------------------------------------------------------------------------------
题外话:要是平时nginx配置文件修改了的话 在重载前 最好检测下nginx.conf配置文件是否正确 可以执行以下命令
[root@redis-zuul-eureka-mysql ~]# /usr/sbin/nginx -t -c /etc/nginx/nginx.conf //测试nginx配置文件是否正确
测试命令格式:nginx安装目录地址 -t -c nginx配文件路径
如图弹出以下提示
nginx.conf syntax is ok
nginx.conf test is successful
说明配置文件正确。