同一服务器部署多Django站点测试环境读取生产数据问题排查
Django双实例部署跨环境读取生产数据故障原因
- 配置加载规则错误:测试环境Gunicorn启动时未正确指定配置文件,实际加载的是生产环境的
production.py。需检查测试实例Gunicorn启动参数中的DJANGO_SETTINGS_MODULE环境变量,确认其值为测试配置路径,而非生产配置路径。 - 进程残留冲突:测试环境的旧Gunicorn进程未完全终止,残留进程绑定了测试实例的socket且加载的是生产配置。可执行
ps aux | grep gunicorn查看所有运行中的Gunicorn进程,终止全部残留进程后再分别启动两套实例。 - Nginx转发规则错误:测试子域名对应的Nginx站点配置中,反向代理地址错误指向了生产实例的socket,所有测试域名的请求实际都被转发到生产实例处理。需核对两套Nginx配置中指定的socket路径,与对应Gunicorn配置的socket路径完全匹配。
- Session cookie共享冲突:如果生产环境配置的
SESSION_COOKIE_DOMAIN为根域名,且两套实例的SECRET_KEY完全相同,生产环境的登录凭证cookie会被带到测试环境请求中,Django会直接解析生产session完成登录。需将两套实例的SECRET_KEY设置为不同值,同时将SESSION_COOKIE_DOMAIN分别配置为对应实例的专属子域名,避免cookie跨子域名共享。 - 工作目录配置错误:测试实例Gunicorn的工作目录参数错误指向生产环境的项目目录,实际运行的是生产代码和配置。需核对两套Gunicorn配置中的
chdir参数,确认分别指向各自独立的项目目录。
内容的提问来源于stack exchange,提问作者user7804233
相关产品推荐
相关产品推荐

