Доброго времени суток всем.Возникла проблема - устанавливаю Apache с поддержкой загружаемых модулей - он не стартует.
Апач apache_1.3.37 компилируется из исходников с динамически подключаемыми модулями:./configure --prefix=/usr/local/apache --disable-module=asis --disable-module=autoindex --disable-module=imap --disable-module=userdir --disable-module=actions --disable-module=include --disable-module=negotiation --disable-module=setenvif --disable-module=status --disable-module=alias --disable-module=cgi --disable-module=env --enable-module=so --enable-shared=access --enable-shared=auth --enable-shared=dir --enable-shared=log_config --enable-shared=mime
Компиляция и установка без проблем. Создаётся каталог /usr/local/apache/libexec/ в который попадают файлы mod_access.so, mod_dir.so, mod_mime.so, mod_auth.so, mod_log_config.so.
В httpd.conf прописыватся строки:
LoadModule config_log_module libexec/mod_log_config.so
LoadModule mime_module libexec/mod_mime.so
LoadModule dir_module libexec/mod_dir.so
LoadModule access_module libexec/mod_access.so
LoadModule auth_module libexec/mod_auth.soClearModuleList
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_so.cПроверка скомпилированных модулей:
# /usr/local/apache/bin/httpd -l
Compiled-in modules:
http_core.c
mod_so.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexecКаталог /usr/local/apache и всё вложенное принадлежит пользователю www.
В httpd.conf прописано:
User www
Group wwwПри старте:
# /usr/local/apache/bin/apachectl start
Syntax error on line 27 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/mod_log_config.so into server: Service unavailable
/usr/local/apache/bin/apachectl start: httpd could not be startedВ лог в /usr/local/apache/logs/ вообще ничего не пишется, файл error_log не создаётся (т.к. httpd не стартует).
При компиляции всех этих модулей статически всё проходит прекрасно, httpd стартует.
Всю эту байду с подключением динамических модулей я затеял из-за необходимости подключить PHP, с динамическим модулем которого (libphp5.so) были те же проблемы.
Если кто сталкивался - подскажите где грабли.
я тоже пытался подрубить ПХП5 а апачи, но у меня них не получалось. В конце концов я установил все из портов, если ты прям хочешь использовать возможности ./configure то юзай вот эту хрень:
make CONFIGURE_ARGS+=--всякая-хрень=///
make install
и так далее.
у способа есть 2 плюса: он регистрирует приложение в системе и должно устанавливать все необходимые вещи.
>я тоже пытался подрубить ПХП5 а апачи, но у меня них не
>получалось. В конце концов я установил все из портов, если ты
>прям хочешь использовать возможности ./configure то юзай вот эту хрень:
>make CONFIGURE_ARGS+=--всякая-хрень=///
>make install
>и так далее.
>у способа есть 2 плюса: он регистрирует приложение в системе и должно
>устанавливать все необходимые вещи.Спасибо за совет, но что-то у меня ничего не вышло :(
команда
make CONFIGURE_ARGS+=--prefix=/usr/local/apache --disable-module=asis --disable-module=autoindex --disable-module=imap --disable-module=userdir --disable-module=actions --disable-module=include --disable-module=negotiation --disable-module=setenvif --disable-module=status --disable-module=alias --disable-module=cgi --disable-module=env --enable-module=so --enable-shared=access --enable-shared=auth --enable-shared=dir --enable-shared=log_config --enable-shared=mimeскомпилировала всё в статике - т.е. все ннастройки ./configure были проигнорированы.
Если зайти в каталог work в текущем порте и выполнить там ./configure с вышеуказанными параметрами, то всё компилится классно, а запускаться не хочет. Выдаёт всю ту же ошибку: "Service unavailable".
Ещё такой косяк - после установки порта apache_1.3.37 он не регистрируется в /var/db/pkg и в /var/db/ports.
Люди, подскажите пожалуйста, а достаточно ли модулейhttp_core.c
mod_so.cдля работы Апача? Может надо ещё какие-нибудь модули в статитке с ним скомпилить?
Кажись разобрался сам. тока оптимизма это не прибавило :(Для компиляции Апача с поддержкой динамически загружаемых модулей надо включить опцию --enable-rule=SHARED_CORE. После включения этой опции имеем такую картину:
/usr/bin/ld: lib/expat-lite/libexpat.a(xmlparse.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
lib/expat-lite/libexpat.a: could not read symbols: Bad value
*** Error code 1Библиотека /usr/ports/www/apache13/work/apache_1.3.37/src/lib/expat-lite/libexpat.a скомпилирована как позиционно-зависимая position-dependent code, и её требуется перекомпилить с ключём -fPIC.
Скачиваем исходники порта expat-2.0.0_1, компилим с флагом -fPIC, помещаем libexpat.a в каталог /usr/ports/www/apache13/work/apache_1.3.37/src/lib/expat-lite/ и... та же ошибка. Всё. Пинцет. приехали. чё делать дальше не знаю...
Кто-нибудь знает как бороться с позиционно-зависимыми библиотеками?
Не, я чё-то не понял - порты просто так придумали ?
Хочется развлекаться с ручной сборкой - пойми как оно должно собираться. Подсказкой будет содержание Makefile-ов из соответствующих портов(апача, мод_пхп).
>
>
>Не, я чё-то не понял - порты просто так придумали ?
>Хочется развлекаться с ручной сборкой - пойми как оно должно собираться. Подсказкой
>будет содержание Makefile-ов из соответствующих портов(апача, мод_пхп).Спасибо. Помогла ручная правка Makefile-ов.