Apache2 тихо ломается, не сделает apache2.pid

Когда я запускаю # /etc/init.d/apache2 restart, он с радостью заявляет, что запустил программу, но на самом деле этого не сделал. Вывод идет примерно так.

 www ~ # /etc/init.d/apache2 restart 
* Остановка apache2 ... [Sun Oct 25 23:50:38 2009] [warn] Бесполезное использование AllowOverride в строке 63 файла /etc/apache2/vhosts.d/30_subversion_ssl_vhost.conf. [Sun Oct 25 23:50:38 2009] [warn] NameVirtualHost --removed -:443 не имеет виртуальных хостов [Вс 25 октября 23:50:38 2009] [warn] NameVirtualHost --removed1 -:8443 не имеет виртуальных хостов httpd (без pid-файла) не работает [ок] * Запуск apache2 ... [Sun Oct 25 23:50:38 2009] [warn] Бесполезное использование AllowOverride в строке 63 of /et с / apache2 / vhosts.d / 30_subversion_ssl_vhost.conf. [Sun Oct 25 23:50:38 2009] [warn] NameVirtualHost --removed -:443 не имеет виртуальных хостов [Вс 25 октября 23:50:38 2009] [warn] NameVirtualHost --removed1 -:8443 не имеет виртуальных хостов [ Хорошо ]

Как видите, ни один процесс httpd никогда не выполнялся, несмотря на то, что он утверждал, что запускался раньше, как это происходит здесь снова. Проверка вручную, /var/run/apache2/apache2.pid не существует. Директории run / apache2 / не было даже там, пока я не добавил и не разбил ее вручную. Ничего не добавлено ни в / var / log / apache2 / error_log, ни в какие-либо доменные журналы ни для одного из моих vhosts.

Однако, работая с опциями --verbose и --debug, кажется, что он зацикливается на цикле for, включающем каталог /var/run/apache2/apache2.pid

+ я = 0 
+ '[' '!' -e /var/run/apache2.pid ']'
+ '[' 0 -lt 10 ']'
+ сон 1
++ expr 0 + 1
+ я = 1
+ '[' '!' -e /var/run/apache2.pid ']'
+ '[' 1 -lt 10 ']'
+ сон 1
++ expr 1 + 1
...

Я использую Apache 2.2 в последней сборке Gentoo Linux. Конфигурационные файлы vhosts.d были импортированы из предыдущей настройки, к вашему сведению, но все файлы httpd.conf и связанные с ними совершенно новые.

редактировать: при дальнейшем расследовании вызов скрипта apache2 init

/usr/sbin/apache2 -D DEFAULT_VHOST -D ИНФОРМАЦИЯ -D SSL -D SSL_DEFAULT_VHOST \
-D ЯЗЫК -d /usr/lib/apache2 -f /etc/apache2/httpd.conf -k start
Если я удаляю часть -D SSL, pid создает себя нормально... однако, я хотел бы ssl... есть идеи?

edit2:

start() {
        checkconfig || return 1

        [ -f /var/log/apache2/ssl_scache ] && rm /var/log/apache2/ssl_scache

        ebegin "Starting ${SVCNAME}"
        ${APACHE2} ${APACHE2_OPTS} -k start

        i=0
        while [ ! -e "${PIDFILE}" ] && [ $i -lt ${TIMEOUT} ]; do
                sleep 1 && i=$(expr $i + 1)
        done

        test $i -le ${TIMEOUT}
        eend $?
}

Если это обеспечит дальнейшее понимание, дайте мне знать

Edit3:

если в моем ssl vhosts я закомментирую SSLEngine on, apache успешно запускается...

edit4:

Просто посмотрите на мои варианты сборки Apache

www ~ # emerge -av apache

Это пакеты, которые будут объединены в следующем порядке:

Расчет зависимостей |... готово!
[ebuild   R   ] www-серверы /apache-2.2.11-r2  USE="sni ssl -debug -doc -ldap (-s
elinux) -static -suexec -threads" APACHE2_MODULES=" псевдоним действий asis auth_diges
t authz_host кэш автоиндекса dav deflate dir env expires заголовки фильтра включают
info log_config logio mime согласование прокси переписать setenvif орфография статус использовать
rdir usertrack -auth_basic -authn_alias -authn_anon -authn_dbd -authn_dbm -authn
_default -authn_file -authz_dbm -authz_default -authz_groupfile -authz_owner -au
thz_user -cern_meta -charset_lite -dav_fs -dav_lock -dbd -disk_cache -dumpio -ex
t_filter -file_cache -ident -imagemap -log_forensic -mem_cache -mime_magic -prox
y_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -substitute -unique_
id -version -vhost_alias" APACHE2_MPMS="- событие -itk -peruser -prefork -worker" 0
 кБ

Всего: 1 пакет (1 переустановка), Размер загрузок: 0 КБ

Хотите ли вы объединить эти пакеты? [Да нет] 

А также проверка контрольных сумм

