自动化部署主要步骤:
先安装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