我的nginx没有在80端口上启动。
我添加了以下详细信息:
$ nginx -s reload
2016/03/23 16:11:27 [error] 24992#0: invalid PID number "" in "/run/nginx.pid"
$ ps -ef | grep nginx
root 25057 2840 0 16:16 pts/1 00:00:00 grep --color=auto nginx
$ kill -9 25057
bash: kill: (25057) - No such process
$ service nginx start
Nothing..
请提供解决方案..
答案 0 :(得分:9)
尝试在没有首先启动nginx的情况下运行nginx -s reload
将导致错误,因为当你告诉它重新启动时,nginx会查找包含它的主pid的文件。在你的情况下,似乎nginx没有运行,因此包含该id的文件不存在。
通过运行kill -9 25057
,你试图杀死自己不再存在的命令ps -ef | grep nginx
,所以你得到了“没有这样的过程”。
为了确保一切顺利,我会使用nginx -s stop
停止nginx,然后使用nginx
然后nginx -s reload
启动它以检查一切是否正常。在任何情况下,日志文件都可能会告诉您/var/log/nginx/error.log
上是否存在错误。
如果可行,您可以尝试访问http://localhost:80,或者您已经配置了nginx,并且还要按照错误日志访问日志/var/log/nginx/error.log
作为旁注:如果有任何机会恰好是某些其他工具(如confd)重新加载nginx的情况,您还应该检查nginx是否实际将它的pid存储在/run/nginx.pid
而不是{{1 }}
答案 1 :(得分:2)
让我们先谈谈我们在这里拥有什么:
$ nginx -s reload
2016/03/23 16:11:27 [error] 24992#0: invalid PID number "" in "/run/nginx.pid"
可能是因为/run/nginx.pid
文件为空,这会导致stop | start | restart命令出现问题,因此您必须通过sudo对其进行编辑,并将当前正在运行的nginx服务的PID(主进程)放在该文件中。现在,让我们看一下与之连接的下一行。
$ ps -ef | grep nginx
root 25057 2840 0 16:16 pts/1 00:00:00 grep --color=auto nginx
$ kill -9 25057
bash: kill: (25057) - No such process
您正试图在这里杀不Nginx的的主要过程。首先尝试运行以下命令以查看nginx主进程及其工作进程的PID:
$ ps -aux | grep "nginx"
root 17711 0.0 0.3 126416 6632 ? Ss 18:29 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 17857 0.0 0.2 126732 5588 ? S 18:32 0:00 nginx: worker process
ubuntu 18264 0.0 0.0 12916 984 pts/0 S+ 18:51 0:00 grep --color=auto nginx
接下来,杀死两个:
$ sudo kill -9 17711
$ sudo kill -9 17857
,然后尝试再次运行nginx。
$ service nginx start
Nothing..
什么都没有在这里说;)
我觉得编辑/run/nginx.pid
与nginx的主进程PID应该解决该问题的文件。因此,根据我上面的示例,该文件应如下所示:
17711
希望有帮助!