0

尝试对生产和开发使用 2 个不同的设置文件。

我设置 DJANGO_SETTINGS_MODULE='mysite.settings_production'
在运行服务器时完美运行runserver

但是,当我使用 apache 运行它时,apache 似乎没有使用 wsgi.py 文件中的设置,~/.bash_profile而是使用os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")wsgi.py 文件中的设置

我想这可能是因为 apache 在不同的用户上运行,而不是我的.. 好的.. 所以它似乎在我的 ec2 ubuntu 上作为 www-data 运行。

所以我必须创建 /home/www-data/.bash_profile 并设置环境变量?

使用不同的设置文件似乎很麻烦。
有没有明显更简单的方法来做到这一点?(我不想更改 wsgi.py 文件,因为它是源代码控制的)

4

2 回答 2

0

好吧,这真是错误的方式。对不同环境进行单独设置的常用方法是将环境相关存储在 local_settings.py (或您命名的任何名称)中并从 settings.py 中导入

from local_settings.py import *

不要将 local_settings.py 放在项目存储库下,因为您将在每次提交时覆盖它。如果您想保留本地设置的样本,请将其放入单独的文件中,例如 local_settings.py.example

您可以在 settings.py 的开头导入本地设置(因此 settings.py 设置将覆盖本地设置),也可以在最后导入本地设置,或者在这两种情况下都有两个本地设置文件。

于 2013-01-25T12:35:32.140 回答
0

使用 bash_profile 是完全错误的方法。

正确的方法是使用 wsgi.py 文件。但是,由于您不想这样做(尽管我不明白版本控制与任何事情有什么关系),因此您可以使用 SetEnv 直接在 Apache 配置中设置环境变量:

SetEnv DJANGO_SETTINGS_MODULE mysite.settings
于 2013-01-21T11:25:57.363 回答