http://capistranorb.com/documentation/getting-started/installation/
简介:
capistrano是1个自动向远程服务器部署代码的工具,使用起来非常的方便。
它可以将你的代码自动从git或svn上pull出来指定分支的代码到你的部署目录下,同时保护1个current软链接,指定最新的版本。
同时它出会将最近(默许5次)几次的版本寄存在release1, release2,releaseN目录下。
当你需要更新部署时,只需要1个条命令:
cap development deploy
便可将新代码pull下来,也能够通过1个命令:
cap deploy:rollback
实现将代码回滚到上1次的版本,方便我们切换不同版本和部署。
最NB的话,它默许通过SSH链接所有的远程服务器,生产环境或开发环境或DB环境,将所有代码同步到所有环境下,真实的实现1键部署多个服务器。
本教程使用的git为coding.net的免费git库,实现ssh远程部署到development和production环境下。
1. SSH自动登录remote server
1. 生成ssh密钥
1般登录服务器都需要用户名和密码,通过SSH的安全策略实现无用户名和密码的远程访问服务器,这时候你需要生成ssh public Key。
通过下面的命令生成1对rsa Key。
me@localhost $ ssh-keygen -t rsa -C 'me@my_email_address.com'
[me@localhost ~]# ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
2. 将私钥加载到ssh授权代理中
me@localhost $ ssh-add
Identity added: /Users/me/.ssh/id_rsa (/Users/me/.ssh/id_rsa)
通过上面的命令将私钥添加到ssh授权代理中,可以通过下面的命令查看下,是不是已加载成功。
如果上面命令出错:
履行:
eval `ssh-agent -s` 注意这里是反引号
me@localhost $ ssh-add -l
2048 af:ce:7e:c5:93:18:39:ff:54:20:7a:2d:ec:05:7c:a5 /Users/me/.ssh/id_rsa (RSA)
注意:如果ssh-add失败,先履行ssh-agent bash,再履行上述命令
小技能:
ssh-add在每次重启后都要重新履行1下,为了方便不用每次都履行它,可以写个配置文件:
vim ~/.ssh/config
##################
# For Coding.net #
##################
Host coding.net
#User depoly
Hostname YOUR_SERVER
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
3. 远程服务器添加deploy用户
所有的远程服务器都要创建1个deploy用户,并且设置Lock为无密码,让他人可以不设置密码登录。
root@remote $ adduser deploy
root@remote $ passwd -l deploy
将上面第1步生成的id_rsa.pub公钥文件拷贝到所有需要部署的远程服务器(再次确认是不是已创建了deploy用户),可使用scp,也能够直接打开拷贝内容。
将id_rsa.pub里的内容拷贝到远程服务器的~/.ssh/目录下,并且命名为:authorized_keys
示例使用拷贝文本方式:
root@remote $ su - deploy
deploy@remote $ cd ~
deploy@remote $ mkdir .ssh
deploy@remote $ echo "ssh-rsa jccXJ/JRfGxnkh/8iL........dbfCH/9cDiKa0Dw8XGAo01mU/w== /Users/me/.ssh/id_rsa" >> .ssh/authorized_keys
deploy@remote $ chmod 700 .ssh
deploy@remote $ chmod 600 .ssh/authorized_keys
1定要将公钥放到deploy用户的HOME目录下
1定要给公钥文件指定权限
1定要将公钥命名为:authorized_keys
5. 测试无用户名密码登录
ssh deploy@REMOTE_SERVER_IP
2. 安装capistrano环境
完全依照官方手册说明来做。
$ gem install capistrano
$ git clone https://github.com/capistrano/capistrano.git
$ cd capistrano
$ gem build *.gemspec
$ gem install *.gem
1. 初始化cap环境
2. 配置deploy.rb
deploy.rb为主配置文件。所有子配置文件可以重写该配置信息。
我的配置以下:
set :application, 'YOUR_APP_NAME'
set :repo_url, 'git@git.coding.net:USER_NAME/PROJECT.git'
3. 配置development.rb和production.rb
在config/deploy/拷贝development.rb文件
cp production.rb development.rb
development.rb内容以下:
server 'DEV_SERVER_IP', #开发环境服务器地址
user: 'deploy', #开发环境服务器用户名,上面已创建
roles: %w{web app},
ssh_options: { # ssh配置,用来无用户名和密码登录远程服务器,具体配置参数见:http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
user: 'deploy',
keys: %w(/root/.ssh/id_rsa), # ssh私钥所在目录
port:22, # 远程服务器ssh开放端口
forward_agent: true, # 开启代理转发,参考:http://unixwiz.net/techtips/ssh-agent-forwarding.html#fwd
auth_methods: %w(publickey password)
# password: 'please use keys'
}
production.rb内容参考development.rb。
4. 开始部署吧
在你的利用目录下履行:
cap development deploy
你可以看到以下履行结果以下:
1些坑:
默许cap会将代码部署到 /var/www目录下,1定要确保有deploy用户有对该目录的读写权限
建议使用
id_rsa.pub authorized_keys
的方式进行免密码登陆
首次部署, 需要履行
cap [environment] deploy:check
命令, 把 linked_files
在服务器上创建
Just enjoy it!!
上一篇 Java基本数据类型
下一篇 tomcat 单机多实例