我无法执行此操作,service nginx start
因为:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
但如果我这样做,service nginx status
我会得到:
* nginx is not running
这是在 ubuntu 14.04 上的 nginx 1.8,使用 stop 不起作用(因为它认为它没有正在运行)
我知道我可以终止在该端口上运行的进程,但我需要一种更优雅的方法来解决这个问题。
我已经确认 nginx 在监听 80 端口netstat -tulpn
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9787/nginx.conf
跑步时sudo /usr/sbin/nginx -s reload
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
我使用 AWS OpsWorks (Chef) 来管理基础设施。要安装 nginx,我使用https://github.com/miketheman/nginx/tree/2.7.xcookbook,并通过 repo 安装。运行 list = [nginx::repo, nginx::default]
第一次启动非常正常,但后续的设置调用导致设置失败。
由于。。。导致的结果ps aux | grep nginx
root 9791 0.0 0.0 31504 2184 ? Ss 10:12 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www-data 14571 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14572 0.0 0.0 32036 2224 ? S 10:13 0:00 nginx: worker process
www-data 14573 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14574 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14575 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14576 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14577 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14578 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14579 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
www-data 14580 0.0 0.0 32036 1976 ? S 10:13 0:00 nginx: worker process
如果我运行echo '9791' | sudo tee /run/nginx.pid
nginx,则会报告正在运行。以前 pid 文件是空的。
因此根本问题似乎是 pid 文件被截断了。
答案1
跑步
sudo fuser -k 80/tcp
这将终止监听端口 80 的 nginx 工作进程,从而允许您运行 nginx。