我能';不要重新启动我的nginx

我能';不要重新启动我的nginx,nginx,Nginx,在控制台中,它显示如下: nginx.service的作业失败,因为控制进程已退出 错误代码。请参阅“systemctl状态nginx.service”和“journalctl-xe” 详情请参阅 我尝试了以下命令: sudo nginx-t-c/etc/nginx/nginx.conf 及 sudo nginx-t 显示成功消息,但nginx服务器未重新启动 sudo systemctl状态nginx.service nginx.service - A high performance web

在控制台中,它显示如下:

nginx.service的作业失败,因为控制进程已退出 错误代码。请参阅“systemctl状态nginx.service”和“journalctl-xe” 详情请参阅

我尝试了以下命令:

sudo nginx-t-c/etc/nginx/nginx.conf

sudo nginx-t

显示成功消息,但nginx服务器未重新启动

sudo systemctl状态nginx.service

nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2018-07-18 18:06:51 IST; 11min ago
Process: 28271 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Process: 28259 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 5236 (code=exited, status=0/SUCCESS)
nginx错误日志有以下错误

将()绑定到0.0.0.0:443失败(98:地址已在使用) 2018/07/18 18:06:49[emerg]28271#28271:bind()到[:]:443失败(98:地址已在使用) 2018/07/18 18:06:49[emerg]28271#28271:bind()到0.0.0.0:80失败(98:地址已在使用)

2018/07/18 18:06:49[emerg]28271#28271:仍然无法绑定()


您已经有一个程序正在侦听端口。停止其他程序或为nginx选择其他端口


如果它是另一个nginx实例,您可以使用
ps aux | grep nginx
搜索它,然后使用
kill PID
杀死它,尝试运行以下两个命令:

sudo定影器-k 80/tcp

sudo定影器-k 443/tcp

然后执行

sudo服务nginx重启

如果成功了,您的主机提供商可能会在新安装期间默认在您的服务器上安装Apache,因此请继续阅读更多永久性修复如果不起作用,请继续阅读以确定问题

运行
nginx-t
,如果它没有返回任何内容,我将验证nginx错误日志。默认情况下,它应该位于
/var/log/nginx/error.log

您可以使用任何文本编辑器打开它:
sudo nano/var/log/nginx/error.log

你能在那里找到可疑的东西吗

您可以检查的第二个日志如下

sudo nano/var/log/syslog

当我遇到这个问题时,是因为我的主机提供商在一次干净的安装过程中自动安装了Apache。它阻塞了80号端口

当我执行
sudo nano/var/log/nginx/error.log
时,我得到了以下错误日志:

2018/08/04 06:17:33 [emerg] 634#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/08/04 06:17:33 [emerg] 634#0: bind() to [::]:80 failed (98: Address already in use)
2018/08/04 06:17:33 [emerg] 634#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
上面的错误表明,它无法将nginx绑定到端口80,因为它已经在使用中

要解决此问题,您需要运行以下操作:

Proto Recv-Q Send-Q Local Address           Foreign Address         State    PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1762/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1528/sendmail:acce
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd
yum安装net工具

sudo netstat-tulpn

当您执行上述操作时,您将得到如下结果:

Proto Recv-Q Send-Q Local Address           Foreign Address         State    PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1762/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1528/sendmail:acce
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd
您可以看到端口80被httpd(Apache)阻塞。如果使用SSL,也可以是端口443

获取使用端口80或443的进程的PID。并发送kill命令,更改
值:

sudo kill-2

注意,在我的示例中,Apache的PID值为
1762
,因此我将执行
sudokill-21762

在本机上,您可以执行以下操作:

Proto Recv-Q Send-Q Local Address           Foreign Address         State    PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1762/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1528/sendmail:acce
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd
sudo定影器-k 80/tcp

sudo定影器-k 443/tcp

现在端口80或443已清除,您可以通过运行以下命令启动Nginx:

Proto Recv-Q Send-Q Local Address           Foreign Address         State    PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1762/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1528/sendmail:acce
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd
sudo服务nginx重启

还建议移除之前阻塞端口80和443的任何组件。这将避免将来发生任何冲突。由于Apache(httpd)阻止了我的端口,我通过运行以下命令将其删除:

Proto Recv-Q Send-Q Local Address           Foreign Address         State    PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1762/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1528/sendmail:acce
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd
yum删除httpd httpd devel httpd手动httpd工具mod_auth_kerb mod_auth_mysql mod_auth_pgsql mod_authz_ldap mod_dav_svn mod_dnssd mod_nss mod_perl mod_revocator mod_ssl mod_wsgi


希望这有帮助

您是否尝试了
systemctl status nginx.service
journalctl-xe
?您的错误日志中是否有任何内容?nginx是否正在运行?你停止了吗?你已经有一个程序在监听端口。你可以检查这个链接