如何在Heroku上取消部署Django应用并完成重新部署?
首先需要明确:单纯取消当前部署再重新部署无法从根源解决内容丢失问题。Heroku的dyno实例采用临时文件系统,每次实例重启、重新部署、休眠唤醒时都会重置所有运行阶段写入的非内置静态文件,你提到的新增站点内容丢失是该平台的固有特性,仅重新部署不会改变这个机制。
取消现有Heroku部署的操作步骤
- 登录Heroku账户进入对应应用的管理面板
- 若仅需回滚到历史部署版本:切换到「Deploy」标签页,下拉找到「Activity」板块,选中需要恢复的历史版本,点击
Roll back to here即可取消当前最新部署,回退到对应历史版本 - 若需要完全移除当前部署的应用:切换到「Settings」标签页,下拉到页面最底部的「Delete app」选项,点击后按提示输入应用名称确认即可彻底取消部署
重新部署Django应用到Heroku的操作步骤
- 本地预先完成Django项目的Heroku适配:确保根目录存在
Procfile启动配置文件、requirements.txt依赖清单、已安装django-heroku依赖并完成配置、ALLOWED_HOSTS参数已添加Heroku应用域名 - 本地终端进入项目根目录,执行
heroku login按提示完成账户登录 - 若之前已删除原有应用,执行
heroku create 自定义应用名创建新的Heroku应用实例 - 依次执行以下命令提交代码并触发部署:
注意如果你的本地Git主分支名为git add . git commit -m "redeploy django project" git push heroku mainmaster,需要将最后一条命令中的main替换为master - 部署完成后执行
heroku run python manage.py migrate完成数据库迁移,如有需要可执行heroku run python manage.py createsuperuser重建管理员账户
内容丢失问题的根因修复方案
所有运行时生成的动态内容不能存储在Heroku实例本地,需要替换为持久化存储方案:
- 结构化动态数据:使用Heroku官方提供的PostgreSQL附加组件存储,不要使用默认的本地SQLite数据库,SQLite文件会在每次部署后被重置
- 媒体文件/用户上传资源:对接第三方对象存储服务,修改Django的
DEFAULT_FILE_STORAGE配置项指向第三方存储后端,所有用户上传的内容直接写入第三方存储,不会随Heroku实例重置丢失
内容的提问来源于stack exchange,提问作者bernardo
相关产品推荐
相关产品推荐

