在部署rails应用程序之前,我需要做些什么

编辑

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

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

  • 冻结你使用rake gems:unpack
  • 更改config/environment.rb的密码
  • 过滤敏感信息,如密码:在app/controllers/application.rb filter_parameter_logging :password, :password_confirmation
  • 确保在生产服务器上设置了DB
  • 设置capistrano以正确部署您的应用程序
    • 运行capistrano干运行
  • 确保Rails已打包到vendor / rails文件夹中
  • 确保所有gem都冻结在您的应用程序中或安装在您的prod服务器上
  • 在生产计算机上运行测试
  • 包括google analytics片段(或其他分析)
  • 检查慢查询日志 ,并向模型添加任何导致全表遍历的索引。

  • grep -ril FIXME

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

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

  • 备份; 不可否认,这可能最终成为一项重大任务,但不一定如此。 简单地安排数据库和软件的夜间备份通常就足够了。
  • 测试恢复程序
  • 记录轮换和归档
  • exception通知
  • 确保要部署的位置正确设置了RAILS_ENV变量。 无论是通过环境,还是通过capistrano回调。
  • 确保您的测试都通过运行rake spec,shoulda,unit testing或用于测试的任何内容来完成。
  • 使用rake gems打开gem:打开包装
  • 决定是否需要冻结Rails。 rake rails:freeze:gems
  • 如果您需要的不仅仅是gems(memcached,邮件服务器等),请仔细检查服务器上是否安装了依赖项
  • 如果您使用的是MySQL,请在服务器上编译并安装基于C的MySQL库(这可能需要几分钟的时间,但如果满足所有依赖关系,通常会相当快)。
  • 如果您使用的是git,请将代码推送到主分支。 必要时标记它。
  • 如果您使用的是SVN,请标记该版本。

我找到了一篇非常好的文章,用于使用ubuntu部署rails app 。