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

如何将部署在Heroku的Django Web应用迁移至AWS Elastic Beanstalk

从Heroku迁移Django应用到AWS Elastic Beanstalk完整步骤

注意:Elastic Beanstalk运行环境的本地存储是非持久化的,不要继续使用sqlite作为生产数据库,否则实例重启或替换后所有存在sqlite里的数据都会丢失,建议迁移到AWS RDS托管数据库。

一、迁移前准备工作

  • 把Heroku上的现有项目代码完整拉到本地,确保本地可以正常运行:git clone <你的heroku项目git地址>
  • 导出Heroku上的存量数据:可以直接在Heroku CLI执行heroku run python manage.py dumpdata > data.json导出全量数据备份,也可以把远程sqlite文件拉到本地后执行python manage.py dumpdata > data.json
  • 整理项目依赖,把所有用到的包都写入requirements.txt,所有包最好固定版本号,额外添加gunicorn依赖(Elastic Beanstalk运行Python WSGI应用的默认服务器)
  • 修改Django的settings.py配置:
    • 把DEBUG改为False,生产环境禁止开启调试
    • 后续要用到的AWS域名、自定义域名都加到ALLOWED_HOSTS列表
    • 注释原有sqlite数据库配置,替换为适配AWS RDS的配置,数据库连接信息用环境变量占位,后续在Elastic Beanstalk控制台配置即可
    • 新增静态文件配置STATIC_ROOT = os.path.join(BASE_DIR, "static/"),适配Elastic Beanstalk的静态文件收集逻辑

二、安装配置AWS工具

  • 本地安装AWS CLI,安装完成后执行aws configure,按照提示配置你的AWS访问密钥、默认部署区域
  • 安装Elastic Beanstalk CLI(eb cli),用于后续快速操作Elastic Beanstalk资源

三、初始化Elastic Beanstalk环境

  • 进入本地Django项目根目录,执行eb init,按照提示选择对应AWS区域、选择Python作为运行平台、输入应用名称,SSH访问配置按需选择即可
  • 执行eb create <自定义环境名称>创建运行环境,过程中如果需要配套RDS数据库,可以直接选择新建RDS实例,选择对应数据库类型、规格,设置数据库账号密码即可
  • 等待环境创建完成,耗时大概5到10分钟,创建完成后执行eb open可以打开默认应用页面,确认基础环境运行正常

四、部署应用&导入数据

  • 把本地项目代码部署到刚创建的Elastic Beanstalk环境:执行eb deploy
  • 部署完成后可以通过eb ssh登录实例,或者直接用Elastic Beanstalk控制台的远程命令功能执行以下操作:
    • 执行数据库表结构迁移:python manage.py migrate
    • 导入之前备份的存量数据:python manage.py loaddata data.json
    • 收集静态资源:python manage.py collectstatic
  • 访问应用地址,验证所有功能、数据展示都正常

五、收尾配置

  • 把原有的自定义域名解析到Elastic Beanstalk的负载均衡地址
  • 可以通过AWS Certificate Manager申请免费HTTPS证书,绑定到负载均衡上开启HTTPS访问
  • 检查所有敏感配置(比如Django的SECRET_KEY、第三方服务密钥、数据库连接信息)都已经配置到Elastic Beanstalk的环境变量中,不要硬编码在项目代码里
  • 全量测试功能无异常后,再销毁Heroku上的原有应用资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:00:06