1.背景及描述

当我使用systemctl start nginx.service或者service nginx start命令启动nginx,发现启动失败.当使用nginx -t却显示OK.查看状态,信息如下:

[root@localhost logs]# systemctl status nginx.service
● nginx.service - SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
   Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since 五 2020-10-16 10:52:10 CST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 38258 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=203/EXEC)

10月 16 10:52:10 localhost.localdomain systemd[1]: Starting SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server...
10月 16 10:52:10 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=203
10月 16 10:52:10 localhost.localdomain systemd[1]: Failed to start SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server.
10月 16 10:52:10 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.
10月 16 10:52:10 localhost.localdomain systemd[1]: nginx.service failed.

2.临时解决方案

2.1 使用./nginx启动

参考多篇博客均以失败告终,最后偶然发现,如果通过安装目录下sbin中的nginx可以正常启动.命令如下:

#进入nginx安装目录下的sbin目录,并指定配置文件启动
./nginx -c /etc/local/nginx/conf/nginx.conf
2.2 杀掉./nginx启动的进程,再使用service方式启动

也有博客是这样说的

只是很多时候我们都先用/usr/local/nginx/sbin/nginx来启动了nginx

只要找到这个进程kill掉以后,再执行/etc/rc.d/init.d/nginx start就一切正常了

即:先kill掉./nginx启动的进程,然后再换成service nginx start方式启动

3.总结

如果符合如下状态

  • nginx -t显示状态ok
  • systemctl start nginx.service或者service nginx start命令启动nginx失败
  • 报错信息为:nginx.service - SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
  • 报错信息为:Process: 38258 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=203/EXEC)

请尝试:

  • 更改为./nginx -c /etc/local/nginx/conf/nginx.conf方式启动或重启
  • kill掉./nginx启动的进程,然后再换成service nginx start方式启动

查错不易,如有帮助,请不吝点赞

Logo

鸿蒙生态一站式服务平台。

更多推荐