Рейтинг:2

systemctl перезапустить httpd Не удалось запустить HTTP-сервер Apache httpd pid уже запущен

флаг cn

Простите перекрестный пост от Stack Overflow, но я понял, что это, вероятно, лучшее место, чтобы спросить.

Недавно я перестроил свой сервер на AWS, перейдя с Amazon Linux на Amazon Linux 2, который, как и Linux 1, кажется ответвлением CentOS, теперь CentOS 7. Конфигурация моего виртуального хоста остается такой же, как и в предыдущей сборке, в то время как все остальные файлы конфигурации более новые файлы по умолчанию. (Просто к вашему сведению, не уверен, что это имеет какое-то значение).

Так как ребилд я больше не могу делать systemctl перезапустить httpd. я получаю ошибку HTTP-сервер Apache httpd pid (NNNN) уже запущен.

я сделал много гугления и вижу, что эта ошибка есть у довольно многих людей, но она всегда оказывается чем-то разные что они сделали. Я не могу придумать ничего «другого», что я сделал.

Я узнал, что PID, который я вижу как «уже запущенный», принадлежащий root, является «главным процессом», а все остальные PID, принадлежащие apache, являются «рабочими процессами». CentOS httpd работает как пользователь root и apache

корень 4461 1 0 07:18 ? 00:00:00 /usr/sbin/httpd -k перезапустить
апач 4467 4461 0 07:18 ? 00:00:09 /usr/sbin/httpd -k перезапустить
апач 4468 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k перезапустить
апач 4471 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k перезапустить
апач 4477 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k перезапустить
апач 4498 4461 0 07:18 ? 00:00:07 /usr/sbin/httpd -k перезапустить
апач 5236 4461 0 07:19 ? 00:00:08 /usr/sbin/httpd -k перезапустить
апач 5248 4461 0 07:19 ? 00:00:09 /usr/sbin/httpd -k перезапустить
апач 5987 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k перезапустить
апач 5993 4461 0 07:20 ? 00:00:08 /usr/sbin/httpd -k перезапустить
апач 5994 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k перезапустить
# systemctl перезапустить httpd;systemctl status httpd;
Сбой задания для httpd.service. Подробности смотрите в "статусе systemctl httpd.service" и "journalctl -xe".
httpd.service — HTTP-сервер Apache
   Загружено: загружено (/usr/lib/systemd/system/httpd.service; отключено; настройка поставщика: отключена)
   Активно: не удалось (Результат: протокол) с четверга 23 декабря 2021 г. 19:56:05 UTC; 4 мс назад
     Документы: man:httpd.service(8)
  Процесс: 31799 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (код=выход, статус=0/УСПЕХ)
 Основной PID: 31799 (код=выход, статус=0/УСПЕХ)
   Статус: "Чтение конфигурации..."

23 декабря 19:56:04 ip-10-5-11-55.ec2.internal systemd[1]: запуск HTTP-сервера Apache...
23 декабря 19:56:05 ip-10-5-11-55.ec2.internal httpd[31799]: httpd (pid 4461) уже запущен
23 декабря, 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: не удалось запустить HTTP-сервер Apache.
23 декабря, 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: модуль httpd.service перешел в состояние сбоя.
23 декабря, 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: ошибка httpd.service.

Ничего необычного в журнале ошибок Apache:

[Чт, 23 декабря, 07:18:58.777745 2021] [suexec:notice] [pid 4460] AH01232: механизм suEXEC включен (оболочка: /usr/sbin/suexec)
[Чт, 23 декабря, 07:18:58.802753 2021] [lbmethod_heartbeat:notice] [pid 4461] AH02282: Нет slotmem от mod_heartmonitor
[Чт, 23 декабря, 07:18:58.802850 2021] [http2:warn] [pid 4461] AH10034: модуль mpm (prefork.c) не поддерживается mod_http2. MPM определяет, как вещи обрабатываются на вашем сервере. HTTP/2 имеет больше
[Чт, 23 декабря, 07:18:58.847386 2021] [mpm_prefork:notice] [pid 4461] AH00163: настроен Apache/2.4.51 () PHP/7.4.21 – возобновление нормальной работы
[Чт, 23 декабря, 07:18:58.847414 2021] [core:notice] [pid 4461] AH00094: Командная строка: '/usr/sbin/httpd'

Если я убью этот «главный» PID, то смогу перезапустить без проблем.

# убить 4461
# systemctl перезапустить httpd;systemctl status httpd;
httpd.service — HTTP-сервер Apache
   Загружено: загружено (/usr/lib/systemd/system/httpd.service; отключено; настройка поставщика: отключена)
   Активно: активно (работает) с чт 23 декабря 2021 г., 20:01:31 UTC; 6 мс назад
     Документы: man:httpd.service(8)
 Основной PID: 3091 (httpd)
   Статус: «Конфигурация загружена».
   Группа CG: /system.slice/httpd.service
           ââ3091 /usr/sbin/httpd-DFOREGROUND

23 декабря 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: запуск HTTP-сервера Apache...
23 декабря, 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: Запущен HTTP-сервер Apache.
# пс-Af | grep httpd
корень 3145 1 1 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ
апач 3147 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ
апач 3153 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ
апач 3171 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ
апач 3177 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ
апач 3183 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd-DFПЕРЕЗЕМЛЯ

Совет большинства людей - "просто убить процесс", Apache не запускается, уже работает, но не обрабатывает файл pid? но мне нужно, чтобы это работало без присмотра. На что еще я мог смотреть?

digijay avatar
флаг mx
_"Модуль mpm (prefork.c) не поддерживается mod_http2":_ сначала исправьте это, изменив на `mpm_worker` или `mpm_event`
флаг cn
@digijay Да, я знаю, но есть проблемы с балансировкой нагрузки HTTP2 и AWS, поэтому меня это не беспокоит.И это предупреждающее сообщение присутствовало на старом сервере, поэтому оно связано с текущей проблемой.
флаг cn
я имел в виду "не связанное"
Рейтинг:0
флаг cn

Хотя я много искал, я не нашел ответов, которые были даны для других разновидностей Linux.Я пришел к ответу, когда заметил, что httpd изначально был запущен с «apachectl», и я пытался перезапустить с помощью «systemctl» и подумал, что это может быть проблемой. Когда я искал это, я нашел много ответов. Это кажется наиболее кратким: https://unix.stackexchange.com/questions/240528/apache-and-systemd

В других вы видите ту же проблему, с которой столкнулся я: как только вы начнете с apachectl, вы должны придерживаться его, поскольку systemd не может знать, что вы сделали с apachectl, поскольку он использует другую конфигурацию.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.