Cannot start apache httpd even though port 80 is not being used

Работа на экземпляре AWS ec2, немного контекста, я frontend парень, пытающийся решить проблему с производственным веб-сервером и исчерпал все знания по устранению неполадок/linux cli и вышел из своей зоны комфорта.

Я внес изменения в файл httpd.conf для добавления нового домена и следовал инструкциям, в которых говорилось, что нужно использовать sudo service httpd restart, чтобы внесенные изменения вступили в силу. Это вызвало ошибку, и теперь служба httpd остановлена, что означает, что ни один из наших сайтов не обслуживается.

Я пробовал следующие вещи, чтобы снова запустить службу httpd:

  • apachectl configtest возвращает синтаксис OK
  • sudo service httpd start возвращает следующую ошибку:
Redirecting to /bin/systemctl start httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

-> запускаю systemctl status httpd. service после этого выдает следующую информацию:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2021-01-18 16:00:20 UTC; 1min 20s ago
     Docs: man:httpd.service(8)
  Process: 5943 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 5943 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."

Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal httpd[5943]: [Mon Jan 18 16:00:20.317159 2021] [so:warn] [pid 5943] AH01574: module headers_module is already loaded, skipping
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Failed to start The Apache HTTP Server.
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Unit httpd.service entered failed state.
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: httpd.service failed.
[ec2-user@ip-172-31-38-82 ~]$ 
  • running sudo apachectl -k start выдает следующее предупреждение, но не ошибку:
[so:warn] [pid 5967] AH01574: module headers_module is already loaded, skipping
  • В другой теме я увидел, что что-то еще может быть запущено на порту 80 и использовать sudo netstat -lpAinet, чтобы увидеть, что еще запущено, что дало результат:
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      3246/sshd           
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN      3208/master         
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN      2750/rpcbind        
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*                           2971/dhclient       
udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*                           2750/rpcbind        
udp        0      0 localhost:323           0.0.0.0:*                           2772/chronyd        
udp        0      0 0.0.0.0:799             0.0.0.0:*                           2750/rpcbind

И ничего здесь не говорит о порте 80 или имеет имя программы apache.

  • Была еще одна команда, которой я пытался запустить службу httpd, но она выдала ошибку, говорящую о том, что служба не может быть привязана к порту 80 (сейчас я не могу найти, что это была за команда). В сообщении упоминалось, что служба httpd должна быть запущена с правами root, чтобы назначить номера портов ниже 1024. Я попробовал проверить свои права, используя sudo -l, и получил следующее:
User ec2-user may run the following commands on ip-172-31-38-82:
    (ALL) ALL
    (ALL) NOPASSWD: ALL

что похоже на то, что у меня есть правильные права для запуска.

И здесь я достиг предела, за которым мне было комфортно устранять неполадки самостоятельно.

1
задан 18 January 2021 в 18:24
1 ответ

Как предположил Эндрю Шульман в комментариях к моему вопросу, проблема была не в конфигурации, а в SSL-сертификате, используемом одним из доменов. Файлы certificate.crt и private.key не совпадали, что, конечно, было моей ошибкой, так как я пытался поменять их местами ранее.

После поиска сообщения об ошибке AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) AH00016: Configuration Failed, которое я нашел благодаря HermanB, я понял, что причиной проблемы была попытка обновления сертификата, и, конечно, обновление обеих частей сертификата устранило проблему.

0
ответ дан 24 April 2021 в 01:04

Теги

Похожие вопросы