Мне нужна помощь в диагностике, почему ldconfig
, по-видимому, не может найти файл .so, для которого я указал путь.
Я нахожусь в процессе настройки приложения фляги Python, которому будет показывать mod_wsgi
/ httpd
.Я использую Anaconda для управления средой Python и установил mod_wsgi
в среду Anaconda через pip
.Я сгенерировал строки конфигурации для файла httpd.conf
через mod_wsgi-express module-config
, как описано в этом вопросе: Anaconda + Apache + mod_wsgi + Ubuntu .При попытке запустить httpd я получаю эту ошибку
httpd:
Syntax error on line 353 of /etc/httpd/conf/httpd.conf:
Syntax error on line 4 of /etc/httpd/conf.d/myserver.httpd.conf:
Cannot load /conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so into server:
/conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so:
cannot open shared object file:
Permission denied
Глядя на эту ошибку, я нашел этот вопрос: Не могу загрузить mod_wsgi, скомпилированный для Python 3 , и попыталсяуказанная здесь опция: Or add the directory /opt/anaconda/anaconda3/lib to the library search path using a conf file in /etc/ld.so.conf.d/, that would be a global setting tough.
Я создал mod_wsgi.conf
со следующей строкой
/conda/envs/my_env/lib
внутри каталога /etc/ld.so.conf.d
и запустил ldconfig
, чтобы обновить ld.so.cache
.Работая с -v
, я мог видеть, что .so внутри /lib
были успешно связаны.Перезапуск httpd дал тот же результат, и я заметил, что mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so
не был включен в подробный список.Затем я добавил следующую строку в mod_wsgi.conf
/conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server
и перезапустил ldconfig
, но mod_wsi*.so
не появилось в подробном списке.
Включая эти файлы:
myserver.httpd.conf
ServerName myserver.example.com
LoadModule wsgi_module "/conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so
WSGIPythonHome "/conda/envs/myenv"
Listen 8008
<VirtualHost *:8008>
ServerName myserver.example.com
ServerAlias myserver.example.com
ServerAdmin webmaster@example.com
WSGIDaemonProcess myapp
WSGIScriptAlias /myapp /usr/local/src/myapp.wsgi
<Directory /usr/local/src>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
mod_wsgi.conf
/conda/envs/my_env/lib
/conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server
И вот что я получаю от ldconfig -v
:
...
/conda/envs/my_env/lib:
libpython3.5m.so.1.0 -> libpython3.5m.so.1.0
libsqlite3.so.0 -> libsqlite3.so.0.8.6
libtk8.6.so -> libtk8.6.so
libtcl8.6.so -> libtcl8.6.so
libreadline.so.7 -> libreadline.so.7.0
libhistory.so.7 -> libhistory.so.7.0
libedit.so.0 -> libedit.so.0.0.56
libz.so.1 -> libz.so.1.2.11
liblzma.so.5 -> liblzma.so.5.2.4
libssl.so.1.0.0 -> libssl.so.1.0.0
libcrypto.so.1.0.0 -> libcrypto.so.1.0.0
libtinfow.so.6 -> libtinfow.so.6.1
libpanelw.so.6 -> libpanelw.so.6.1
libncursesw.so.6 -> libncursesw.so.6.1
libmenuw.so.6 -> libmenuw.so.6.1
libformw.so.6 -> libformw.so.6.1
libffi.so.6 -> libffi.so.6.0.4
libstdc++.so.6 -> libstdc++.so.6.0.25
libubsan.so.1 -> libubsan.so.1.0.0
libtsan.so.0 -> libtsan.so.0.0.0
libquadmath.so.0 -> libquadmath.so.0.0.0
liblsan.so.0 -> liblsan.so.0.0.0
libitm.so.1 -> libitm.so.1.0.0
libgomp.so.1 -> libgomp.so.1.0.0
libgcc_s.so.1 -> libgcc_s.so.1
libatomic.so.1 -> libatomic.so.1.2.0
libasan.so.5 -> libasan.so.5.0.0
/conda/envs/my_env/lib/python3.5/site-packages/mod_wsgi/server:
/usr/lib64:
...
Заранее благодарю за любую помощь!