![Невозможно перезапустить HTTPD на CentOS 7](https://rvso.com/image/726390/%D0%9D%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%20HTTPD%20%D0%BD%D0%B0%20CentOS%207.png)
У меня есть экземпляр под управлением 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.