WSGI / HTTPD 虚拟主机中的 SetEnv 不工作?
SetEnv in WSGI / HTTPD virtual host not working?
我正在尝试使用 mod_wsgi 4.6.2 使 python flask 应用程序在 httpd 2.4 中运行(您可以在此处找到详细配置 - ). Anyway, when I tried to pass some configuration information into WSGI file or a python file. It was not successful. I assumed that I could do that because of this article.
<VirtualHost *:443>
........
WSGIDaemonProcess abcd_server user=python_user group=python_user threads=5 python-home="/var/www/m.abcd.com/venv"
WSGIProcessGroup abcd_server
WSGIScriptAlias / "/var/www/m.abcd.com/python-src/wsgi-src/abcd_server.wsgi"
SetEnv "P2SERVER_SRC" "/var/www/m.abcd.com/python-src/src"
SetEnv "P2SERVER_APP_CFG" "/var/www/m.abcd.com/conf/abcd_conf.yaml"
........
</VirtualHost>
我在 wsgi 文件中使用 "os.environ['P2SERVER_SRC']" 检索 P2SERVER_SRC 失败,并且在 python 文件中使用 "os.getenv" [=23] 检索 P2SERVER_APP_CFG 失败=].当然,我可以使用 wsgi 文件中的硬编码值来绕过这些问题。但如果可能的话,我真的很想让 SetEnv 工作。
那篇文章非常清楚地表明您正在尝试做的事情是行不通的。
Note that the WSGI environment is passed upon each request to the
application in the ‘environ’ argument of the application object. This
environment is totally unrelated to the process environment which is
kept in ‘os.environ’. The SetEnv directive has no effect on
‘os.environ’ and there is no way through Apache configuration
directives to affect what is in the process environment.
您需要通过 WSGI 脚本文件来设置它们。这并不意味着值需要在 WSGI 脚本文件中。在不受版本控制的目录中的特定主机上创建一个文件,WSGI 脚本文件 reads/processes 以某种方式获取 key/values 以设置环境变量。
如果您实际上不需要它们成为进程范围的环境变量,请从传递给 WSGI 应用程序的每个问题 environ
字典中获取它们。对于 Flask,这意味着访问 request.environ
.
我正在尝试使用 mod_wsgi 4.6.2 使 python flask 应用程序在 httpd 2.4 中运行(您可以在此处找到详细配置 -
<VirtualHost *:443>
........
WSGIDaemonProcess abcd_server user=python_user group=python_user threads=5 python-home="/var/www/m.abcd.com/venv"
WSGIProcessGroup abcd_server
WSGIScriptAlias / "/var/www/m.abcd.com/python-src/wsgi-src/abcd_server.wsgi"
SetEnv "P2SERVER_SRC" "/var/www/m.abcd.com/python-src/src"
SetEnv "P2SERVER_APP_CFG" "/var/www/m.abcd.com/conf/abcd_conf.yaml"
........
</VirtualHost>
我在 wsgi 文件中使用 "os.environ['P2SERVER_SRC']" 检索 P2SERVER_SRC 失败,并且在 python 文件中使用 "os.getenv" [=23] 检索 P2SERVER_APP_CFG 失败=].当然,我可以使用 wsgi 文件中的硬编码值来绕过这些问题。但如果可能的话,我真的很想让 SetEnv 工作。
那篇文章非常清楚地表明您正在尝试做的事情是行不通的。
Note that the WSGI environment is passed upon each request to the application in the ‘environ’ argument of the application object. This environment is totally unrelated to the process environment which is kept in ‘os.environ’. The SetEnv directive has no effect on ‘os.environ’ and there is no way through Apache configuration directives to affect what is in the process environment.
您需要通过 WSGI 脚本文件来设置它们。这并不意味着值需要在 WSGI 脚本文件中。在不受版本控制的目录中的特定主机上创建一个文件,WSGI 脚本文件 reads/processes 以某种方式获取 key/values 以设置环境变量。
如果您实际上不需要它们成为进程范围的环境变量,请从传递给 WSGI 应用程序的每个问题 environ
字典中获取它们。对于 Flask,这意味着访问 request.environ
.