部署Rails应用程序之前我需要做些什么?

时间:2020-03-06 14:25:29  来源:igfitidea点击:

编辑

在部署Rails应用程序之前,我需要做哪些太容易忽略的小事情?

我为所有耗时一两分钟以上的任务设置了另一个问题,因此应该安排在部署过程中。在这个问题中,我最关心的是可以使用的在线配置选项和类似选项,但是在开发周期中经常被忽略,因为它们在部署之前没有任何区别

解决方案

  • 确保在生产服务器上设置了数据库
  • 确保Rails已打包到vendor / rails文件夹中
  • 确保所有宝石都冻结在应用程序中或者安装在产品服务器上
  • 在生产机器上运行测试

  • 检查慢查询日志,然后将所有导致全表遍历的索引添加到模型中。
  • 还grep -ril FIXME

  • 包括Google Analytics(分析)摘要(或者其他分析)

设置要在应用程序的已部署副本之间共享的文件和文件夹,包括(但不限于)视图缓存,数据库配置,维护页面...

  • 冻结我们正在使用的宝石rake gems:unpack
  • 更改config / environment.rb中的秘密
  • 过滤敏感信息,例如密码:在app / controllers / application.rb``中filter_parameter_logging:password,:password_confirmation

这些并不是特定于Rails的部署任务,但我发现对于已部署的系统,它们被忽略了太多次:

  • 备份;诚然,这最终可能是一项艰巨的任务,但不一定如此。只需安排数据库和软件的每晚备份通常就足够了。
  • 测试还原程序
  • 日志旋转和归档
  • 例外通知

  • 确保要部署到的位置已正确设置RAILS_ENV变量。通过环境或者通过capistrano回调。
  • 通过运行rake规范,should,单元测试或者用于测试的任何内容,确保所有测试均通过。
  • 使用rake gems打开宝石的包装:
  • 确定是否需要冻结Rails。耙轨:冻结:宝石
  • 如果我们需要的不仅仅是gem(内存缓存,邮件服务器等),请仔细检查服务器上是否已安装依赖项。
  • 如果我们使用的是MySQL,请在服务器上编译并安装基于C的MySQL库(这可能需要几分钟的时间,但是如果满足所有依赖性,通常会很快)。
  • 如果使用的是git,则将代码推送到master分支。如有必要,标记它。
  • 如果使用的是SVN,请标记版本。

我发现了一篇很好的文章,介绍了如何使用ubuntu部署Rails应用程序。