Heroku部署Django项目出现H10 App crashed错误如何解决?
问题根因定位
H10报错本质为应用进程启动失败,核心触发原因是Heroku运行时的Python环境未检测到Django依赖,按以下步骤顺序排查即可解决:
排查步骤
- 检查依赖声明文件合法性
若使用requirements.txt管理依赖,必须在文件中明确写入Django==x.x.x(x为你本地开发使用的Django版本号),不可遗漏;若使用Pipfile/Pipfile.lock管理依赖,需确认Django写在[packages]节点下,而非仅存在于开发依赖的[dev-packages]节点,Heroku默认仅安装生产环境依赖。 - 验证构建阶段依赖安装是否成功
执行heroku logs --source app --dyno run -n 1500拉取完整构建日志,查找依赖安装环节的日志记录,确认是否存在Django安装成功的提示。若出现Django安装报错,检查指定的Django版本是否与当前Python版本兼容:如Django 4.x要求Python 3.8及以上版本,若buildpack指定的Python版本低于要求会导致安装失败。 - 校验Procfile启动命令环境正确性
不要在启动命令中手动指定Python路径或添加虚拟环境激活逻辑,Heroku启动进程时会自动激活生产环境,正确的web进程启动示例为:web: gunicorn 你的项目名.wsgi --log-file -。 - 确认buildpack优先级正确
执行heroku buildpacks查看当前绑定的buildpack列表,确保第一个为官方heroku/python,若存在其他如nodejs等buildpack,需调整至python buildpack之后,避免Python运行环境被覆盖。 - 临时dyno手动验证依赖
执行heroku run bash登录临时dyno,执行pip list查看已安装包列表,确认是否存在Django。若不存在可在临时dyno中手动执行pip install django,随后手动启动gunicorn验证服务是否能正常启动,若可以则直接修正本地依赖声明文件重新提交部署即可。
附加验证项
执行git status确认依赖声明文件(requirements.txt/Pipfile/Pipfile.lock)已提交到git仓库,未被.gitignore规则忽略,若依赖文件未被提交,Heroku构建阶段将无法读取依赖配置,导致不会自动安装Django。
内容的提问来源于stack exchange,提问作者Jewel
相关产品推荐
相关产品推荐

