如何实现Django-React应用自动化部署,推送生产分支代码即可自动上线?
Django + React 全流程自动部署可行方案
以下两种方案均可以实现「推送生产分支代码后自动完成全流程部署」的需求,无需手动操作WinSCP、Putty等工具:
方案一:轻量化自建Webhook方案(零额外成本,适合中小项目)
- 提前给AWS部署服务器配置SSH密钥,确保服务器可以免密拉取前后端两个仓库的代码。
- 在服务器上编写部署执行脚本
deploy.sh,参考内容如下,写完后执行chmod +x deploy.sh赋予执行权限,可先手动运行验证所有步骤正常:
#!/bin/bash # 切换到前端项目目录,拉取最新生产分支代码 cd /path/to/your/react-project git pull origin main # 替换成你自己的生产分支名 # 安装依赖并构建前端产物 npm install npm run build # 拷贝构建产物到Django静态文件目录 cp -rf dist/* /path/to/your/django-project/static/ # 切换到后端项目目录,拉取最新生产分支代码 cd /path/to/your/django-project git pull origin main # 替换成你自己的生产分支名 # 安装Python依赖 pip install -r requirements.txt # 执行数据库迁移 python manage.py migrate # 收集静态文件 python manage.py collectstatic --noinput # 重启Django服务,替换成你自己的服务名 systemctl restart django-gunicorn
- 在服务器上部署一个极简的Webhook接收服务(几行代码即可实现,Flask、Node.js都可以),监听Git仓库的推送事件,只有收到生产分支的推送请求时,才触发执行上面的
deploy.sh脚本。在你托管代码的Git平台配置Webhook地址指向该服务,同时加签名校验避免恶意触发。
方案二:标准CI/CD工具方案(更稳定易维护,适合需要多环节校验的项目)
你可以直接用GitHub Actions、GitLab CI、AWS CodePipeline这类现成的CI/CD工具,无需自己维护Webhook服务:
- 在代码仓库中添加CI配置文件,设置触发规则为「生产分支收到推送时执行部署流程」。
- 把AWS服务器的SSH密钥、数据库密码等敏感信息存到代码仓库的保密变量中,CI环境可直接读取不会明文泄露。
- 配置CI的执行步骤:自动拉取前后端最新代码、安装依赖、构建前端产物,之后通过SSH连接到AWS服务器,传输产物和最新后端代码,执行迁移、收集静态文件、重启服务的操作即可。
注意事项:
- 部署脚本建议增加备份环节,执行数据库迁移前先备份数据库,出现异常可以快速回滚。
- 可以在部署流程最后增加健康检查步骤,请求服务接口确认服务正常运行,异常自动触发回滚逻辑。
内容的提问来源于stack exchange,提问作者nerd_geek365
相关产品推荐
相关产品推荐

