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, там ничего нет.
Я думаю, я хочу сделать две вещи.
Выясните, почему Apache падает. Почини это
Конфигурация где 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 "