这两天咨询了大佬很多问题,大佬还直接写了一篇教程,真是受宠若惊。虽然我一贯的作风是只引用不转载,不过这次还是破例一下吧~~
设置独立的生产环境
1. 原理
Django 在加载 settings
的时候会根据环境变量选择不同的 settings
。
参考 manage.py +6
,os.environ.setdefault
设置了一个名为 DJANGO_SETTINGS_MODULE
、值为目标 settings
的环境变量。
在生产环境中,uWSGI 会根据指定的 WSGI Module 加载程序。Django 的 wsgi.py
中同样执行了 os.environ.setdefault
。
2. 方案
- 在
settings.py
的同级目录创建一个新的 Python 文件,例如prd.py
。 - 按照如下示例编写
prd.py
的内容。
# -*- coding:utf-8 -*-
from .settings import *
# Write your settings below.
# For example:
SECRET_KEY = 'your-secret-key'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'your-db-host',
'PORT': '3306',
'NAME': 'your-db-name',
'USER': 'your-db-user',
'PASSWORD': 'your-db-password',
'OPTIONS': {
'charset': 'utf8mb4'
}
}
}
你可以根据需要写入各类配置。未在此处写出的配置会从 Django 的默认值以及 settings.py
继承过来。
-
修改
wsgi.py +14
,将settings
替换成你的prd
。 更好的建议是复制一份wsgi.py
再改(当然,uWSGI 的配置文件也要进行相应的修改)。 -
不要忘记将线上相关的配置加入你的
.gitignore
。
3. 对于本地的开发环境呢?
原理是一样的,你可以创建一个 local_settings.py
嘛。
manage.py
有一个 --settings
的参数,值是你的 local_settings
,就像这样:
$ python manage.py runserver --settings=your_project.local_settings
当然,你也可以照葫芦画瓢搞一个新的 local_manage.py
。