在部署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 。