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

Django部署Heroku出现应用错误无法访问的解决方法

解决方案

你遇到的H10崩溃是核心配置错误导致的,按以下步骤修复即可:

1. 补全线上环境变量配置

Heroku线上运行环境不会自动读取你本地项目目录下的.env文件,所有本地存储在.env里的参数都需要手动配置到Heroku环境中:

  • 如果使用Heroku自带的PostgreSQL数据库(推荐),先执行heroku addons:create heroku-postgresql:hobby-dev挂载免费版Postgres插件,插件创建成功后Heroku会自动生成DATABASE_URL环境变量,无需手动配置单值数据库参数。
    安装依赖解析数据库连接串:pip install dj-database-url psycopg2-binary,将settings.py中原有DATABASES配置替换为:
    import dj_database_url
    DATABASES = {
        'default': dj_database_url.config(conn_max_age=600)
    }
    
  • 如果使用自建外部数据库,将.env中所有数据库相关参数通过Heroku CLI逐个配置到线上,示例:
    heroku config:set DATABASE_NAME=你的数据库名
    heroku config:set DATABASE_USER=你的数据库用户名
    heroku config:set DATABASE_PASSWORD=你的数据库密码
    heroku config:set DATABASE_HOST=你的数据库地址
    heroku config:set DATABASE_PORT=你的数据库端口
    
  • 配置完成后执行heroku config可查看所有已生效的线上环境变量,确认无遗漏。
  • 如果你本地用python-dotenv加载.env文件,需要把加载逻辑放到DEBUG判断分支内,避免线上读取不存在的本地文件报错:
    import os
    if os.getenv('DEBUG', 'False') == 'True':
        from dotenv import load_dotenv
        load_dotenv()
    

2. 修复ALLOWED_HOSTS配置

当前ALLOWED_HOSTS仅配置了本地运行地址,没有包含Heroku分配的应用域名,将配置修改为:

ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '.herokuapp.com']

如果后续绑定了自定义域名,把自定义域名追加到列表中即可。

3. (必改)替换生产启动命令

Django自带的runserver是仅用于本地开发的单线程服务,不适合生产环境使用,会存在稳定性和安全风险:

  • 安装生产级WSGI服务:pip install gunicorn
  • 将Procfile内容替换为以下内容,注意把你的项目目录名替换为项目中存放wsgi.py文件的文件夹名称:
    web: gunicorn 你的项目目录名.wsgi --log-file -
    

4. 重新部署验证

  • 把所有修改后的代码提交到Git仓库,执行git push heroku main(如果你的主分支是master则执行git push heroku master)触发重新部署
  • 部署完成后执行heroku run python manage.py migrate同步数据库表结构
  • 执行heroku logs --tail查看实时日志,确认无启动报错后即可正常访问应用。

内容的提问来源于stack exchange,提问作者Noor ul ain Ibrahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:45:49