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

在Vercel部署Django应用时遭遇错误,请求协助排查

Django应用Vercel部署失败排查与解决方案

核心失败原因

  1. mysqlclient编译依赖缺失:Vercel的Python构建环境默认没有预装MySQL/MariaDB的系统级开发库(如libmysqlclient-dev、pkg-config),导致mysqlclient==2.2.4无法编译安装,直接中断整个依赖安装流程。
  2. 路径不匹配:vercel.json中配置的WSGI入口路径gestor_backend/wsgi.py与实际项目的gestion_api/wsgi.py不一致,即使依赖安装成功,后续也会出现路由错误。
  3. 依赖安装失败连锁反应:mysqlclient安装失败导致pip终止执行,Django等核心依赖未被安装,最终执行collectstatic时抛出ModuleNotFoundError。

分步解决方案

方案一:替换为纯Python MySQL驱动(推荐)

避免编译依赖问题,改用无需系统库的纯Python驱动:

  • 修改requirements.txt,删除mysqlclient==2.2.4,添加:
    mysql-connector-python==8.3.0
    
  • 修改settings.py中的数据库引擎配置:
    DATABASES = {
        'default': {
            'ENGINE': 'mysql.connector.django',  # 替换原django.db.backends.mysql
            'NAME': 'blhxbsdfdpwwotaucuuz',
            'USER': 'uwsbtwwudwfinla4',
            'PASSWORD': '//password',
            'HOST': 'blhxbsdfdpwwotaucuuz-mysql.services.clever-cloud.com',
            'PORT': '3306'
        }
    }
    

方案二:在构建脚本中预装编译依赖(适合坚持用mysqlclient的场景)

在build_files.sh中先安装系统级依赖,再执行pip安装:

apt-get update && apt-get install -y libmysqlclient-dev pkg-config
pip install -r requirements.txt
python3 manage.py collectstatic --noinput

方案三:修正vercel.json路径错误

将vercel.json中的WSGI路径改为实际项目路径:

{
    "version": 2,
    "builds": [
      {
        "src": "gestion_api/wsgi.py",
        "use": "@vercel/python",
        "config": {
          "maxLambdaSize": "15mb",
          "runtime": "python3.8"
        }
      },
      {
        "src": "build_files.sh",
        "use": "@vercel/static-build",
        "config": {
          "distDir": "staticfiles"
        }
      }
    ],
    "routes": [
      {
        "src": "/static/(.*)",
        "dest": "/static/$1"
      },
      {
        "src": "/(.*)",
        "dest": "gestion_api/wsgi.py"
      }
    ]
  }

额外生产环境优化

  1. 敏感信息迁移到环境变量:在Vercel项目设置中添加SECRET_KEY、DB_PASSWORD等环境变量,修改settings.py读取环境变量:
    import os
    SECRET_KEY = os.environ.get('SECRET_KEY', '默认测试密钥')
    DATABASES = {
        'default': {
            'ENGINE': 'mysql.connector.django',
            'NAME': os.environ.get('DB_NAME', 'blhxbsdfdpwwotaucuuz'),
            'USER': os.environ.get('DB_USER', 'uwsbtwwudwfinla4'),
            'PASSWORD': os.environ.get('DB_PASSWORD', '//password'),
            'HOST': os.environ.get('DB_HOST', 'blhxbsdfdpwwotaucuuz-mysql.services.clever-cloud.com'),
            'PORT': os.environ.get('DB_PORT', '3306')
        }
    }
    
  2. 关闭DEBUG模式:生产环境设置DEBUG = False,防止泄露敏感信息。
  3. 配置静态文件根目录:在settings.py中添加:
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    
    确保collectstatic能正确将静态文件收集到指定目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:05:55