capistrano / mina 可以用来发布rails项目,它们是应用发布的最佳实践。
关于应用发布,需要满足以下要求:
capistrano/mina的解决方案:
配置:
capistrano(以下简称cap)写一个 config/deploy.rb
,里面定义了一系列的rake任务,以及一系列的role(角色,比如数据库,应用服务器,网站服务器), rake任务定义了在什么role上面执行什么命令。各种配置环境写在config/deploy/文件夹里面,命名 producton
, staging
等, 当需要发布项目的时候,执行 cap production deploy
,就根据配置环境和deploy脚本执行操作。
执行任务过程如下:
cap在服务器上面执行代码的方式,是通过维护一个ssh连接实现的,每次执行任务都要上传命令,返回结果,如果ssh连接比较慢的话,整体消耗时间就很长。 mina它的原理是生成一个bash脚本,上传到服务器上面执行,这样执行效率比cap高太多,大家可以考虑作为替代使用。
这种方式是传统的编译发布,另外有直接发布环境的方法,比如用docker。不过这种发布方式我没有研究清楚,等研究过之后再比较吧。