Django应用在Heroku部署成功后访问链接报错,如何基于日志排查修复?
Heroku部署Django访问报错原因及修复方案
错误产生原因
- ALLOWED_HOSTS配置不符合要求:Django默认会校验请求的Host头,未将Heroku应用域名加入settings.py的ALLOWED_HOSTS列表时,会直接拦截请求抛出服务错误。
- 静态资源未适配Heroku运行环境:Heroku没有默认的Django静态资源处理能力,未配置对应依赖和规则时,应用启动后访问会触发资源加载异常导致服务崩溃。
- 启动规则配置错误:项目根目录下的Procfile启动命令填写错误,比如使用开发环境的runserver命令,或者WSGI入口路径不匹配,都会导致服务启动后无法正常响应请求。
- 环境变量缺失:SECRET_KEY、数据库连接地址等必填配置没有在Heroku的环境变量中配置,应用初始化时读取不到配置直接抛出异常。
具体修复方案
- 修正ALLOWED_HOSTS配置
打开Django项目的settings.py文件,修改ALLOWED_HOSTS配置项:
# 替换为你的实际Heroku应用域名 ALLOWED_HOSTS = ['xxx.herokuapp.com'] # 也可以直接适配所有Heroku子域名 # ALLOWED_HOSTS = ['.herokuapp.com']
- 配置Heroku环境适配依赖
首先安装django-heroku依赖包:
pip install django-heroku
在settings.py文件末尾添加以下配置,自动适配Heroku的运行环境、静态资源、数据库配置:
import django_heroku django_heroku.settings(locals())
执行命令更新项目依赖清单:
pip freeze > requirements.txt
- 修正Procfile启动配置
在项目根目录的Procfile中写入以下启动规则,替换为你的实际项目WSGI入口:
web: gunicorn 你的项目名称.wsgi --log-file -
确保gunicorn已经被添加到requirements.txt依赖清单中。
- 配置必要的环境变量
可以直接在Heroku应用控制台的「Settings」-「Config Vars」板块添加所需环境变量,也可以通过Heroku CLI执行命令配置:
heroku config:set SECRET_KEY=你的Django自定义加密密钥 heroku config:set DEBUG=False
所有配置修改完成后重新推送代码到Heroku完成部署,部署完成后执行以下命令查看服务运行状态:
heroku ps
当状态显示为running时即可正常访问应用。
内容的提问来源于stack exchange,提问作者muhammad waqar
相关产品推荐
相关产品推荐

