Назад | Перейти на главную страницу

Nginx + Pyodbc (UnixODBC) + Gunicorn + Django: [unixODBC] [Диспетчер драйверов] Не удается открыть библиотеку

Я получаю:

[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/nz/lib64/libnzodbc.so' : file not found (0) (SQLDriverConnect)"

ошибка при создании соединения с использованием PyODBC. Это отлично работает, когда я использую его через сервер разработки Django. Но при использовании через. Gunicorn и Nginx, это не удается.

Я сталкивался с этой проблемой в прошлом (при настройке сервера разработки), когда:

  1. Некоторые библиотеки, необходимые для UnixODBC, отсутствовали. Поскольку он работает с сервером разработки Django, это не могло быть проблемой
  2. Когда переменные среды PATH и LD_LIBRARY_PATH не было пути к моему драйверу.

Скорее всего, я думаю, что причина 2-го. Я попытался настроить переменные среды в /etc/profile и /etc/environment но не повезло. Кто-нибудь знает, что здесь может быть не так?

Это не имеет ничего общего с Gunicorn как непосредственно запускающий сервер Gunicorn, используя:

gunicorn --bind 0.0.0.0:8000 my_project.wsgi:application

работает отлично. Проблема возникает при общении с Nginx через wsgi.


Все необходимые методы среды настроены правильно:

mquadri@MY_HOST:/tmp/webadmin$ env
LD_LIBRARY_PATH=/usr/local/nz/lib64
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/nz/bin64
NZ_ODBC_INI_PATH=/home/mquadri/CONFIG
HOME=/home/mquadri
ODBCINI=/home/mquadri/CONFIG/odbc.ini
NETEZZA=/usr/local/nz

Все связанные зависимости уже установлены. Ниже приведен вывод ldd на случай, если кому-то это пригодится:

mquadri@MY_HOST:/tmp/webadmin$ ldd /usr/local/nz/lib64/libnzodbc.so
    linux-vdso.so.1 =>  (0x00007fff96dfa000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f286f0f1000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f286edeb000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f286ebcc000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f286e9c8000)
    libkrb5.so.3 => /usr/local/nz/lib64/libkrb5.so.3 (0x00007f286e7e8000)
    libkrb5support.so.0 => /usr/local/nz/lib64/libkrb5support.so.0 (0x00007f286e6da000)
    libcom_err.so.3 => /usr/local/nz/lib64/libcom_err.so.3 (0x00007f286e5d7000)
    libk5crypto.so.3 => /usr/local/nz/lib64/libk5crypto.so.3 (0x00007f286e494000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f286f806000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f286e278000)

Если я явно задаю эти переменные среды в settings.py сервер разработки работает нормально, но nginx дает Internal Server Error.