apache2 не запускается после корректного перезапуска

Сегодня мой экземпляр apache был автоматически перезапущен каким-то заданием cron, после чего он не работал. Файл журнала ошибок apache показывает:

[Fri Jun 03 06:25:04.379685 2016] [mpm_prefork:notice] [pid 8256] AH00171: Graceful restart requested, doing restart
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 2 of /etc/apache2/mods-enabled/access_compat.load: Cannot load /usr/lib/apache2/modules/mod_access_compat.so into server: /usr/lib/apache2/modules/mod_access_compat.so: undefined symbol: ap_get_useragent_host

После запуска вручную через

service apache2 start

он работал, как ожидалось.

Я уже отключил автоматические обновления безопасности на этом Ubuntu 14. 04, потому что на прошлой неделе у меня была аналогичная проблема, когда она напечатала

[Thu May 26 06:27:29.737707 2016] [mpm_prefork:notice] [pid 1487] AH00171: Graceful restart requested, doing restart
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /lib/x86_64-linux-gnu/libm.so.6: symbol __strtold_nan, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

Это какое-то состояние гонки? Почему несколько раз не удается загрузить модули?

ОБНОВЛЕНИЕ

Строка, упомянутая в ошибке, выглядит как

LoadModule access_compat_module /usr/lib/apache2/modules/mod_access_compat.so

, поэтому в этой строке нет синтаксической ошибки, и я ничего не менял, чтобы запустить ее снова , просто запустите apache снова.

1
задан 4 June 2016 в 09:39
1 ответ

Томас, мне было бы интересно узнать, нашли ли вы решение своей проблемы. Эта ошибка коснулась меня сегодня утром. По иронии судьбы, он срабатывает каждый раз, когда Apache выполняет изящную перезагрузку. Тем не менее, запуск apache2 restart для перезапуска сервера работает без проблем. Изящная перезагрузка, с которой я столкнулся, была частью пост-процесса сценария ротации журнала для apache (/etc/logrotate.d/apache2). Здесь выполняется постепенная перезагрузка, чтобы освободить старые файлы журналов, чтобы они больше не занимали дисковое пространство. Я временно изменил это в своей работе, чтобы использовать перезапуск вместо перезагрузки, таким образом избежав проблемы.

Сообщение об ошибке в журнале указывает на модуль mod_access_compat как на проблему, это основной модуль, который я не могу обойтись без этого. Итак, я начал исследовать и сравнивать различия. Эта проблема затронула меня только после того, как я обновился с 2.4.16 до 2.4.20 (и 2.4.23 на другом сервере). Похоже, что в 2.4.19 есть изменение, которое предлагает всем модулям использовать ap_get_useragent_host вместо старой функции ap_get_remote_host для получения удаленного IP-адреса посетителя. Я решил загрузить последний исходный код (2.4.23) и изменить эту строку в mod_access_compat.c (строка 279) обратно на то, что было ранее в более старой версии: remotehost = ap_get_remote_host (r-> connection, r-> per_dir_config, REMOTE_DOUBLE_REV , & remotehost_is_ip);

Перекомпилировав apache, я скопировал новый mod_access_compat.so в папку с модулями, заменив поставляемый. С тех пор я смог без проблем перезагружаться и перезагружаться. Хотя я еще не переместил это обновление на свой рабочий сервер, я сделаю это через несколько часов.

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

Ваш пробег может отличаться, удачи!

ОБНОВЛЕНИЕ Я собрал свои выводы и отправил разработчикам Apache отчет об ошибке. Они предположили, что серверу нужна полная остановка и запуск, потому что после обновления некоторые компоненты все еще находились в памяти. Я протестировал снова, и плавная перезагрузка работала нормально - без замены модуля - на производственных серверах. Так что, по-видимому, это одноразовая ошибка, которая возникает в процессе фактического обновления, потому что он должен останавливаться / запускаться, а не перезапускать сервер. Для всех, кто может это испытать; просто остановите сервер и запустите его снова.

Вот отчет об ошибке, который я подал (на самом деле я ожидаю, что он будет отмечен как не связанный с ошибкой): https://bz.apache.org/bugzilla/show_bug. cgi? id = 59842

3
ответ дан 3 December 2019 в 18:34

Теги

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