Работа на экземпляре 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 ~]$
sudo apachectl -k start
выдает следующее предупреждение, но не ошибку:[so:warn] [pid 5967] AH01574: module headers_module is already loaded, skipping
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.
sudo -l
, и получил следующее:User ec2-user may run the following commands on ip-172-31-38-82:
(ALL) ALL
(ALL) NOPASSWD: ALL
что похоже на то, что у меня есть правильные права для запуска.
И здесь я достиг предела, за которым мне было комфортно устранять неполадки самостоятельно.
Как предположил Эндрю Шульман в комментариях к моему вопросу, проблема была не в конфигурации, а в SSL-сертификате, используемом одним из доменов. Файлы certificate.crt
и private.key
не совпадали, что, конечно, было моей ошибкой, так как я пытался поменять их местами ранее.
После поиска сообщения об ошибке AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) AH00016: Configuration Failed
, которое я нашел благодаря HermanB, я понял, что причиной проблемы была попытка обновления сертификата, и, конечно, обновление обеих частей сертификата устранило проблему.