`

capistrano插件实现自动化部署

 
阅读更多

自动化部署主要步骤:

先安装capistrano插件-->运行"capify ."命令,生成文件-->修改config/deploy.rb文件-->运行"cap deploy:setup"生成对应的目录结构-->运行"cap deploy"(下载代码到服务器上)

 

目录结构:

 

根目录:

  /releases   #5个版本的代码

  /shared     #存放公共的代码、图片等

  /current    #当前版本代码,会指定到releases目录下最新一个版本

 

 

 

1.安装capistrano插件:在项目的Gemfile文件中添加:

gem 'capistrano'

 

 

2.运行下面命令(生成capfile与config/deploy.rb文件):

capify .  

 

 

3.deploy.rb文件的配置:

set :application, "testb"   #项目名
set :repository,  "库地址"    #如:git@gitcafe.com:aaa/dddss.git 
set :keep_releases, 5          #只保留5个备份

# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`

role :web, "服务器地址", "...", "..."                        # Your HTTP server, Apache/etc
role :app, "服务器地址", "...", "..."        # This may be the same as your `Web` server
role :db,  "数据库地址", :primary => true # This is where Rails migrations will run
role :db,  "数据库地址"
set :user, "用户名"
set :password, "密码"
set :deploy_to, "项目存放目录"
set :use_sudo, false   #是否需要sudo最高权限
default_run_options[:pty] = true #伪登录

set :shared_children,   %w(public/system log tmp/pids public/data) 
#把data、system、pids目录设置为共享目录(作用:当做自动部署时不会修改这三个目录内容)

# If you are using Passenger mod_rails uncomment this:
namespace :deploy do
   task :start do ; end
   task :stop do ; end
   task :bundle, :roles=>:app, :except=>{:no_release=>true} do
     run "rvm use 1.9.3; cd #{deploy_to}/current; bundle install"
   end
   task :assets, :roles=>:app, :except=>{:no_release=>true} do
      run "/bin/bash -l -c 'rvm use 1.9.3; cd #{deploy_to}/current; rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets'"
   end
   before "deploy:restart", "deploy:assets"  #在重启之前,做rake assets:precompile
   task :restart, :roles => :app, :except => { :no_release => true } do
     run "cd #{deploy_to}/current/tmp; touch restart.txt"
   end
   after "deploy:restart", "deploy:cleanup"   #保留5个版本最新版本,清除历史版本 
   
end

 

 

4.一些基本命令:

cap deploy:setup   #生成部署目录
cap -T     #查看有哪些命令
cap deploy               # Deploys your project
cap deploy:check      #Test deployment dependencies
cap deploy:cleanup   #clean up old releases
cap deploy:migrate
cap deploy:pendding:diff
cap deploy:rollback
cap deploy:rollback:code  #撤回上一个版本
cap deploy:rollback_code
cap deploy:update
cap deploy:update_code
cap deploy:upload

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics