如何暂时停用 Heroku 上的 Ruby on Rails 应用以停止付费?
结论
可以暂停应用并停止支付 Heroku SSL Endpoint 的月费,但开启维护模式或把 dyno 缩容到 0,都不会自动停止 SSL Endpoint 计费。要取消这笔费用,必须移除对应的付费 SSL Endpoint。
移除 Endpoint 通常不会影响 Heroku 应用、代码、环境变量和大部分配置,但原来的端点地址可能失效。以后重新启用时,可能需要创建新的端点、上传证书并修改 DNS 记录。因此,很难同时做到完全停止付费,又原样保留 SSL 配置以便随时恢复。
DNSimple 账户套餐能否暂停,要看当时的套餐条款和取消政策。域名注册、DNS 托管和账户订阅是三项不同的服务。即使应用停止运行,域名仍需按期续费;取消 DNS 托管还可能导致域名无法解析。
暂停 Heroku 应用
先把 Web dyno 缩容到 0:
heroku ps:scale web=0 --app your-app-name
如果应用还有 worker、scheduler 或其他进程,也要逐一检查并停止:
heroku ps --app your-app-name
heroku ps:scale worker=0 --app your-app-name
接着检查应用当前启用的附加服务:
heroku addons --app your-app-name
如果列表中有按月收费的 SSL Endpoint,需要将其移除。旧版 Heroku SSL Endpoint 常见的操作形式是:
heroku addons:remove ssl:endpoint --app your-app-name
部分旧版 CLI 或历史文档中使用的是:
heroku addons:destroy ssl:endpoint --app your-app-name
Heroku CLI 和产品调整后,命令名称可能发生变化。执行前,应以 heroku addons 显示的实际附加服务名称为准。删除付费附加服务会影响线上配置,继续操作前要核对确认提示中的应用名和服务名。
还要检查其他可能持续计费的项目,例如:
- 付费 dyno 或额外进程
- Heroku Postgres 付费方案
- Redis、日志、监控等 add-on
- Scheduler 执行的定时任务
- 其他按资源量计费的服务
开启维护模式不能停止这些费用:
heroku maintenance:on --app your-app-name
维护模式只会阻止正常访问,不会取消 dyno、数据库或 SSL Endpoint。
将来如何恢复
准备重新上线时,先恢复所需的 dyno:
heroku ps:scale web=1 --app your-app-name
然后重新配置证书。现代 Heroku 环境可能使用 Heroku Automated Certificate Management,也可能需要手动配置证书。具体方式取决于应用套餐、域名设置和当时可用的 Heroku 产品。
可以先查看证书状态:
heroku certs --app your-app-name
如果重新创建 SSL Endpoint 后获得了新的 DNS target,就要在 DNSimple 中更新相应的 CNAME、ALIAS 或其他记录。恢复后的 endpoint hostname 不一定与原来相同。
只要没有删除整个 Heroku 应用,通常无须重新部署代码。现有 Git 关联、环境变量和应用配置一般会保留。数据库和第三方 add-on 能否保留,则取决于它们是否被删除或降级。
DNSimple 费用能否一起暂停
需要分别处理以下三项:
- 域名所有权和续费
- DNS 解析服务
- DNSimple 账户或套餐订阅
网站暂时下线不会暂停域名注册期限。如果几个月后还要继续使用同一域名,就必须按时续费,并保留有效的注册人邮箱和账户访问权限。
取消 DNSimple 付费套餐后,现有 DNS zone、记录和历史配置是否保留,应以当前套餐条款为准。不能假定取消后所有记录都会永久保存,也不能假定重新订阅后会自动恢复。
如果确定要取消,建议提前做好以下准备:
- 导出或完整记录当前 DNS zone
- 保存所有
A、AAAA、CNAME、MX、TXT和 CAA 记录 - 记录域名当前使用的 nameserver
- 保存证书、私钥和证书链,但不要把私钥提交到 Git
- 确认取消套餐不会关闭域名自动续费
- 确认邮件服务是否依赖 DNSimple 中的 MX、SPF、DKIM 或 DMARC 记录
如果取消 DNS 服务后仍要保留正常的域名注册,可以先把 DNS 托管迁移到其他服务商,再修改域名的 nameserver。不过,这会增加迁移和恢复工作,无法满足以后无须重新配置的要求。
更稳妥的选择
如果只暂停几个月,可以考虑:
- 将所有 Heroku dyno 缩容到 0
- 删除确实产生月费的 SSL Endpoint
- 降级或删除不再需要的付费 add-on
- 保留 Heroku 应用本身
- 保留域名注册
- 根据 DNSimple 当前套餐价格和取消后果,决定是否继续使用其 DNS 托管
这样可以减少大部分运行费用,同时保留应用代码和核心配置。重新上线时,可能仍需配置新的 SSL Endpoint,并根据新的 endpoint hostname 修改 DNS。
题目中的 $20 SSL Endpoint 和 $8.00 DNSimple 套餐,是特定时期的产品和价格。Heroku 与 DNSimple 后续可能调整 SSL 产品、套餐或计费方式。实际操作前,应在两个平台的 Billing 页面确认当前收费项目,不要只按历史价格判断。
备注:内容仅供参考。