www ~ # equery check apache
[Проверка www-серверов /apache-2.2.11-r2 ]!!! /etc/apache2/vhosts.d/00_default_vhost.conf имеет неверный md5sum!!! /etc/conf.d/apache2 имеет неправильную md5sum!!! /etc/apache2/vhosts.d/00_default_ssl_vhost.conf имеет неверную сумму md5sum
 * 403 файла из 406 хороших

edit5:

Woo! Редактировать 5!

Запуск запуска после изменения соответствующей строки в /etc/conf.d/apache2 в APACHE2_OPTS="-X -e debug -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5

 * Запуск apache2...
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль actions_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль alias_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль asis_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль authz_host_modul
е
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль autoindex_module

[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль cgi_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль deflate_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль dir_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль env_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль expires_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль filter_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль headers_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль include_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль info_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль log_config_modul
е
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль logio_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль mime_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль gotiation_modu
ле
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль rewrite_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль setenvif_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль speling_module
[Вторник, 27 октября 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль ssl_module
[Вт окт 27 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль usertrack_module

[Вт окт 27 23:15:19 2009] [debug] mod_so.c(246): загруженный модуль php5_mod  [ ok ]

Пока нет подсказок. Кроме того, не уверен, как проверить конфигурацию ssl, если это действительно проблема

3 ответа

Решение

Хм, я довольно подозрительно отношусь к файлу конфигурации

/etc/apache2/vhosts.d/30_subversion_ssl_vhost.conf

При удалении "-D SSL" вы пропустите все части файлов конфигурации, которые заключены в.... Файл SSL vhost по умолчанию в моей коробке Gentoo обернут в этот тег, поэтому мне интересно, если, удалив '-D SSL', вы вообще запретите запуск конфигурации в 30_subversion_ssl_vhost.conf, и если это то, что разрешает Apache начать.

Если вы временно удалите файл 30_subversion_ssl_vhost.conf из /etc/apache2/vhosts.d, запускается ли Apache? Есть ли какие-либо другие файлы vhost.conf, связанные с SSL, в vhosts.d? Моя довольно свежая / неиспользуемая директория vhosts.d установки Apache выглядит так:

# pwd && ls
/etc/apache2/vhosts.d
00_default_ssl_vhost.conf  00_default_vhost.conf  default_vhost.include

редактировать 1:

Так много для этой теории:) Теперь мне интересно, если проблема в самой настройке Apache SSL. Я прошу прощения, если я нахожусь на земле, которую вы уже проверили, но мне интересно, если вы могли бы сделать следующее, чтобы помочь проверить вашу установку Apache.

На моей установке Apache с работающим SSL флаги использования следующие:

# emerge -av apache

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] www-servers/apache-2.2.11-r2 [2.2.11] USE="ssl -debug -doc -ldap (-selinux) -sni -static -suexec -threads" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias -asis -auth_digest -authn_dbd -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -log_forensic -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -substitute -version" APACHE2_MPMS="-event -itk -peruser -prefork -worker" 64 kB

В частности, у вас есть установленный USE-флаг 'ssl'?

Кроме того, не могли бы вы использовать equery для проверки целостности вашей установки apache2? Если у вас нет команды equery, вы можете установить ее с помощью команды emerge -av gentoolkit. Следующая команда должна проверить целостность вашей установки apache:

equery check apache

На моем сервере приведенная выше команда дает следующий вывод:

[ Checking www-servers/apache-2.2.11 ]
!!! /etc/apache2/vhosts.d/00_default_ssl_vhost.conf has wrong mtime (is 1256620928, should be 1246793824)
!!! /etc/apache2/modules.d/00_default_settings.conf has wrong mtime (is 1246796304, should be 1246793824)
!!! /etc/conf.d/apache2 has incorrect md5sum
 * 429 out of 432 files good

редактировать 2:

Что ж, установка выглядит хорошо для меня, особенно для теории 2. Мне интересно, можем ли мы уговорить Apache предоставить больше информации о запуске. В /etc/conf.d/apache2, если вы изменили строку APACHE2_OPTS с:

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"

в

APACHE2_OPTS="-X -e debug -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"

и затем запустите Apache (/etc/init.d/apache2 start), демон должен оставаться на переднем плане (флаг -X) и выводить сообщения об отладке при запуске (опция -e debug). Может быть, это даст понять, почему он умирает при запуске.

Скрипт обращается к /var/run/apache2.pid, а не к /var/run/apache2/apache2.pid. Можете ли вы проверить, есть ли у /var/run/apache2.pid права доступа?

Каким-то образом, после создания моих собственных файлов.crt и.key, попробуйте emerge mod_ssl, который в конечном итоге делал кучу вещей и заново собирал apache, все как-то стало на свои места. У меня нет объяснения, за исключением, может быть, некоторого предыдущего несоответствия с тем, как я создавал свои файлы.crt и.key:/

Это путешествие оставило меня чувствовать себя пустым и неудовлетворенным. Ну, кроме вашей помощи:] Спасибо всем.

Другие вопросы по тегам