(Nginx + gunicorn)/ Apache没有读取环境变量

时间:2016-11-14 13:14:07

标签: python django apache nginx unixodbc

我得到了:

.top-to-bottom {
    border-width: 3px;
    border-style: solid;
    -webkit-border-image: 
      -webkit-gradient(linear, 0 0, 0 100%, from(black), to(rgba(0, 0, 0, 0))) 1 100%;
    -webkit-border-image: 
      -webkit-linear-gradient(black, rgba(0, 0, 0, 0)) 1 100%;
    -moz-border-image:
      -moz-linear-gradient(black, rgba(0, 0, 0, 0)) 1 100%;    
    -o-border-image:
      -o-linear-gradient(black, rgba(0, 0, 0, 0)) 1 100%;
    border-image:
      linear-gradient(to bottom, black, rgba(0, 0, 0, 0)) 1 100%;
}
.bottom-to-top {
    border-width: 3px;
    border-style: solid;
    -webkit-border-image: 
      -webkit-gradient(linear, 0 100%, 0 0, from(black), to(rgba(0, 0, 0, 0))) 1 100%;
    -webkit-border-image: 
      -webkit-linear-gradient(bottom, black, rgba(0, 0, 0, 0)) 1 100%;
    -moz-border-image:
      -moz-linear-gradient(bottom, black, rgba(0, 0, 0, 0)) 1 100%;  
    -o-border-image:
      -o-linear-gradient(bottom, black, rgba(0, 0, 0, 0)) 1 100%;
    border-image:
      linear-gradient(to top, black, rgba(0, 0, 0, 0)) 1 100%;
}
使用[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/nz/lib64/libnzodbc.so' : file not found (0) (SQLDriverConnect)" 创建连接时出现

错误。当我通过Django Development服务器使用它时,这很好用。但是通过它来使用它。 PyODBCGunicorn,它失败了。

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

  1. 缺少UnixODBC所需的一些库。因为,它正在使用Django开发服务器,这不是问题
  2. 当环境变量NginxPATH没有到我的驱动程序的路径时。
  3. 我很可能认为第二是原因。我尝试在LD_LIBRARY_PATH/etc/profile中设置环境变量,但没有运气。有没有人知道这里可能有什么问题?

    编辑:与/etc/environment无直接运行gunicorn服务器:

    Gunicorn

    工作正常。 问题是通过wsgi与Nginx沟通。

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

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

    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

    编辑2 :如果我在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

1 个答案:

答案 0 :(得分:0)

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

topPriorityRules.erase(topPriorityRules.begin());