无法在 CentOS 7 上重新启动 HTTPD

无法在 CentOS 7 上重新启动 HTTPD

我有一个运行 CentOS 7 的实例。当我重新启动时,我遇到了困难httpd

我的配置工作正常,我的网站按照我想要的方式进行广播;而且,当我执行命令时sudo apachectl configtest,我得到了返回Syntax OK

但是当我重新启动时httpd,它未能遵循以下状态消息:

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2018-08-28 12:30:26 CEST; 6s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 9569 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 9568 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 9568 (code=exited, status=1/FAILURE)

Aug 28 12:30:26 vps httpd[9568]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Aug 28 12:30:26 vps httpd[9568]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Aug 28 12:30:26 vps httpd[9568]: no listening sockets available, shutting down
Aug 28 12:30:26 vps httpd[9568]: AH00015: Unable to open logs
Aug 28 12:30:26 vps systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Aug 28 12:30:26 vps kill[9569]: kill: cannot find process ""
Aug 28 12:30:26 vps systemd[1]: httpd.service: control process exited, code=exited status=1
Aug 28 12:30:26 vps systemd[1]: Failed to start The Apache HTTP Server.
Aug 28 12:30:26 vps systemd[1]: Unit httpd.service entered failed state.
Aug 28 12:30:26 vps systemd[1]: httpd.service failed.

当我重新启动它时,我发现有其他程序正在代替它工作httpd。因此我执行了netstat -tulpn | grep :80

tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      2560/nginx: master  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2560/nginx: master  
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      1434/unicorn master 
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      1307/sidekiq 5.1.3 

Nginx上述结果让我有点困惑,因为我的系统上没有安装并且which nginx也没有返回任何内容。

但是,当我重新启动实例时,httpd它按预期工作。

我应该怎么做才能解决我的问题?

答案1

好的,谜团解开了;感谢 Gerald Schneider。(尽管幸运的是它不是特洛伊木马)

执行ps -Af | grep $pid给了我更多的见解,并强调了 GitLab 引起了我的注意。(我知道这里面有些可疑,但无法找到问题的根本原因并正确识别它)

httpd与 相冲突gitlab。一旦我执行sudo gitlab-ctl stop并尝试重新启动httpd,一切就都正常了。

还,这个问题对 Apache - GitLab - Nginx 困境提供了更多见解。(首先提到的是 Apache 和 GitLab 在端口 80 上存在矛盾:])

答案2

您可以使用systemctl命令来识别正在运行的服务。

在你的情况下systemctl list-unit-files | grep nginx

例子

systemctl list-unit-files | grep nginx
nginx-nr-agent.service                 generated
nginx.service                          enabled  

之后,你可以使用以下命令找到有关正在运行的服务的更多信息systemctl status servicename

例子

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-08-28 15:03:08 EEST; 47min ago
     Docs: man:nginx(8)
  Process: 1455 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 1460 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 1458 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 1462 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─1462 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─1463 nginx: worker process

ExecStop 和 ExecStart 可能会帮助您识别二进制文件的位置。

答案3

master 是 Linux 服务器中 postfix 使用的。尝试使用以下命令停止 postfix

/sbin/service postfix stop

另外,如果你的配置不需要 postfix,你可以使用以下命令阻止它在服务器重新启动时重新启动

chkconfig postfix off

另外,从错误中可以清楚地看出,您正在尝试在 0.0.0.0:80 上启动 httpd。尝试在 httpd.conf 文件中使用 ip 地址以获取更具体的错误。

现在尝试停止并重新启动 httpd 服务。

相关内容