django 2.2
python 3.6
AWS EC2 ubuntu实例
独角兽
nginx
现在我正在使用一个生产服务器aws ubuntu实例。
我在本地服务器和生产服务器上按照以下步骤分离了settings.py
。
# local : Project/setting/dev.py
DEBUG = True
ALLOWED_HOSTS = ['localhost']
database = {
..skip..
}
# production : Project/setting/real.py
DEBUG = False
ALLOWED_HOSTS = ['~real_server_host of ec2~']
database = {
..AWS RDS instance for real..
}
# manage.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.dev")
# wsgi.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.real")
在部署到真实环境之前,我必须再操作一个AWS实例进行测试。
所以我做了相同的EC2实例和RDS实例(从真实rds转储)进行测试。
但是我不知道如何在os.environ.setdefault
中分隔wsgi.py
再为测试服务器添加一个设置文件。
# Project/setting/test.py
DEBUG = True
ALLOWED_HOSTS = ['~test_server_host of ec2~']
database = {
..AWS RDS instance for test..
}
我希望下面的代码能正常工作。
# wsgi.py
if realserver:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.real")
else:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.test")
我必须使用另一个api url,具体取决于真实或测试。
# views.py
if real:
get_data = requests.get(real_api.apiurl.com)
else :
get_data = requests.get(test_api.apiurl.com)
我该怎么办?
答案 0 :(得分:0)
我成功解决了这个问题,所以我分享了解决方案。
我为每个服务器放置了具有相同键和不同值的环境变量,并且当环境变量为“测试”时,将“设置”用于“测试”。
# wsgi.py
try:
test = os.environ['IS_ENV']
if test == 'test':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.prod_test")
else:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.prod_eb")
except KeyError:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings.prod_eb")