在Heroku部署Django遇错:请求LOGGING_CONFIG但未配置设置
解决Django部署Heroku时"Requested setting LOGGING_CONFIG, but settings are not configured"错误
我之前也踩过这个坑——本地跑的Django应用完全正常,一部署到Heroku就弹出这个settings未配置的错误,折腾了好一阵才找到问题所在,给你分享几个排查方向:
1. 先检查Gunicorn启动命令的符号!
看你提供的启动命令:gunicorn ftb_core_backend.wsgi —-log-file -
注意这里的—-log-file是全角破折号!Heroku的shell根本识别不了全角符号,会把它当成命令的一部分,导致Gunicorn没有正确加载WSGI应用,自然就触发了settings未配置的错误。
把命令改成半角破折号:
gunicorn ftb_core_backend.wsgi --log-file -
更新你的Procfile里的启动命令,这是最容易忽略但又常见的问题。
2. 检查WSGI文件的代码顺序
打开你的wsgi.py,确认所有依赖Django设置的代码都在get_wsgi_application()之后执行。正确的结构应该是这样:
import os from django.core.wsgi import get_wsgi_application # 先设置环境变量 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ftb_core_backend.settings") # 再加载WSGI应用 application = get_wsgi_application() # 所有需要访问settings的代码、第三方库导入都要放在这之后 # 比如: # from myapp.some_module import something_that_uses_settings
如果有代码在get_wsgi_application()之前就调用了需要settings的功能(比如日志配置、模型查询),就会直接触发这个错误。
3. 确认Heroku的环境变量设置
虽然你说本地已经配置了DJANGO_SETTINGS_MODULE,但还是要确认Heroku服务器上的环境变量是否正确。
在终端运行:
heroku config:get DJANGO_SETTINGS_MODULE
如果输出不是ftb_core_backend.settings,就用下面的命令设置:
heroku config:set DJANGO_SETTINGS_MODULE=ftb_core_backend.settings
4. 排查第三方库的过早初始化
有些第三方库(比如某些日志插件、缓存工具)在导入时会自动尝试访问Django设置。如果你的项目里有这类库,试试在wsgi.py里延迟导入它们,或者确保它们的初始化代码在get_wsgi_application()之后执行。
最后验证步骤
- 修正Procfile里的Gunicorn命令,替换全角破折号为半角
- 检查并调整wsgi.py的代码顺序
- 确认Heroku环境变量正确
- 重新部署:
git add . && git commit -m "fix deployment settings issue" && git push heroku master
内容的提问来源于stack exchange,提问作者Melissa Stewart
相关产品推荐
相关产品推荐

