这一章将就使用 Capistrano 的前提条件之一的 SSH 公钥进行介绍。



因为以已经配置好生产服务器为前提,所以现在应该可以通过 SSH 登陆到生产服务器。但是是否已在生产服务器上设置好了 SSH 公钥了呢。如果还没有的话,现在开始操作吧。



另外,在 Windows 环境下 Capistrano 的安装方法将在下一章( 第3章 Windows 环境下的 Capistrano)中说明。




首先,创建一个SSH公钥。



% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kuroda/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/kuroda/.ssh/id_rsa.
Your public key has been saved in /home/kuroda/.ssh/id_rsa.pub.
The key fingerprint is:
a3:ed:8b:aa:6d:6c:92:16:70:6b:1d:51:3a:24:6f:b9 kuroda@desktop



alpha.oiax.jp



% scp .ssh/id_rsa.pub alpha.oiax.jp:~ kuroda@alpha.oiax.jp's password:



% ,而在远程机上的提示符用 $



% ssh alpha.oiax.jp Password:



app



% sudo /usr/sbin/useradd -m app



rails 等其它的名字。另外虽然也可以使用开发者个人的账户(如 kuroda)来部署,但在多人开发的情况下,容易牵涉到文件权限的问题,因此建议设立专用的用户。



首先,在 ~/.ssh 设公钥。



$ mkdir -m 700 .ssh $ cat id_rsa.pub >> .ssh/authorized_keys



接下来在 /home/app/.ssh 设公钥。



$ sudo -u app mkdir -m 700 /home/app/.ssh $ sudo -u app touch /home/app/.ssh/authorized_keys $ sudo sh -c "cat id_rsa.pub >> /home/app/.ssh/authorized_keys"



退出。



$ exit



ssh-agent



% ssh-agent bash % ssh-add Enter passphrase for /home/kuroda/.ssh/id_rsa: Identity added: /home/kuroda/.ssh/id_rsa (/home/kuroda/.ssh/id_rsa)



使用公钥登陆到生产服务器。



% ssh alpha.oiax.jp $ exit



登录时没被要求密码的话就OK了。



app



% ssh app@alpha.oiax.jp $ exit



这里应该不用输入密码也可以登陆。




那么,让我们来试试 Capistrano 吧。



Capfile



set :user, 'kuroda' task :stamp, :hosts => "alpha.oiax.jp" do run "touch /home/kuroda/touched" end



alpha.oiax.jp 并定义了执行 touch /home/kuroda/touched 命令的任务 stamp 。Unix 命令的 touch 是为了更新文件的时间戳,如果没有文件的话请创建一个。



stamp 任务,进入保存 Capfile 的目录,输入 cap stamp



% cap stamp * executing `stamp' * executing "touch /home/kuroda/touched" servers: ["alpha.oiax.jp"] [alpha.oiax.jp] executing command command finished



在生产服务器上确认结果。



$ pwd /home/kuroda $ la -l touched -rw-r--r-- 1 kuroda kuroda 5 Mar 24 22:58 touched



stamp 任务之前所不存在的 touched


转载于:https://blog.51cto.com/yaoge/327032