You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次部署Django应用至Heroku遭遇系列故障求助:构建失败、H14无Web进程运行等问题的解决方案

解决Django部署Heroku的系列问题(H81、migrate失败、H14)

我刚帮几个朋友踩过这些Heroku部署Django的坑,咱们一步步拆解解决:

1. 先搞定Procfile(核心解决H14无Web进程问题)

你的关键问题之一是Procfile没被Heroku正确识别,导致找不到要启动的Web服务。按下面的步骤来:

  • 确保Procfile在项目根目录,文件名就是Procfile(首字母大写,绝对不能加.txt之类的后缀)
  • 内容必须精准指向你的Django项目的wsgi文件,格式是:
    web: gunicorn your_project_name.wsgi --log-file -
    
    把your_project_name替换成你实际的项目名(就是包含settings.py和wsgi.py的那个文件夹的名字)
  • 改完后重新提交到Git:
    git add Procfile
    git commit -m "Fix Procfile to define web process"
    git push heroku main
    
  • 推送完成后,用命令确认Web进程状态:
    heroku ps
    
    如果显示web.1: up就没问题;要是还是没进程,手动启动一个:
    heroku ps:scale web=1
    

2. 正确处理静态文件(替代临时禁用的DISABLE_COLLECTSTATIC)

禁用DISABLE_COLLECTSTATIC只是权宜之计,生产环境建议规范配置静态文件收集:

  • 在settings.py里添加静态文件根目录配置:
    import os
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    STATIC_URL = '/static/'
    
  • 在项目根目录创建staticfiles文件夹(本地先创建,确保Git能追踪到):
    mkdir staticfiles
    touch staticfiles/.gitkeep  # 空文件夹需要这个文件才能被Git提交
    git add staticfiles/
    git commit -m "Add staticfiles directory for collectstatic"
    
  • 移除之前设置的禁用环境变量:
    heroku config:unset DISABLE_COLLECTSTATIC
    
  • 重新推送代码,这样Heroku运行collectstatic时就不会再报找不到目录的错误了。

3. 修复migrate失败(状态码2)的问题

之前python manage.py migrate退出码2,大概率是数据库连接或依赖缺失导致的:

  • 确保requirements.txt里包含PostgreSQL驱动和数据库配置工具:
    dj-database-url==2.0.0
    psycopg2-binary==2.9.9
    gunicorn==21.2.0
    
  • 在settings.py里用Heroku自动生成的数据库链接配置:
    import dj_database_url
    
    # 替换原来的DATABASES配置
    DATABASES = {
        'default': dj_database_url.config(
            default='postgres://localhost/your_local_db_name',
            conn_max_age=600
        )
    }
    
  • 手动在Heroku上运行迁移,确认是否成功:
    heroku run python manage.py migrate
    
    如果返回状态码0,说明数据库迁移正常了。

4. 最后验证部署

做完以上步骤后:

  1. 重新推送代码到Heroku
  2. 用heroku logs --tail实时查看日志,确认没有新的报错
  3. 访问你的应用地址https://off1.herokuapp.com/,应该就能正常加载了

如果还是有问题,优先看日志里的具体错误提示——比如有没有模块找不到的情况,那就要检查requirements.txt是不是漏了依赖包。

内容的提问来源于stack exchange,提问作者Era

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 18:27:27