`
xitong
  • 浏览: 6313610 次
文章分类
社区版块
存档分类
最新评论

使用Capistrano部署rails

 
阅读更多

背景:

本地: 192.168.100.8) xp,
rails服务器: 192.168.100.231 centos 3
svn服务器:192.168.100.212 centos 4
通过本地脚本部署应用到rails服务器
1)本地安装capistrano
geminstallcapistrano
2)检查安装是否有效
cap-V
本文看到结果:Capistrano V2.1.0,说明安装成功
3)开始工作
进入本地 rails工程根目录执行
capify.
这个命令会生成两个文件,一个是Capfile文件,在应用的根目录下,另一个是deploy.rb文件,在应用的config目录下
可以用cap -T 查看所有task, cap -e deploy 解释deploy任务的详情。
4)修改config/deploy.rb文件


set:application,"space"
set:repository,"http://192.168.100.212:3690/repo/moxtv/branches/space"



#Ifyouaren
'tdeployingto/u/apps/#{application}onthetarget
#servers(whichisthedefault),youcanspecifytheactuallocation
#viathe:deploy_tovariable:
#
set:deploy_to,"/var/www/#{application}"

#Ifyouaren
'tusingSubversiontomanageyoursourcecode,specify
#yourSCMbelow:
#
set:scm,:subversion



role:app,
"192.168.100.231"
role:web,
"192.168.100.231"
role:db,
"192.168.100.231",:primary=>true

#
1
set:svn_username,"weip"
set:svn_password,"weip"

#
2
set:deploy_to,"/var/www/webapps/#{application}"
set:user,"root"
set:password,"secretpa"


#
3
set:use_sudo,false

#
4
task:chmod,:roles
=>:webdo
run
"chmod-fR755#{deploy_to}/current/script/*"
end

after
"deploy:symlink",:chmod

#
5
default_environment[
"PATH"]="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/ruby/bin:/usr/local/ant/bin:/usr/java/jdk1.5.0_05/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin"

额外添加了5个部分
#1指定SVN用户名密码
#2 指定远程目的服务器的用户名和密码
#3 因为懒得配置SUDO,所以加上这行,直接用ROOT访问,否则会有权限问题
#4 为了能使目的服务器能执行脚本,特意加上全县,否则会有权限问题
#5显示的指明路径,否则互有如下问题
比如
问题1:
cap:start

*executing`deploy
:start'
*executing
"sh-c'cd/var/www/webapps/space/current&&nohupscript/spin'"
servers:[
"192.168.100.231"]
[
192.168.100.231]executingcommand
***[err
::192.168.100.231]/var/www/webapps/space/current/script/spin:line1:mongrel_rails:commandnotfound
commandfinished
command"sh-c'cd/var/www/webapps/space/current&&nohupscript/spin'"failedon192.168.100.231

