ldconfig не может найти .so, даже если путь к .so указан в файле .conf - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужна помощь в диагностике, почему 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:
...

Заранее благодарю за любую помощь!

...