我有一个 NGINX 网络服务器,我正在使用 Certbot (letsencrypt) 来更新我的网站证书。当我尝试更新证书时,出现此错误:
binding to port 80: Could not bind to IPv4 or IPv6
因此我检查了使用端口 80 的内容,并得到了以下信息:
# lsof -Pnl +M -i6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17117 0 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17117 0 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
nginx 17118 33 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17118 33 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
nginx 17119 33 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17119 33 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
sshd 18455 0 4u IPv6 66436292 0t0 TCP *:22 (LISTEN)
似乎有 3 个不同的 nginx 正在运行,对吗?
我尝试通过运行来停止 nginx
/etc/init.d/nginx stop
我也尝试过
systemctl stop nginx
当我检查当前进程时,无论我是否运行上述停止命令,仍然有 2 个 nginx 正在运行:
root 17117 0.0 0.1 161720 2284 ? Ss juin06 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 17118 0.0 0.3 161984 8208 ? S juin06 0:00 nginx: worker process
www-data 17119 0.0 0.3 161720 7484 ? S juin06 0:02 nginx: worker process
顺便说一下,我无法启动 NGINX,因为出现此错误:
# systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
如果有人能帮助我那就太好了:)!
答案1
为了使 systemd 成功管理(停止或重新启动)服务,它必须开始通过 systemd。如果已直接启动 nginx 进程,systemctl
将无法识别它并尝试启动第二个副本,或者无法停止现有副本。
不要使用/etc/init.d
或sudo nginx
来启动服务 - 始终使用systemctl start nginx
。确保您的 cronjobs 或 Certbot 钩子执行相同的操作。