问题2
cap:restart
* executing `deploy:restart'
* executing "/var/www/webapps/space/current/script/process/reaper"
servers: ["192.168.100.231"]
[192.168.100.231] executing command
*** [err :: 192.168.100.231] /var/www/webapps/space/current/script/process/../../config/boot.rb:18:in `require': no such file to load -- rubygems (LoadError)
*** [err :: 192.168.100.231] from /var/www/webapps/space/current/script/process/../../config/boot.rb:18
*** [err :: 192.168.100.231] from /var/www/webapps/space/current/script/process/reaper:2
command finished
command "/var/www/webapps/space/current/script/process/reaper" failed on 192.168.100.231
文档
作了些解释, capistrano 会从默认的ruby路径加载gem或者程序,如果你是用
./configure --prefix方式安装的ruby 并且修改/etc/profile中的ruby path,很有可能就会出现这种问题
所以最好还是指定path,作者也说会修正这个问题,让我拭目以待
5)在#{rails_app_root}/script目录创建spin文件
用于启动服务器,
在本文中是:
mongrel_railsstart-eproduction-p8080-r/var/www/webapps/space/current/public-l/var/www/webapps/space/current/log/m.log-P/var/www/webapps/space/current/tmp/pids/dispatch.0.pid-d
本文使用的是mongrel单机服务器,-d参数一定要加,否则不会产生log和pid,这将导致cap:restart无法正常运行
到此一切准备就绪,开始运行
6)部署准备
capdeploy:setup
这一步会连上服务器,创建一些目录:
ruby 代码
#{deploy_to}/
#{deploy_to}/releases
#{deploy_to}/shared
#{deploy_to}/shared/log
#{deploy_to}/shared/system
#{deploy_to}/shared/pids
releases目录里面会存放所有的发布版本
shared目录是为了共享文件
在第一此部署后还会产生一个current链接,它会自动指向releases目录里面最新的版本
7)启动服务器
capdeploy:start
8)部署
cap deploy
一旦有任何修改,提交到版本服务器,那么执行该命令就能自动完成部署工作,在本文中就是把最新本版checkout到rails服务器上,然后重启服务器,一个命令就搞定了
总结 :
本文通过使用capistrano 一键搞定自动部署,其实也完全可以自己写脚本,比如之前我们在服务器上写了个脚本,执行checkout和重启的命令 ,但麻烦的是如果把应用部署到多个机器,就有可能在每个机器上执行一遍,当然也仍然可以写脚本搞定这些,但有这么好的工具何必再麻烦,
如果仅部署一台机器,感觉本地执行capistrano命令稍微有点慢不如我以前写的单机脚本快,但如果部署多台,优势就体现出来了,毕竟mongrel集群用的多,况且capistrano 也不仅仅限于checkuout和启动服务器,还有数据库部署之类的功能,这个还有待进一步研究,祝大家cap愉快
分享到:
评论

