httpd и nginx работают, но не обрабатывают запросы

archive view archive save

article После обновления с репозитория CentALT методом "yum --disableplugin=priorities,versionlock update" сервер перестал подавать признаки жизни... При этом httpd и nginx сервисы были перезапущены и не выдавали никаких ошибок в лог. файлы.

--disableplugin=priorities,versionlock - время от времени используется для проверки наличия самых актуальных версий серверного ПО со сторонних репозиториев, отличных от репозиториев самой ОС. Уже давно в родном репозитории зависла версия Apache 2.2.15, в то время когда самая свежая 2.2.25, nginx 1.4.1, в то время когда в nginx репозитории данным давно nginx 1.4.2, а в сторонних репозиториях nginx 1.5.2. Тоже самое касается openssh, postfix и прочего ПО.

Проверив "yum --disableplugin=priorities,versionlock update" наличие обновлений, были выбраны "yum --disableplugin=priorities,versionlock update httpd nginx", после обновления которых сервер Apache/Nginx затих и перестал выдавать контент...

httpd и nginx были переустановлены, после чего были заново установлены поочередно, httpd и nginx работают, но не обрабатывают запросы. Причина оказалась в новой версии nginx 1.5.2-1.el5 полученной с репозитория CentALT.

Но даже обновив Апач до версии 2.2.25:

yum --disableplugin=priorities,versionlock update httpd httpd-tools mod_fcgid

перезапустить его обычным образом не удалось:

sh-4.1# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address
 127.0.0.1:81
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

Пришлось поступить таким образом:

service nginx stop && service httpd stop
# но httpd так и не остановлен, убиваем жестко...
pkill httpd
service httpd start && service nginx start

Все заработало хорошо - АДминь. Очень важно иметь на рабочем сервере самые актуальные и свежие (стабильные) версии серверного ПО, но как показала практика в родных репозиториях это ПО не особо то спешит обновляться, а сборки со сторонних репозиториев могут таить в себе различные "глюки" или "баги" или например могут забыть вставить в пакет проверку наличия какой-то зависимости.

При всём при этом на одной машине CentOS 6 86_64 nginx 1.5.2 из репозитория CentALT (http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm) установился и работает успешно, а на другой машине CentOS 6 такой же архитектуры 86_64 nginx 1.5.2 чем-то косячит, а чем именно понять не реально имхо в лог файлы зараза ничего не пишет, а в браузер на "HTTP Request" выдаёт "Unconditional request sent for http://example.com/ ERROR_INTERNET_CONNECTION_RESET".

Таким же медным тазом накрылась установка nginx 1.5.2 на CentOS 5 i386 (http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm) - парадокс? А шайтан его знает... Может для nginx 1.5.2 собранного на alt.ru не хватило каких-то библиотек, ибо ведь на одинаковых ОС (CentOS 6 86_64) разное поведение? Но по факту во время установки nginx 1.5.2 никакие зависимости не подтянулись! Забыли в пакете установки nginx 1.5.2 включить зависимости? Вероятно...

На одной машине пришлось откатить nginx 1.5.2 до nginx 1.4.2 из родного (http://nginx.org/packages/centos/6/$basearch/) nginx репозитория.

Отсюда мораль: если родные репозитории для CentOS (или другой ОС) оч. отстают в плане обновлений для серверного ПО и мы решили использовать сторонние репозитории, то обновляться со сторонних репозиториев нужно т.с. возвратно поступательными движениями - т.е. обновлять каждый сервис (пакет, демон) по отдельности вместе с его зависимостями (разумеется), чтобы потом не переустанавливать всё кучей по ходу вырывая волосы на попе!:)

Возможно также иногда будет полезно (хотя и не факт) пересобрать БД rpm пакетов предварительно удалив злобные lock-файлы:

rm -f /var/lib/rpm/__db*
rpm --rebuilddb
yum clean all
yum upgrade

P.S. Разница между "yum upgrade" и "yum update" в том, что update только устанавливает новые версии, а upgrage плюс ещё и удаляет старые. В Дебиане малость иначе - apt-get update обновляет данные о содержимом репозиториев, а upgrade обновляет установленные пакеты. Безглючных Вам обновлений!;)


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора
Комментарии в блоге
Новое на форуме