(Nginx的+ gunicorn)/阿帕奇不读书环境变量

问题描述:

我越来越:(Nginx的+ gunicorn)/阿帕奇不读书环境变量

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

错误,而使用PyODBC建立连接。当我通过Django Development服务器使用它时,这工作正常。但通过使用它。 GunicornNginx,它失败。

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

  1. 通过一些必要的unixODBC库的人失踪。因为它与Django开发服务器一起工作,所以这不是问题
  2. 当环境变量PATHLD_LIBRARY_PATH没有指向我的驱动程序的路径时。

很可能我认为第二个是原因。我尝试在/etc/profile/etc/environment中设置环境变量,但没有运气。有没有人有关于这里可能会出错的想法?

编辑:它无关Gunicorn直接运行使用gunicorn服务器:

​​

工作正常。 问题是通过wsgi与Nginx进行通信。


所有必需的环境的方法是否正确设置好的了:

[email protected]_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输出的情况下,有人可能会发现它很有用(这里列出所有这些文件都已经存在)

[email protected]_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) 

编辑2:如果我在settings.py开发服务器运行正常,但nginx给出Internal Server Error显式设置这些环境变量。

后来我尝试了Apache并发现了相同的行为。在做了大量的研究之后,我发现apache不会读取系统环境变量。为了使用某些环境变量,您需要在其中定义它:apache2/envars。我在文件中添加了我的变量:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/nz/lib64" 
export PATH="$PATH:/usr/local/nz/bin64" 
export NETEZZA="/usr/local/nz" 
export NZ_ODBC_INI_PATH="/etc"