在Heroku部署Django应用时遇错误,请求技术帮助
排查Django部署Heroku的常见问题
嘿,我刚上手Django和Heroku的时候也踩过超多坑,太懂这种试了一堆网上方案还卡壳的郁闷了!咱们一步步来排查,先从最容易忽略的细节入手:
先确认requirements.txt的准确性
别光有文件就行,得确保里面包含了所有必需的依赖:- 必须有
gunicorn(Heroku要求用它作为WSGI服务器),比如gunicorn==21.2.0 - 如果用Heroku的PostgreSQL数据库,要加
psycopg2-binary(别用psycopg2,会编译失败) - 建议用
pip freeze > requirements.txt生成,手动写很容易漏依赖或者拼错包名 - 检查文件里有没有无效的换行或注释,Heroku会严格解析这个文件
- 必须有
核对Procfile的配置
项目根目录必须有一个首字母大写、无后缀的Procfile,内容格式是:web: gunicorn 你的项目名称.wsgi --log-file -这里的「你的项目名称」是指Django项目里包含
wsgi.py的那个文件夹名,别写错!比如你的项目结构是myblog/myblog/wsgi.py,那就要写myblog.wsgi拉取Heroku日志找具体错误
别只看部署时的表面报错,跑这个命令看实时日志:heroku logs --tail重点找
ModuleNotFoundError(缺依赖)、Application error(Procfile或WSGI配置错)、数据库连接失败这类关键信息,这些才是定位问题的核心检查项目结构是否合规
确保核心文件的层级是对的,正确结构应该是:你的项目根目录/ 你的Django项目文件夹/ wsgi.py settings.py manage.py requirements.txt Procfile别把requirements.txt或Procfile放到子文件夹里,Heroku找不到它们
修正Django settings.py的关键配置
- 把
DEBUG设为False(Heroku禁止DEBUG=True的生产部署) - 在
ALLOWED_HOSTS里加上你的Heroku域名:ALLOWED_HOSTS = ['your-app-name.herokuapp.com', 'localhost'],把your-app-name换成你Heroku上的应用名 - 数据库配置要适配Heroku的环境变量,记得先把
dj-database-url加到requirements.txt,然后在settings.py里写:import dj_database_url DATABASES = { 'default': dj_database_url.config(default='sqlite:///db.sqlite3') }
- 把
重新走一遍正确的部署流程
先把所有修改提交到Git:git add . git commit -m "fix deployment configs"再推到Heroku:
git push heroku main(如果你的Git分支不是main,换成对应的分支名,比如master)
要是按这些步骤排查后还是有问题,把日志里的具体错误贴出来,咱们再针对性解决!
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

