我正在尝试在不同的数据库上运行两个相同的Django项目,一个用于使用特定端口号(例如80)进行生产,另一个用于使用另一个端口号(例如8000)进行测试。我还将Nginx和Gunicorn用作反向代理服务器和应用程序服务器,Nginx分别侦听端口80和8000并转发到端口8001和8002的gunicorn。
问题是:如何知道Django settings.py
中请求的端口号,以便项目可以选择其他数据库?
答案 0 :(得分:1)
在django中执行此操作的标准做法是创建一个local_settings.py文件
将其放在local_settings.py文件的顶部:
try:
from settings import *
except ImportError:
pass
现在在local_settings.py中,您必须覆盖以下变量:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'dbpassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
两个项目的值都不同
然后在运行Django时,您需要设置以下环境变量:
export DJANGO_SETTINGS_MODULE="appname.local_settings"
将所有这些组合在一起的一种方法是创建一个run.sh文件,该文件首先设置此变量,然后运行gunicorn
总而言之,settings.py在两个项目之间是通用的,local_settings.py会覆盖不同项目之间不同的那些变量