Nginx + Pyodbc (UnixODBC) + Gunicorn + Django:[unixODBC][驱动程序管理器]无法打开库

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 开发服务器使用它时,它工作正常。但是通过 和 使用它时GunicornNginx它失败了。

我以前遇到过这个问题(在配置开发服务器时):

  1. 缺少 UnixODBC 所需的一些库。由于它与 Django 开发服务器配合使用,所以这不是问题所在
  2. 当环境变量PATH没有LD_LIBRARY_PATH我的驱动程序的路径时。

/etc/profile我认为第二个原因最有可能。我尝试在和中设置环境变量,/etc/environment但没有成功。有人知道这里可能出了什么问题吗?

Gunicorn它与使用以下命令直接运行 gunicorn 服务器无关:

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

工作正常。问题出现在通过 wsgi 与 Nginx 通信时。


所有必需的环境方法均已正确设置:

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

相关内容