部署django站点(wsgi)

时间:2013-01-21 11:10:21

标签: django deployment mod-wsgi

尝试使用2个不同的设置文件进行制作和开发。

我设置了DJANGO_SETTINGS_MODULE ='mysite.settings_production'
使用runserver

运行服务器时可以正常工作

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

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

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

使用不同的设置文件似乎很麻烦 有一个明显更容易的方法吗? (我不想更改wsgi.py文件,因为它是源控制的)

2 个答案:

答案 0 :(得分:0)

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

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

SetEnv DJANGO_SETTINGS_MODULE mysite.settings

答案 1 :(得分:0)

嗯,这是非常错误的方式。为不同环境设置单独设置的常用方法是将环境依赖存储在local_settings.py(或您设置的任何名称)中,并从settings.py

进行存储。
from local_settings.py import *

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

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