可伸缩的高性能 Rails 应用程序开发和部署实践(5)
 
- UID
- 1066743
|

可伸缩的高性能 Rails 应用程序开发和部署实践(5)
使用 Capistrano 进行快速部署在进行 Rails 部署的时候你可以直接从 svn 或者 git 下面更新代码,运行 db:migrate 来进行数据库的更新,然后进行这样那样的操作后,再启动服务器,便可进行部署,即便你只有一台机器,你也会觉得太麻烦,如果你需要多台机器来运行,那你可能就会觉得每次手工部署都是一场恶梦,你可以使用 shell 脚本来简化部署的程序。在用 Rails 开发应用时,你可以使用 Capistrano 插件来进行更简单的部署工作。简单来说,Capistrano 是一个通过 SSH 并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。 它通过一个个已有的和用户自定制的任务让部署过程简单化。
清单 20. 安装 Capistrano
然后在 config/deploy.rb 中配置要部署的服务器的地址,各种服务器的角色以及每个服务器统一的用户名和密码,如下面的样例配置:
清单 21. 配置 Capistrano1
2
3
4
5
6
7
8
9
10
11
12
13
14
| set :application, "test_app" # 应用的名称
set :scm_username, "test" # 资源库的用户名
set :scm_password, 'test' # 资源库的密码
set :repository, Proc.new {"--username #{scm_username}
--password #{scm_password} svn://localhost/test_app/trunk"}
# 资源库
set :user, "test" # 服务器 SSH 用户名
set :password, 'test' # 服务器 SSH 密码
set :deploy_to, "/var/www/#{application} "
# 在服务器上的部署路径,默认的部署路径是 /u/apps/#{application}
role :Web, 'Web.test_app.com' # 前端 Web 服务器
role :app, 'app1.test_app.com', 'app2.test_app.com', 'app3.test_app.com' #Rails 应用服务器
role :db, 'app1.test_app.com', :primary => true
# 运行 migrate 脚本的机器,通常为其中一台应用服务器。
|
在使用 Capistrano 进行部署的时候,通常是这样使用 cap sometask来运行任务。你可以先用 cap -h查看所有的选项,并用 cap -T查看现有的所有任务。如 cap migrate则在 role 为 db 的机器上执行 rake db:migrate命令。使用 Capistrano 的更多资料可以参考 http://wiki.capify.org 这个网站。另外,Capistrano 还可以使用在非 Rails 环境下进行自动部署,在配置好 ruby 环境和 Capistrano 插件后,再安装下面的插件即可:
清单 22. 非 Rails 环境使用 Capistrano |
|
|
|
|
|