仅转载了,还没有用过,如果有问题可留言,大家一起讨论
在进行 Rails 部署的时候你可以直接从 svn 或者 git 下面更新代码,运行 db:migrate 来进行数据库的更新,然后进行这样那样的操作后,再启动服务器,便可进行部署,即便你只有一台机器,你也会觉得太麻烦,如果你需要多台机器来运行,那你可 能就会觉得每次手工部署都是一场恶梦,你可以使用 shell 脚本来简化部署的程序。在用 Rails 开发应用时,你可以使用 Capistrano 插件来进行更简单的部署工作。简单来说,Capistrano 是一个通过 SSH 并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。 它通过一个个已有的和用户自定制的任务让部署过程简单化。
清单 20. 安装 Capistrano
gem sources -a http://gems.github.com/
gem install Capistrano
然后在 config/deploy.rb 中配置要部署的服务器的地址,各种服务器的角色以及每个服务器统一的用户名和密码,如下面的样例配置:
清单 21. 配置 Capistrano
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
gem sources -a http://gems.github.com/
gem install leehambley-railsless-deploy
另外一种方法
1.
安装
gem install capistrano
2.
加入capistrano支持
cap --apply-to /path/to/my/app MyApplicationName
3.
修改配置文件
修改config/deploy.rb文件。
4.
初始化服务器上的运行环境
rake remote:exec ACTION=setup
这一步会连上你的服务器,创建一些目录。
5.
部署
rake deploy
连接服务器,完成部署。
说起来好像挺简单,麻烦的地方主要在于修改config/deploy.rb配置文件。一般来说主要配置的参数包括:
* application:应用名。
* repository:版本管理系统的链接URL。
* web:web服务器名列表。
* app:应用服务器列表。
* db:数据库服务器列表。
* user:ssh用户名。
* deploy_to:应用部署路径。
如果你的svn链接需要用户名和密码,可以通过svn_username和svn_password配置,文档中没写,算我免费友情提示。
除了setup和deploy,缺省支持的命令主要有:
* disable_web:生成maintenance.html,你的系统需要能够自检测这个文件。
* enable_web:删除maintenance.html。
* update_code:和版本管理器做代码同步。
* rollback_code:如果部署完发现有问题,可以用这个命令换回上一个。
* restart:重启,其实就是调用了reaper。
* migrate:在服务器端运行rake RAILS_ENV=#{rails_env} migrate。
* deploy:其实就是update_code+symlink+restart。
* deploy_with_migrations:update_code+migrate+symlink+restart。
* rollback: rollback_code + restart。
还有一些其它的命令,具体可以查看gem capistrano安装目录下lib/recipes中的standard.rb。另外,可以自己在deploy.rb中定义新的命令。
目前的capistrano(版本1.1.0)还有一些局限,比如你所有服务器都必须使用同样的账号,这个让我在dreamhost上部署碰到了一点麻烦。总的来说还是比较方便的。
石锅拌饭写了一篇BLOG:尝试用capistrano部署ruby on rails应用,但新手在实际应用时还是会有不少麻烦,尤其是国内很多人都是在Windows平台上开发Rails Application, capistrano 是不可以从 Windows 平台上 rake deploy 到 Linux 上的。
这 里我分享一下在 Windows 平台上开发,然后 cap 发布到 dailybuild 服务器(SVN是建立在内部网的,capistrano 完成 dailybuild), 然后再使用 linux 的 rsync 命令将 dailybuild 服务器上测试完成的应用发布到 Internet 上的过程。
完成这个演示至少需要三台计算机:
A (Windows) :一台Winsows开发计算机
B (Linux):一台SVN服务器,一台dailybuild服务器 (SVN和dailybuild在同一台计算机)
C (Linux):一台Internet上的服务器
一、安装 capistrano
在A和B上都需要安装 capistrano ,安装 gem 很简单:
gem install capistrano
二、应用 capistrano
1. 在开发计算机上应用 capistrano :
* cap –apply-to x:/path/to/my/app MyApplicationName
2. 修改 config/deploy.rb 文件
set :application, “app”
set :repository, http://192.168.0.9/svn/repo1/#{application}
role :web, “localhost”
role :app, “localhost”
set :deploy_to, “/u/apps/#{application}”
set :user, “user”
set :password, “password”
#如果在dailybuild服务器上使用的数据库的environment不一样,则可以在deploy.rb文件末尾加上以下语句:
desc “link in production database&environment credentials”
task :after_update_code do
run <<-CMD
rm #{release_path}/config/environment.rb &&
ln -nfs #{deploy_to}/#{shared_dir}/config/environment.rb #{release_path}/config/environment.rb ;
rm #{release_path}/config/database.yml &&
ln -nfs #{deploy_to}/#{shared_dir}/config/database.yml #{release_path}/config/database.yml
CMD
end
三、从A计算机上将RoR App提交到SVN服务器上
四、在计算机B上得到SVN上的App(该动作只需进行一次,以后使用rake deploy时capistrano是直接从SVN获取最新代码的)
/root# svn co http://192.168.0.9/svn/repo1/app –username yourusername –password yourpassword
五、初始化服务
/root# cd app
/root/app# rake remote:exec ACTION=setup
六、部署
/root/app# rake deploy
七、要实现 dailybuild , 可以将第步骤六写一个sh脚本,并将脚本加入linux cron中,设置为每天早上00:00执行即可
八、由于SVN是安装在内部网上的,运行在Internet上的服务器不能访问,可以不可以直接使用 capistrano 将内部的更新deploy到外部,可以使用 linux rsync 将 dailybuild 上的最新代码同步到外部
# rsync -zrtopg –delete /u/apps/app/ root@xxx.xxx.xxx.xxx:/u/apps/app
在进行 Rails 部署的时候你可以直接从 svn 或者 git 下面更新代码,运行 db:migrate 来进行数据库的更新,然后进行这样那样的操作后,再启动服务器,便可进行部署,即便你只有一台机器,你也会觉得太麻烦,如果你需要多台机器来运行,那你可 能就会觉得每次手工部署都是一场恶梦,你可以使用 shell 脚本来简化部署的程序。在用 Rails 开发应用时,你可以使用 Capistrano 插件来进行更简单的部署工作。简单来说,Capistrano 是一个通过 SSH 并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。 它通过一个个已有的和用户自定制的任务让部署过程简单化。
清单 20. 安装 Capistrano
gem sources -a http://gems.github.com/
gem install Capistrano
然后在 config/deploy.rb 中配置要部署的服务器的地址,各种服务器的角色以及每个服务器统一的用户名和密码,如下面的样例配置:
清单 21. 配置 Capistrano
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
gem sources -a http://gems.github.com/
gem install leehambley-railsless-deploy
另外一种方法
1.
安装
gem install capistrano
2.
加入capistrano支持
cap --apply-to /path/to/my/app MyApplicationName
3.
修改配置文件
修改config/deploy.rb文件。
4.
初始化服务器上的运行环境
rake remote:exec ACTION=setup
这一步会连上你的服务器,创建一些目录。
5.
部署
rake deploy
连接服务器,完成部署。
说起来好像挺简单,麻烦的地方主要在于修改config/deploy.rb配置文件。一般来说主要配置的参数包括:
* application:应用名。
* repository:版本管理系统的链接URL。
* web:web服务器名列表。
* app:应用服务器列表。
* db:数据库服务器列表。
* user:ssh用户名。
* deploy_to:应用部署路径。
如果你的svn链接需要用户名和密码,可以通过svn_username和svn_password配置,文档中没写,算我免费友情提示。
除了setup和deploy,缺省支持的命令主要有:
* disable_web:生成maintenance.html,你的系统需要能够自检测这个文件。
* enable_web:删除maintenance.html。
* update_code:和版本管理器做代码同步。
* rollback_code:如果部署完发现有问题,可以用这个命令换回上一个。
* restart:重启,其实就是调用了reaper。
* migrate:在服务器端运行rake RAILS_ENV=#{rails_env} migrate。
* deploy:其实就是update_code+symlink+restart。
* deploy_with_migrations:update_code+migrate+symlink+restart。
* rollback: rollback_code + restart。
还有一些其它的命令,具体可以查看gem capistrano安装目录下lib/recipes中的standard.rb。另外,可以自己在deploy.rb中定义新的命令。
目前的capistrano(版本1.1.0)还有一些局限,比如你所有服务器都必须使用同样的账号,这个让我在dreamhost上部署碰到了一点麻烦。总的来说还是比较方便的。
石锅拌饭写了一篇BLOG:尝试用capistrano部署ruby on rails应用,但新手在实际应用时还是会有不少麻烦,尤其是国内很多人都是在Windows平台上开发Rails Application, capistrano 是不可以从 Windows 平台上 rake deploy 到 Linux 上的。
这 里我分享一下在 Windows 平台上开发,然后 cap 发布到 dailybuild 服务器(SVN是建立在内部网的,capistrano 完成 dailybuild), 然后再使用 linux 的 rsync 命令将 dailybuild 服务器上测试完成的应用发布到 Internet 上的过程。
完成这个演示至少需要三台计算机:
A (Windows) :一台Winsows开发计算机
B (Linux):一台SVN服务器,一台dailybuild服务器 (SVN和dailybuild在同一台计算机)
C (Linux):一台Internet上的服务器
一、安装 capistrano
在A和B上都需要安装 capistrano ,安装 gem 很简单:
gem install capistrano
二、应用 capistrano
1. 在开发计算机上应用 capistrano :
* cap –apply-to x:/path/to/my/app MyApplicationName
2. 修改 config/deploy.rb 文件
set :application, “app”
set :repository, http://192.168.0.9/svn/repo1/#{application}
role :web, “localhost”
role :app, “localhost”
set :deploy_to, “/u/apps/#{application}”
set :user, “user”
set :password, “password”
#如果在dailybuild服务器上使用的数据库的environment不一样,则可以在deploy.rb文件末尾加上以下语句:
desc “link in production database&environment credentials”
task :after_update_code do
run <<-CMD
rm #{release_path}/config/environment.rb &&
ln -nfs #{deploy_to}/#{shared_dir}/config/environment.rb #{release_path}/config/environment.rb ;
rm #{release_path}/config/database.yml &&
ln -nfs #{deploy_to}/#{shared_dir}/config/database.yml #{release_path}/config/database.yml
CMD
end
三、从A计算机上将RoR App提交到SVN服务器上
四、在计算机B上得到SVN上的App(该动作只需进行一次,以后使用rake deploy时capistrano是直接从SVN获取最新代码的)
/root# svn co http://192.168.0.9/svn/repo1/app –username yourusername –password yourpassword
五、初始化服务
/root# cd app
/root/app# rake remote:exec ACTION=setup
六、部署
/root/app# rake deploy
七、要实现 dailybuild , 可以将第步骤六写一个sh脚本,并将脚本加入linux cron中,设置为每天早上00:00执行即可
八、由于SVN是安装在内部网上的,运行在Internet上的服务器不能访问,可以不可以直接使用 capistrano 将内部的更新deploy到外部,可以使用 linux rsync 将 dailybuild 上的最新代码同步到外部
# rsync -zrtopg –delete /u/apps/app/ root@xxx.xxx.xxx.xxx:/u/apps/app
发表评论
-
ruby进行web serveice的方法
2011-02-15 14:37 858require 'soap/wsdlDriver' #url ... -
友好的登录系统
2011-01-28 10:54 707友好的登录系统 按照目前的代码,如果管理员尝试在未登录的状态下 ... -
第三版
2011-01-27 15:36 0view格式化价格 <%= number_to_curr ... -
用户操作数据库记录
2011-01-25 15:16 882今天我们看看怎样在数据库记录用户操作 db/migrate/0 ... -
Ruby中 respond_to? 和 send 的用法
2011-01-25 14:24 1286obj = Object.new if obj ... -
rails 路由
2011-01-25 14:17 11844 正则路由 Rails支持 ... -
rails 验证自定义方法
2011-01-25 11:37 1599可以自定义validate(), 这个方法在每次保存数据时都会 ... -
flash-notice自动消失
2011-01-25 11:12 1451flash 提示的自动消失: <body onloa ... -
密码加密和解密
2011-01-25 11:11 1231two way crypt: #http://crypt. ... -
开发环境页面直接调试
2011-01-25 11:06 696#首先,在layout里边的合适地方添加debug,并且使 ... -
对静态页面进行缓存
2011-01-24 14:35 961对于静态站点我们可以利用Rails的cache来管理,如在co ... -
rvm部署rails3和ruby192
2011-01-21 10:39 11121. Installing RVM $ sudo gem ... -
rails要理解
2011-01-18 10:57 643清单3 module Dictionary ... -
rails 加载不同插件设置
2010-12-31 14:49 407config.plugins = [ :all ] co ... -
参考rails 下拉
2010-12-31 14:47 682对于多数的model的select列表,我都会用model属性 ... -
自定义form提示
2010-12-31 10:53 724自定义form错误提示 application_contro ... -
提高rails开发模式下静态页加载速度
2010-12-31 10:44 894http://github.com/thedarkone/ra ... -
rails 连接多个数据库
2010-12-30 10:31 791首先在database.yml中加入以下代码,其中cg_clo ... -
瘦controller,富model
2010-12-28 14:02 759----先看这么一段rhtml代码:渲染模板中加入了这么多的逻 ... -
rake 命令一览
2010-12-28 11:21 1021rake db:abort_if_pending_migr ...
相关推荐
高度可配置的 Rails 使用通用的 gem 依赖管理、capistrano 和 Web 服务器设置进行部署。 概述 这个模块的目标是提供一个全面的 Rails 部署秘诀,它可以使用高级选项覆盖广泛的用例,而不是简单地向调用者公开所有...
Capistrano PostgreSQL插件在部署Rails应用程序时抽象并加快了PostgreSQL常见管理任务。 以下是此插件为您的capistrano部署过程所做的特定操作: 在服务器上创建一个新的PostgreSQL数据库和数据库用户 在所有发行...
您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用其他标记语言。
13. **部署与持续集成(CI/CD)**:使用Heroku、Capistrano等工具进行部署,配合Jenkins、Travis CI或GitHub Actions实现持续集成和持续部署,确保代码质量。 以上就是Rails最佳实践的一些要点,它们有助于提升Rails...
在本项目"Rocket_Elevator_Consolidation_Railsapp"中,我们主要关注的是使用Rails框架进行Web应用程序的开发,并且结合了SCSS(Sassy CSS)这一预处理器来增强CSS样式表的功能。这个项目可能是在一个为期九周的学习...
**使用Mina轻松部署Rails(而且确实非常快!)** 在Ruby on Rails开发的世界中,部署应用程序是一项必不可少的任务。传统的部署方法,如Capistrano,虽然功能强大,但对新手来说可能较为复杂。而Mina则提供了一种...
开发者会使用如Capistrano的工具进行自动化部署。在本地开发环境中,可以使用`rails server`命令启动应用。 通过对"rails-playlists-源码"的深入学习,开发者不仅可以理解Rails的基础知识,还能掌握如何在实际项目...
8. **Capistrano或类似的部署工具**:可能用于自动化部署过程,与OpsWorks配合使用。 9. **Cookbooks和Recipes**:OpsWorks使用Chef进行配置管理,Cookbooks包含了配置服务器和应用的指令,而Recipes是Cookbooks中的...
- **部署**:将应用部署到服务器,如Heroku或AWS,使用Capistrano自动化部署。 - **性能优化**:考虑缓存策略,如Rails的Page、Action和Fragment Cache,以及数据库查询优化。 - **响应式设计**:确保系统在不同...
Rails支持多种部署策略,如Capistrano和Heroku。 总的来说,"rails-hello-world-app"是学习Rails的完美起点,它涵盖了一系列基础概念,如MVC架构、路由、视图和控制器的交互。通过这个小项目,开发者可以逐渐了解...
部署时,可以使用 Heroku、DigitalOcean、AWS 等云平台,通过 Capistrano 或其他工具进行自动化部署。 **10. 总结** `sample_app` 是学习 Ruby on Rails 的绝佳起点,通过这个示例,你可以了解 Rails 应用的完整...
《使用Mina Test应用程序进行部署》 在Ruby开发领域,Mina是一个强大的部署工具,它以其简洁、高效和灵活的特点深受开发者喜爱。本教程将深入探讨如何利用Mina Test应用程序来部署你的Ruby on Rails项目,让你的...
11. **部署**:可能使用 Capistrano 进行自动化部署,或者直接使用 Heroku、AWS 等云服务。 这个 sample_app 可能包含了上述这些基础概念的实际应用,通过查看源代码,我们可以了解 Rails 应用的构建方式和早期版本...
安装Capistrano和相关任务包,如`capistrano/rails`,`capistrano/bundler`,`capistrano/rvm`(如果使用RVM)或`capistrano3-puma`。配置Capistrano并根据需要定制部署流程。 别忘了考虑性能优化。虽然Windows可能...
4. **使用Capistrano**:Capistrano是一个流行的自动化部署工具,可以简化部署流程。 5. **SSL证书**:为了安全,启用HTTPS并安装SSL证书。 6. **日志和监控**:配置日志收集和性能监控工具,如New Relic或Loggly。 ...
快速备忘单在本地运行集成/功能测试在dryad-app目录中:运行travis-prep.sh运行bundle exec rspec Capistrano部署要从GitHub部署最新的(提交的)代码,请执行以下操作: bundle exec cap <environment> deploy ...
2. 当准备部署时,可以考虑使用如Capistrano这样的部署工具,将应用部署到生产服务器上。 以上是对"redmine项目管理 v4.1.1-源码.zip"的详细解析,这个源码包为开发者提供了全面的Redmine项目管理平台的控制权,...
Rails应用通常部署在Heroku、AWS、DigitalOcean等云平台上,使用Capistrano等工具自动化部署过程。 这个示例应用程序“rails-application-build-guide-sample”涵盖了上述知识点的具体实现,可以帮助初学者了解...
3. **数据库迁移**:Rails使用ActiveRecord进行ORM(对象关系映射),允许开发者用Ruby代码定义数据模型。`db/migrate`目录下的文件是数据库迁移,用于创建、修改或删除数据库表。通过`rails db:migrate`命令执行...
11. **部署**:了解如何将 Rails 应用部署到如 Heroku 或者 AWS 这样的云平台,以及配置 Capistrano 进行自动化部署。 12. **版本控制**:项目可能使用 Git 进行版本控制,掌握 Git 的基本操作,如 commit、push、...