Когда я бегу apachectl configtest
после установки mod_wsgi я получаю следующее сообщение об ошибке:
httpd: Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_wsgi.so into server: dlopen(/usr/libexec/apache2/mod_wsgi.so, 10): Symbol not found: _PyEval_ReleaseLock\n Referenced from: /usr/libexec/apache2/mod_wsgi.so\n Expected in: dynamic lookup\n
Я скомпилировал mod_wsgi 3.5 из исходников с помощью python 2.7.8. Apache - это версия 2.2.11. Обширный поиск в Google не выявил подобных проблем. Возможно, apache пытается использовать системную версию python, а не ту, которую я установил (также ту, которую я использовал для компиляции mod_wsgi).
Есть идеи, что вызывает эту ошибку и как ее исправить?
Если вы компилируете Apache и другие модули или приложения, от которых будет зависеть Apache, и они находятся в другом месте, чем общесистемная конфигурация LD, то ваш сценарий запуска, вероятно, должен указывать LD_LIBRARY_PATH.
Пример с одного из моих собственных серверов, на котором много скомпилированного кода:
LD_LIBRARY_PATH="/opt/apache/lib:/opt/zlib/lib:/opt/openssl/lib";export LD_LIBRARY_PATH
Вы также можете использовать «ldd» против любого из модулей, чтобы увидеть, на какие динамические библиотеки он ссылается. Если у вас отсутствовали различные флаги или параметры компилятора, включенные в нужные места, возможно, у вас неправильные заголовки и библиотеки. Это может привести к еще более запутанному поведению, потому что приложение может запускаться, но при определенных условиях может произойти сбой.