Django+PostgreSQL博客项目部署Vercel报错求助
Django博客部署Vercel报错求助
我用Django和PostgreSQL搭建了一个简易博客应用,部署到Vercel时出现报错(错误截图:截图1、截图2)。
我已配置build_files.sh、vercel.json以及requirements.txt文件,代码推送到GitHub后尝试部署,但始终无法推进。请问该如何解决这个报错?
已配置文件内容
build_files.sh
pip install -r requirements.txt python3.10 manage.py collectstatic
vercel.json
{ "version": 2, "builds": [ { "src": "blog/wsgi.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.10" } }, { "src": "build_files.sh", "use": "@vercel/static-build", "config": { "distDir": "staticfiles_build" } } ], "routes": [ { "src": "/static/(.*)", "dest": "/static/$1" }, { "src": "/(.*)", "dest": "blog/wsgi.py" } ] }
解决建议
结合Vercel部署Django的常见问题,给你以下几个排查和修复方向:
1. 修正collectstatic执行逻辑
默认情况下collectstatic会要求交互确认,CI/CD环境中必须添加非交互参数,修改build_files.sh:
pip install -r requirements.txt python3.10 manage.py collectstatic --noinput
2. 调整构建顺序与静态资源路径匹配
Vercel的builds数组按从上到下顺序执行,静态资源构建需优先于WSGI应用,同时要保证distDir和Django配置的STATIC_ROOT完全一致:
- 在Django的
settings.py中设置:STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles_build') - 修改
vercel.json的builds顺序,将静态构建放在前面:"builds": [ { "src": "build_files.sh", "use": "@vercel/static-build", "config": { "distDir": "staticfiles_build" } }, { "src": "blog/wsgi.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.10" } } ]
3. 修复PostgreSQL连接配置
Vercel上Django连接PostgreSQL需满足以下条件:
- 在Vercel项目的环境变量中配置完整的数据库连接参数(可直接用
DATABASE_URL,或拆分DB_HOST、DB_NAME、DB_USER、DB_PASSWORD) - 在Django的
settings.py中正确读取环境变量,示例:import dj_database_url DATABASES = { 'default': dj_database_url.config(default='postgres://user:pass@host:port/dbname') } - 确保云PostgreSQL数据库(如ElephantSQL、AWS RDS)的防火墙规则允许Vercel的IP段访问
4. 检查依赖完整性与版本
- 确认
requirements.txt包含必要依赖:dj-database-url(处理数据库连接)、gunicorn(Vercel部署Django所需的WSGI服务器)、psycopg2-binary(PostgreSQL适配依赖) - 保证依赖版本与本地开发环境兼容,避免版本冲突
5. 修正静态资源路由规则
在vercel.json的routes中,确保静态资源路由指向正确的构建目录:
{ "src": "/static/(.*)", "dest": "/staticfiles_build/$1" }
内容的提问来源于stack exchange,提问作者sujan
相关产品推荐
相关产品推荐

