博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Capistrano 部署rails 应用
阅读量:6186 次
发布时间:2019-06-21

本文共 2272 字,大约阅读时间需要 7 分钟。

1 安装

gem install capistrano// For mutiple stagesgem install capistrano-ext

 2 准备

capify .

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

配置deploy.rb

set :application, "applciation_name"//gitset :scm, :gitset :repository, "git@www.xxx.com:/repository.git"set :scm_passphrase, ""//sub versionset :scm, :subversionset :repository, "https://account.svn.beanstalkapp.com/repository"// user nameset :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 => trueset :deploy_to, "/var/www/application_name"

staging.rb

server "xxx.com", :app, :web, :db, :primary => trueset :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 718msfailed: "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"  endend

 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://www.cnblogs.com/iosdev/p/3349405.html

你可能感兴趣的文章
我的友情链接
查看>>
Linux下ssh秘钥方式登录远程服务器
查看>>
golang test测试使用
查看>>
【Apache学习】编译安装httpd2.4 含傻瓜版自动安装脚本
查看>>
Python classmethod(类方法) 和 类属性 静态方法(缺少)
查看>>
我的友情链接
查看>>
vsftpd的基于pam_mysql的虚拟用户配置示例
查看>>
C语言中运算符的优先级排序
查看>>
nodejs tutorial - 5 单元测试 2015-3-24
查看>>
ubuntu下未获得锁问题
查看>>
我的友情链接
查看>>
前端面试题整理
查看>>
Azure上的Web Apps极其相关服务
查看>>
HP iLo licenses
查看>>
IIS7.5中asp.net 区域 area中的路径 URLRewriter报错 .. 在顶级目录上退出
查看>>
javascript的apply和call,执行环境,垃圾回收,闭包
查看>>
Linux下阻塞与非阻塞IO
查看>>
寻找内网主机被***的方法
查看>>
我使用过的Linux命令之mv - 文件或目录改名、移动位置
查看>>
Required request body is missing 错误解决
查看>>