Apache2 падает

На моем сервере разработчиков. Иви так часто apache2 просто падает. Его больше не работает как процесс.

Информация о сервере: Linux Debian etch Apache2

# ps aux | grep apache
www-data  6782 99.9  0.2   4792  2912 ?        R    Oct12 8592:53 /usr/sbin/apache/log
root     22418  0.0  0.0   2852   704 pts/2    S+   13:31   0:00 grep apache

# apache2ctl restart
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Когда я проверяю /var/log/apach2/error.log, там ничего нет.

Я думаю, я хочу сделать две вещи.

  1. Выясните, почему Apache падает. Почини это

  2. Конфигурация где nessacary, чтобы это больше не повторилось и, может быть, лучше настроить файлы журналов?

Если я перезапущу машину, я смогу снова запустить и запустить Apache. Кто-нибудь может объяснить, что здесь происходит?

Спасибо Дерек

4 ответа

Решение

Боюсь, вы могли быть взломаны. Я бы запустил инструмент, который проверяет наличие рута и ищет любые мошеннические php-скрипты. Проверьте /tmp на наличие каких-либо странных файлов или скриптов. Я думаю, что у Debian есть rkhunter в подходящих репозиториях. Удачи.

Первое, что я хотел бы сделать, это найти файл / usr / sbin / apache / log и посмотреть, что это за чертовщина. Это выглядит очень странно. Даже если он выглядит как действительный двоичный файл, попробуйте "strings /usr/sbin/apache/log | less", чтобы найти что-нибудь подозрительное.

ps должен отображать выполненную команду там, afaik, и никакая команда, подобная / usr / sbin / * / log, не должна существовать. В моей системе (Ubuntu) ps перечисляет / usr / sbin / apache2. Я также регулярно использую debian, и, насколько я помню, в Debian настройки идентичны. Также проверьте вывод "pgrep -l apache".

Если вы обнаружите, что происходит что-то нормальное (т. Е. Ваш сервер не был взломан), вы можете попытаться убедиться, что у вас нет многопоточного mpm, который несовместим с каким-либо модулем (особенно php). Также проверьте такие вещи, как дисковое пространство, разрешения и т. Д. Apache любит сдаваться и падать, если его файлы журнала недоступны, но обычно это происходит при запуске. Нечто подобное может происходить с файлами, которые не открываются до позднего времени (хотя я не могу представить, что это будут за файлы - htaccess и файлы паролей должны изящно выходить из строя).

Похоже, что pid 6782 - это процесс apache, так почему вы думаете, что он не работает? Этот процесс, вероятно, удерживает порт 80 открытым, поэтому вы не можете запустить новый.

Я готов поспорить, что то, что убивает, это "перезапуск", который происходит при вращении файлов журнала. Но вы не будете знать, пока это не произойдет снова, и вы можете получить как реальный вывод "ps", так и, возможно, "strace" или "truss" в зависшем процессе.

Единственный раз, когда я увидел что-то подобное, это когда сетевой интерфейс не был настроен, и Apache вроде запустился, а просто завис. Если ваша система настроена на назначение IP по DHCP, это может быть слабым местом. Конечно, если вы подключены к тому же интерфейсу, который слушает Apache, это не проблема!

Возможно, выясните, что прослушивает порт 80 таким образом:

lsof -Pni | grep ":80 "
Другие вопросы по тегам