Невозможно перезапустить HTTPD на CentOS 7

Невозможно перезапустить HTTPD на CentOS 7

У меня есть экземпляр под управлением 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

Хорошо, загадка раскрыта; спасибо Джеральду Шнайдеру. (Хотя, к счастью, это был не троян)

Выполнение 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 используется postfix в серверах linux. Попробуйте остановить postfix следующей командой

/sbin/service postfix stop

Также, если postfix не требуется для вашей конфигурации, вы можете отключить его перезапуск при перезагрузке сервера с помощью следующей команды:

chkconfig postfix off

Также из ошибки ясно, что вы пытаетесь запустить httpd на 0.0.0.0:80. Попробуйте использовать IP-адрес в файле httpd.conf вместо этого, чтобы получить более конкретную ошибку.

Теперь попробуйте остановить и перезапустить службу httpd.

Связанный контент