Назад | Перейти на главную страницу

Не удается запустить HTTPD после обновления

Я не могу начать свою прежнюю работу httpd(2.4.6) после обновления моего экземпляра (CentOS 7).

Я сначала проверил статус через systemctl status 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 Wed 2018-12-05 09:05:37 CET; 6s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 8033 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 8032 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 8032 (code=exited, status=1/FAILURE)

Dec 05 09:05:37 vps systemd[1]: Starting The Apache HTTP Server...
Dec 05 09:05:37 vps systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 05 09:05:37 vps kill[8033]: kill: cannot find process ""
Dec 05 09:05:37 vps systemd[1]: httpd.service: control process exited, code=exited status=1
Dec 05 09:05:37 vps systemd[1]: Failed to start The Apache HTTP Server.
Dec 05 09:05:37 vps systemd[1]: Unit httpd.service entered failed state.
Dec 05 09:05:37 vps systemd[1]: httpd.service failed.

Не очень полезно, нет конкретного сообщения об ошибке, которое могло бы указать мне куда-то. Поэтому я сделал apachectl configtest который показал проблему с файлом сертификата Let's Encrypt не там, где он должен быть, либо пустым. Также упоминается та же проблема Вот.

Это странно, потому что, как и в проблеме, на которую я указал выше, сертификат существует и openssl может работать.

В соответствии с предложением из вышеуказанной проблемы я рекурсивно изменил разрешения /etc/letsencrypt/archive и /etc/letsencrypt/live на 0755.

Сейчас apachectl configtest ни на что не жалуется и выводит синтаксис как нормально.

Однако мой httpd все еще не начинается с того же самого systemctl сообщение, как указано выше.

Что мне здесь не хватает?

p.s. Я также проверил любые другие httpd процессы в системе, чтобы убить их; на 80-м порту ничего не было.

Обновить

Мой журнал ошибок Apache:

[Sun Nov 25 03:37:10.247181 2018] [auth_digest:notice] [pid 866] AH01757: generating secret for digest authentication ...
[Sun Nov 25 03:37:10.249196 2018] [lbmethod_heartbeat:notice] [pid 866] AH02282: No slotmem from mod_heartmonitor
[Sun Nov 25 03:37:10.252624 2018] [ssl:warn] [pid 866] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun Nov 25 03:37:10.257286 2018] [ssl:warn] [pid 866] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Sun Nov 25 03:37:10.288880 2018] [mpm_prefork:notice] [pid 866] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.12 configured -- resuming normal operations
[Sun Nov 25 03:37:10.288906 2018] [core:notice] [pid 866] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Sun Dec 02 03:46:09.992864 2018] [mpm_prefork:notice] [pid 866] AH00171: Graceful restart requested, doing restart

Я наконец-то понял.

Похоже, возникла проблема с моими журналами ошибок / запросов, которые я использовал для своих доступных сайтов.

Он не направлял меня туда должным образом через собственные статусные сообщения Apache (на самом деле Apache был немного загадочным через systemctl status httpd или journalctl -xe), но с комментариями выше я смог отследить это там, и однажды я:

  • удалил все мои прошлые файлы журналов (они были действительно беспорядочными),
  • правильно назвали их в файлах конфигурации (выберите универсальную схему именования и придерживайтесь ее),
  • создал эти с указанными выше именами,

Apache смог перезапустить.

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