这一章将就使用 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