1 安装

gem install capistrano

// For mutiple stages
gem install capistrano-ext

2 准备

capify .

这个命令会创建Capfile,和 config/deploy.rb 文件。Capfile会帮助加在一些合适的库文件和配置。

配置deploy.rb

set :application, "applciation_name"

//git
set :scm, :git
set :repository, "git@www.xxx.com:/repository.git"
set :scm_passphrase, "" //sub version
set :scm, :subversion
set :repository, "https://account.svn.beanstalkapp.com/repository" // user name
set :user, "server-user-name"

多stage需要包含文件

require 'capistrano/ext/multistage'

然后

set :stages, ["staging", "production"]
set :default_stage, "staging"

然后在config目录下创建一个文件夹deploy 然后创建两个文件 production.rb staging.rb

production.rb

server "xxx.com", :app, :web, :db, :primary => true
set :deploy_to, "/var/www/application_name"

staging.rb

server "xxx.com", :app, :web, :db, :primary => true
set :deploy_to, "/var/www/application_staging"

3 一些设置

cap deploy:setup

这条命令SSH到服务器,创建deploy_to的目录。

errors:

    [xxx.com] executing command
*** [err :: xxx.co] sudo
*** [err :: xxx.co] :
*** [err :: xxx.co] sorry, you must have a tty to run sudo
*** [err :: xxx.co]
command finished in 718ms
failed: "sh -c 'sudo -p '\\''sudo password: '\\'' mkdir -p /var/www/TTQuan_staging /var/www/xxx_staging/releases /var/www/xxx_staging/shared /var/www/xxx_staging/shared/system /var/www/TTQuan_staging/shared/log /var/www/xxx_staging/shared/pids'" on xxx.co

要添加

default_run_options[:pty] = true

确信你的设置没有问题

cap deploy:check

 You appear to have all necessary dependencies installed

最后部署

cap deploy
cap production deploy

5 Tips & Tricks

1) Capistrano 第一次部署都会clone/export respository,然后之后每次git pull/svn up就会替代clone/export。如果你经常deploy 那这样会加速部署

set :deploy_via, :remote_cache

2)创建tasks

namespace :deploy do
task :restart, :roles => :web do
run "touch #{ current_path }/tmp/restart.txt"
end task :restart_daemons, :roles => :app do
sudo "monit restart all -g daemons"
end
end

Capistrano 不仅仅是通过ssh复制文件。完成复制文件之后你还可以配置一些事件和命令,例如通过自定义脚本重启服务器。Capistrano叫这些为“tasks”。

这里例子很简单。restart就是部署完成之后运行的。 “touch tmp/restart.txt“ 是用passenger时候使用的,但是如果你使用unicorn就换成unicron的就可以了。

下面的task 不会自动运行

after "deploy", "deploy:restart_daemons"

3)关联环境的branches

production.rb

set :branch, 'production'

staging.rb

set :branch, 'staging'

cap deploy 默认是staging

cap production deploy

参考 https://github.com/capistrano/capistrano/wiki

Capistrano 部署rails 应用的更多相关文章

  1. 使用GitLab CI + Capistrano部署CakePHP应用程序

    使用GitLab CI + Capistrano部署CakePHP应用程序 摘要:本文描述了如使用GitLab CI + Capistrano部署CakePHP应用程序. 目录 1. 问题2. 解决方 ...

  2. 使用 Capistrano 部署总结

    使用 Capistrano 部署总结 2014年6月27日 admin发表评论阅读评论 简介 Capistrano 是一个 Ruby 程序,它提供高级的工具集来部署你的 Web应用到服务器上.Capi ...

  3. apache服务器安装以及使用passenger插件部署rails应用

    小例子可以部署在rails自带的WEBrick上,逐渐往后走还得上Apache. 安装apache服务器 命令是sudo apt-get install apache2 安装passenger插件 安 ...

  4. centos6 vps部署rails

    centos 6 vps初始化部署rails应用1 ssh登录 vpsssh -p port root@server_ip_address 2 添加用户 adduser usernamepasswd ...

  5. PassengerNginxdebian快速部署Rails

    Passenger/Nginx/Debian快速部署Rails   PassengerNginxdebian快速部署Rails     安装所需的linux包 sudo apt-get install ...

  6. Passenger/Nginx/Debian快速部署Rails

    安装所需的linux包 sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl gi ...

  7. 初始设置ubuntu 16.04 Vps部署rails

    参考 https://blog.longwin.com.tw/2005/12/ssh_keygen_no_passwd/ 1 选择搬瓦工左边菜单栏中的“Root password modificati ...

  8. 部署rails遇到问题

    underfined method for has_attched_file when installing paperclip 解决 create the file paperclip.rb ins ...

  9. Ruby on Rails Tutorial 第一章 之 Heroku部署

    1.目的:用Heroku将开发环境部署到生产环境中.Heroku专门用于部署Rails和其他Web应用,部署Rails应用的过程非常简单——只要源码纳入Git版本控制系统就好. 2.搭建Heroku部 ...

随机推荐

  1. 管道符和作业控制 shell变量 环境变量配置文件

    8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 管道符和作业控制 管道符:表示把一个文件的输出内容传送到后面的命令 grep  用来过滤指定关键词的命令 “|” 为 ...

  2. hibernate DetachedCriteria 分页

    # 具有一个直观的.可扩展的条件查询API是Hibernate的特色. # # 15.1. 创建一个Criteria 实例 # org.hibernate.Criteria接口表示特定持久类的一个查询 ...

  3. js 原型链(转)

    1.1 理解原型链 JavaScript中几乎所有的东西都是对象,我们说数组是对象.DOM节点是对象.函数等也是对象,创建对象的Object也是对象(本身是构造函数),那么有一个重要的问题:对象从哪里 ...

  4. 腾讯大渝网(esf.cq.qq.com)任意手机注册+短信验证码泄露

    地址在这里:http://esf.cq.qq.com/c=register 直接返回短信验证码, data: {data:您的手机验证码为8453,2小时内有效., auth_code:8453}ti ...

  5. 64位系统web项目导出excel问题分析及解决方法汇总

    最近在web项目中做了一个导出Excel功能.在导出的时候报错:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败. 一 ...

  6. Dos命令大全(1)

    MS DOS 命令大全 一.基础命令 1 dir 无参数:查看当前所在目录的文件和文件夹. /s:查看当前目录已经其所有子目录的文件和文件夹. /a:查看包括隐含文件的所有文件. /ah:只显示出隐含 ...

  7. 怎么使用ABBYY中的Bates编号

    ABBYY PDF Transformer+ 可让您将 Bates 编号添加到 PDF 文档.Bates 编号可方便文档搜索和检索,并更加有利于电子归档.下面小编给小伙伴们讲讲ABBYY PDF Tr ...

  8. Ckeditor的JS的加载和取值和赋值方法

    Ckeditor 就是原来的Fckeditor. JS加载: $(function() { CKEDITOR.replace('FContent'); //FContent:这个对应文本域 }); J ...

  9. python 数据类型-字符串-对象和方法

    python的字符串有众多方法,可以在doc文档中查看 示例 转换开头字母为大写 c1="welcome to my python" >>> c1.capital ...

  10. Git Step by Step – (8) Git的merge和rebase

    前面一篇文章中提到了"git pull"等价于"git fetch"加上"git merge",然后还提到了pull命令支持rebase模式 ...