我在Ubuntu 12.04上配置了Apache以使用WSGI運行我的Python Flask Web應用程序。這裏是/ 000-缺省的/ etc/apache2的/啓用站點-的一部分:Python Flask WSGI文件忽略了用戶的環境變量
<VirtualHost *>
WSGIDaemonProcess 3dkit user=3dkit group=3dkit threads=5
WSGIScriptAlias /3dkit /3dkit/kit.wsgi
WSGIPassAuthorization On
<Location /3dkit>
WSGIProcessGroup 3dkit
</Location>
...
這裏是/3dkit/kit.wsgi:
import os
import sys
sys.path.insert(0, '/3dkit')
print 'user =', os.environ['USER']
from kit import app as application
打印命令失敗,出現異常
KeyError: 'USER'
然而,在終端窗口此命令:
sudo -u 3dkit printenv USER
按預期輸出「3dkit」。
這不僅僅是這個環境變量。無論我如何設置環境變量,無論是在/home/3dkit/.profile還是在/ etc/environment中,還是其他任何我能想到的方式,它都會在我的WSGI文件中被忽略。我能做到的唯一方法就是顯式調用os.environ並在WSGI文件本身中設置一個環境變量。
誰能告訴我我做錯了什麼?
你是如何設置環境變量的?你是否'導出'它可以在shell外部使用? –
在/home/3dkit/.profile的情況下,是的,我使用了導出。在/ etc/environment的情況下,按照https://help.ubuntu.com/community/EnvironmentVariables。 –