good good study, day day up!

Capistrano简介

2012-02-20

 

Capistrano是一个基于Ruby的web应用部署工具.将Capistrano安装在自己的机器上就可以将应用的代码部署到远程的服务器上.

Capistrano的安装

1.按照官网的教程,首先安装gem:

$sudo apt-get install rubygems1.9.1

安装之后gem安装capistrano

$gem sources -a http://gems.github.com/

$gem -v

gem -v命令会显示当前gem版本,gem版本应该至少是1.3.x,否则无法使用.确认版本之后:

$gem install capistrano

2.其他安装方法:

直接安装:

$sudo apt-get install capistrano

注意:

最好安装一下libopenssl-ruby1.8:

$sudo apt-get install libopenssl-ruby1.8

否则capistrano可能会报错

 


Capistrano的使用:

1.条件:

Capistrano的使用是有一定条件的:

a) 只能实现ssh远程登录服务器,Telnet和FTP不支持

b) 远程服务器必须安装有符合POSIX的shell,该shell的名字必须是”sh”,一般大家的机器都有

c) 如果要使用密码的话,所有的远程服务器密码必须相同,capistrano不会对特定服务器作区分.但是也可以使用public key(其实我也不懂)

2.Capfile

你应该编写一个名为”capfile”或者”Capfile”的文件,capistrano在运行的时候会自动在文件系统中寻找capfile(Capfile),最好放到自己的家目录中.

该文件用于保存你的远程服务器以及一系列的指令.

注意,该文件只能命名为”capfile”或者”Capfile”,不能有任何扩展名.

3.简单示例

在Capfile中写入:

        task :search_libs, :hosts => "www.yourserver.com" do
            run "ls -xl /usr/lib | grep -i xml"
        end

这段代码会创建一个名为”search_libs”的task,它会查看在www.yourserver.com上的/usr/lib目录下的文件,找到名称中含有”xml”字符的文件,要执行这个task,在shell中键入:

$cap search_libs

shell会提示你输入你的远程服务器的密码

注意: cap在登入远程服务器的时候是默认以当前机器的用户名登录的,如果你想以其他的名字(如”root”)登录服务器,那么应该在服务器地址前加上”root@”,如:”root@www.yourserver.com”,相应的,你的密码也应该是www.yourserver.com上的root用户的密码.

你可以在capfile中定义多个task,格式与上面的代码一样,如果嫌每次都输入host很麻烦的话,可以在文件开头加上:

role :libs, “www.yourserver.com”

这样就定义了一个名字叫做”libs”的role,它指向的是”www.yourserver.com”,同样的,你也可以写成”root@www.yourserver.com”

也可以定义多个role,每个role可以指向多个地址:

role :libs, “private.yourserver.com”, “public.yourserver.com”, “test.yourserver.com”

role :file, “fs.filesys.com”

使用的时候如下:

        task :search_libs, :role => :libs do
            run "ls -xl /usr/lib | grep -i xml"
        end
        task :count_libs, :role => :file do
            run "ls -xl /usr/lib | wc -l"
        end

task可以添加注释:

        desc "Echo the server's hostname"
        task :echo_hostname do
          run "echo `hostname`"
        end

可以用cap -vT指令查看所有已经定义的task以及其注释

4.cap invoke指令

cap invoke 指令可以简单的发送一条指令至所有的远程服务器(capfile中定义的)

如:

cap invoke COMMAND=”echo ‘Hello world'”

如果想要使用sudo的话:

cap invoke COMMAND=”echo ‘Hello world'” SUDO=1

5.cap shell

cap invoke指令每次执行task的时候都会重新与服务器建立链接,如果有多条指令要执行的话就会很麻烦,所以我们可以用cap shell指令来解决这个问题

在shell中输入cap shell将进入capistrano的命令行环境,它可以实现连接的重复利用,在cap shell中最可以键入help指令来获取帮助.

参考资料:

https://github.com/capistrano/capistrano/wiki/2.x-Getting-Started

 


知识共享许可协议本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名(chen)并包含原文链接

作者:chending | Categories:服务器 | Tags:

4条评论

  1. chentingpc说道:

    想问一下你的host是在哪里买的?

chentingpc进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注