У меня есть коробка, которую мне вручили, и я даже не могу запустить базовый сервер Apache. Он устанавливается через yum (я удалил и установил его), и когда я запускаю службу (запуск службы httpd), он говорит «ОК», но нет pid. Статус показывает, что не работает.
В error_log есть следующее:
[Wed Feb 13 16:16:36 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Feb 13 16:16:36 2013] [notice] Digest: generating secret for digest authentication ...
[Wed Feb 13 16:16:36 2013] [notice] Digest: done
/usr/sbin/httpd: symbol lookup error: /usr/lib64/libaprutil-1.so.0: undefined symbol: apr_os_uuid_get
Я предполагаю, что это не запускается из-за последней строки. Предложения?
ldd $(which httpd)
linux-vdso.so.1 => (0x00007fff9edff000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4c8815c000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f4c87f30000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4c87d10000)
libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 (0x00007f4c87aec000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f4c878b5000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f4c8768c000)
libdb-4.7.so => /lib64/libdb-4.7.so (0x00007f4c87318000)
libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00007f4c870e9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4c86ecb000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4c86b38000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4c86934000)
/lib64/ld-linux-x86-64.so.2 (0x000000369be00000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f4c8672f000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f4c864cd000)
librt.so.1 => /lib64/librt.so.1 (0x00007f4c862c5000)
а) Обновите все пакеты, предоставляемые ОС:
yum clean all # Clean yum cache so all fresh data will be downloaded
yum --disablerepo='*' --enablerepo=base --enablerepo=updates update
б) Проверьте, установлены ли какие-либо дополнительные пакеты, кроме доступных из репозиториев CentOS по умолчанию - base
и updates
:
yum clean all # Clean yum cache so all fresh data will be downloaded
yum --disablerepo='*' --enablerepo=base --enablerepo=updates list extras
Если есть какие-либо, которые выглядят актуальными, отключите все репозитории, кроме этих двух, и понизьте / обновите эти пакеты до версий, предоставленных для распространения.
в) Проверить файлы всех пакетов:
rpm -Va
Только измененные файлы конфигурации должны быть напечатаны как измененные (ищите цифру «5» на 3-м символе каждой напечатанной строки). Конечно ничего в /lib
, /lib64
, /usr/lib
, /usr/lib64
, /bin
или /usr/bin
. Если что-то там было изменено, то похоже, что кто-то перезаписал двоичные файлы, предоставленные дистрибутивом - либо администратор без понятия, либо хакер в черной шляпе с руткитом. В этом случае вы можете переустановить пакеты, содержащие эти измененные двоичные файлы, но рекомендуется полная переустановка, так как очень трудно узнать, что еще было изменено (возможно, установка того же набора пакетов на другой компьютер или виртуальную машину и сравнение).
г) Если ничего из вышеперечисленного не помогает, я бы заподозрил сложный руткит. Тогда настоятельно рекомендуется полная переустановка.
Я столкнулся с этой проблемой на centos 5.8. Перед удалением пакетов проверьте свой / usr / local / lib - кто-то установил на этот сервер более позднюю версию apr и вызвал эту проблему (subversion запускается на этом сервере с помощью dav, поэтому мне нужен был httpd для запуска).
Вы можете проверить это: / usr / sbin / httpd -V
выходной Сервер загружен: APR 1.3.3, APR-Util 1.2.7 Скомпилировано с использованием: APR 1.2.7, APR-Util 1.2.7
APR 1.3.3 находился в / usr / local / lib. Я переместил библиотеку / usr / local / lib (я знаю, что это плохо), а затем запустился httpd.
После просмотра информации ldd, похоже, что ваш двоичный файл httpd скомпилирован с использованием других библиотек, чем те, которые установлены в настоящее время. Я бы удалил столько зависимостей apache, сколько можно было сделать, и переустановил их. Однако, прежде чем вы это сделаете, я бы также проверил, установлены ли у вас нестандартные репозитории yum. Некоторые сторонние репозитории yum известны тем, что вызывают ужасные конфликты, которые в чем-то похожи на эти.
Для начинающих:
yum remove apr-devel apr-util-devel httpd
К сожалению, даже если это решит проблему, возможно, вы уже по уши в несовместимости системы. Похоже, что тот, кто администрировал эту систему до вас, либо скомпилировал что-то из исходников, установил несовместимые RPM, либо неправильно использовал сторонние репозитории. Вы можете потратить меньше времени на переустановку системы, чем на попытки ее очистить.
У меня сегодня была аналогичная проблема на centos 6.5. сообщение об ошибке было:
"/ usr / sbin / httpd: ошибка поиска символа: /usr/lib64/libapr-1.so.0: неопределенный символ: dlopen"
Я перекомпилировал apache 2.4.10 с apr-1.5.1 и apr-util 1.5.3 из исходного кода в соответствии с инструкциями INSTALL.
Я скачал исходники в / root. переместил исходный код apr и apr-util в srclib /, как указано в INSTALL.
./configure --with-included-apr
make
make install
это создало новые httpd и lib в / usr / local / apache2 / lib
Я сравнил файлы lib в / usr / lib64 с / usr / local / apache2 / lib и увидел, что они различаются по размеру.
Я скопировал недавно скомпилированный libapr-1.so.0 в / usr / lib64, и это решило проблему.
service httpd start
[ХОРОШО}
Я тоже запускаю php-fpm, так что тоже начал:
service php-fpm start
[ХОРОШО]
снова в деле! Это может помочь кому-то другому решить эту проблему.