gpt4 book ai didi

Django - 无法将环境变量传递给 WSGI 接口(interface)上的 Apache/Passenger

转载 作者:行者123 更新时间:2023-12-04 03:13:18 25 4
gpt4 key购买 nike

我正在寻找解决方案,我无法将/etc/profile 中定义的变量传递给 apache。

这是我要设置的内容:

我有一个 Django 应用程序,我通过 WGSI 接口(interface)通过 Apache/Passenger (modrails) 部署它。

在我的 settings.py 中,我使用了这个 python 命令: ENVIRONMENT = os.getenv('ENV', 'PROD')因此,如果未定义 ENVIRONMENT 变量,它将默认进入生产设置。

这有助于我管理连接到的数据库并激活调试工具。

它在生产中工作,因为它是默认值,当我在 DEV 服务器上时,我无法从/etc/profile 获取环境变量。

它在 Ubuntu 10.04 服务器上

所以这是我做的一些测试:

1) 放入/etc/profile -> ENV='开发' 导出环境

2) 在/etc/profile.d/environment.sh 下 -> #!/bin/sh ENV='开发' 导出环境

3) 在我的虚拟主机配置文件中 -> PassEnv环境

4) 仍在我的虚拟主机配置文件中 -> 设置环境环境开发

5) 如果我强制输入此文件,乘客需要 passenger_wgsi.py 来注册您的申请 viron['ENV'] = 'DEV' 这已经成功了,但我无法做到这一点

ENVIRONMENT = os.getenv('ENV', 'PROD')
os.environ['ENV'] = ENVIRONMENT

知道为什么或如何解决这个问题吗?谢谢你!





@Josh

感谢您的回复。但我还有一些疑问。

对于 Passenger,我唯一需要在虚拟主机文件中设置的东西是我的 python/django 应用程序中公共(public)文件夹的位置。所以我的虚拟主机文件看起来像这样。

DocumentRoot path_to_my_public_folder # /home/user/workspace/myapp/public

然后在 myapp 文件夹中有 passenger_wsgi.py

它的定义很少像你说的那样:

import sys, os
sys.path.append(os.getcwd())

os.environ['DJANGO_SETTINGS_MODULE'] = "myapp.settings"

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

完成这些设置后,应用程序就可以运行了。所以我可能错过了你的指示是当你说我们必须指定我们使用了哪个 wsgi 文件。我虽然它会直接定位 passenger_wsgi.py 并默认加载它目前正在做的事。

您应该知道的另一件事是我们的项目驻留在 SVN 存储库中,并且我想为许多用户设置此文件,因此我们没有不同的设置。

但我明天要测试的是拥有一个包含公共(public)信息的基本 wsgi 文件的想法并根据计算机的主机名导入其他设置,例如 dev_wsgi.py 或 prod_wsgi.py

我应该能够使用 python 检索此名称,并根据该名称设置我需要使用的变量。

谢谢你的想法,非常感谢。

最佳答案

我将建议一个替代解决方案,因为我不知道如何解决您的具体问题。

创建多个 WSGI 文件。 production.wsgi, dev1.wsgi, dev2.wsgi, test.wsgi 等。无论如何配置了 /path/to/.wsgi。无论如何,wsgi 文件中只有极少量的代码,因此复制它并不是很昂贵。此外,您可以使用 _base.wsgi 来提供所有通用值,并要求派生的 wsgis 调用 application = wsgi.WSGIHandler()

我们项目中的每个开发人员都有自己的设置文件和 wsgi 文件,以允许篡改设置,而永远无法使用流氓值破坏生产。

关于Django - 无法将环境变量传递给 WSGI 接口(interface)上的 Apache/Passenger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4986127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com