相关推荐

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板.zip

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...

    capistrano-rails-console:Capistrano插件,它添加了远程Rails控制台和dbconsole

    Capistrano是一个强大的自动化部署工具,常用于Ruby on Rails项目的部署。它允许开发者通过简单的命令行接口执行复杂的任务,如代码同步、服务器配置和数据库迁移等。`capistrano-rails-console`是针对Capistrano的...

    capistrano-workshop:Capistrano 研讨会的示例应用程序(Nginx + 乘客)

    使用 Capistrano 部署 Rails Capistrano 研讨会的示例应用程序Ubuntu 14.04 - Capistrano - Nginx + 乘客1. 创建 droplet(不要忘记 ssh 密钥) ssh-keygen -t rsa -C " lerolero@gmail.com "pbcopy < ~ /.ssh/...

    capistrano-cookbook:使用Capistrano 3部署Rails和Sinatra应用程序时减少样板任务

    Capistrano 3兼容任务的集合,使基于Rails和Sinatra的应用程序的部署更加容易。 安装 将此行添加到应用程序的Gemfile中: gem 'capistrano-cookbook', require: false, group: :development 然后执行: $ bundle ...

    deploy_test:了解如何使用Capistrano将Rails部署到Ubuntu

    您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用其他标记语言。

    再次发一本部署rails的书

    《再次发一本部署rails的书》是一本专注于Rails应用部署实践的书籍,旨在帮助开发者们理解和掌握将Rails项目上线到生产环境的全过程。Rails是Ruby编程语言的一个热门Web开发框架,以其“约定优于配置”(Convention ...

    capistrano-postgresql:设置用于Capistrano Rails应用程序部署的Postgresql

    Capistrano PostgreSQL插件在部署Rails应用程序时抽象并加快了PostgreSQL常见管理任务。 以下是此插件为您的capistrano部署过程所做的特定操作: 在服务器上创建一个新的PostgreSQL数据库和数据库用户 在所有发行...

    moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用.zip

    moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用 MoonshineMoonshine的Rails 部署和配置管理正确完成。通过利用 Capistrano 和 puppet,Moonshine允许你在 15分钟内拥有一个工作应用服务器,...

    hapistrano:用于Haskell应用程序的部署工具,例如Capistrano for Rails

    hapistrano是一款专门为Haskell应用程序设计的部署工具,它的出现是为了提供类似Rails社区中Capistrano的功能。Capistrano在Ruby on Rails开发中扮演着重要角色,它简化了项目的部署流程,使得开发者能够通过命令行...

    rails 部署 nginx

    在部署Rails应用时,还需要考虑性能优化,比如启用HTTP缓存,调整Nginx的连接超时时间,配置Rails应用的线程池大小,以及使用如 unicorn 或 puma 这样的多进程或多线程服务器。 7. **部署工具**: 为了自动化部署...

    capistrano-asg:使用capistrano部署时自动创建新的AMI

    capistrano-asg的编写旨在简化Rails应用程序到AWS AutoScale组的部署。 capistrano-asg将: 将代码部署到连接到给定AutoScale组的每个正在运行的实例 部署后,从一个正在运行的实例中创建一个AMI 将带有新代码的...

    rails+grape+swagger+devise+capistrano 简单融合示例

    在本项目中,Capistrano被用来自动化部署Rails应用到服务器,大大提高了开发团队的效率。 总结来说,这个"rails+grape+swagger+devise+capistrano"的简单融合示例展示了一个完整的、功能齐全的API项目架构。Rails...

    使用Mina轻松部署Rails(而且确实非常快!)

    **标题解析:** "使用Mina轻松部署Rails(而且确实非常快!)" 这个标题指出,我们将探讨如何利用Mina工具高效且迅速地部署Ruby on Rails应用。Mina是一个轻量级、基于任务的部署工具,它允许开发者以SSH协议在远程...

    capistrano-mb:[未维护] Capistrano任务,用于从头开始将Rails部署到Ubuntu 16.04和18.04

    :warning: 该项目不再维护... Capistrano非常适合部署Rails应用程序,但是所有前提条件(如Nginx和PostgreSQL)呢? 您的VPS上是否配置了防火墙? 您是否安装了最新的操作系统安全更新? HTTPS工作正常吗? capistran

    capistrano-uberspace:使用Capistrano 3将您的Rails应用程序部署在uberspace上

    使用Capistrano 3将Rails应用程序部署到 。 支持许多数据库,ruby版本和ruby Web服务器。 注意:对于新的uberspace(在uberspace版本7平台上),似乎会出现一些错误。 修复这些问题的任何帮助均受到高度赞赏。 ...

    Rails项目源代码

    Rails使用ActiveRecord作为ORM,它使得Ruby类可以直接与数据库表进行交互。在这个项目中,`User`和`Image`模型可能会与数据库中的相应表关联,通过定义属性和关系,如`has_many :images`表示一个用户可以拥有多个...

    ruby5

    7. 部署与运维:如使用Capistrano部署Rails应用,Nginx和Passenger的配置。 Ruby社区活跃,拥有丰富的第三方库(Gems)和广泛的文档资源,如RubyDoc和Stack Overflow,为学习和解决问题提供了便利。通过Ruby5的学习...

    Capistrano:远程多服务器自动化工具-开源

    用Ruby编写的远程服务器自动化和部署工具。 Capistrano使用特定于在()服务器上... Capistrano使用SSH进行部署。 因此,您必须能够从部署系统到目标系统进行SSH(最好使用密钥和ssh-agent),Capistrano才能正常工作。

    Ruby-Capistrano基于RubyRake和SSH构建的部署自动化工具

    **Ruby-Capistrano:基于Ruby、Rake和SSH的部署自动化工具** Capistrano是一款强大的、开源的部署自动化工具,它主要由Ruby语言...对于开发团队来说,使用Capistrano可以极大地提高部署的效率和可靠性,降低运维成本。

Global site tag (gtag.js) - Google Analytics