Capistrano 入门
第2章 SSH公钥的设置
这一章将就使用 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 应用程序的专有用户。如果此用户名已被使用,则可以选择如 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 。不添加扩展名。另外,用 'kuroda' 指定远程主机上使用 SSH 登录的用户名,并且使用远程主机的实际名称置换 'alpha.oiax.jp'。
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 文件产生了。
[修订] 2008/05/17 配合以用户 app 登录远程主机的方式,对文章进行修改。
(2008/03/25)
- 前言
- 第1章 安装 (2008/03/24)
- 第2章 SSH公钥的设置 (2008/03/25)
- 第3章 Windows环境下的 Capistrano (2008/03/26)
- 第4章 capify (2008/03/27)
- 第5章 目标主机的准备 (2008/03/28)
- 第6章 deploy:update (2008/03/29)
- 第7章 Rails应用程序的启动、停止、重启 (2008/05/17)
- 第8章 deploy:rollback 与 deploy:cleanup (2008/05/18)
- 第9章 切换至维护页面 (2008/06/03)

