capistranoで、デプロイを効率化する

カテゴリ: Linux
執筆者: fujimi
updated: 2009/04/30
ページビュー(1426)


  • 1 想定読者及びマニュアル概要、テスト環境

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

1.1 想定読者

1.1.1 求めていること
  • ソースのデプロイの手間を減らすこと
  • サーバごとにデプロイを行えること
  • デプロイのrollback

1.1.2 前提条件
  • linuxのコマンドに慣れている

1.2 マニュアル概要

  • デプロイ自動化ツールであるcapistranoの導入方法を示す

1.3 テスト環境

  • CentOS5.1(32bitバージョン)
  • ruby(1.8.5)
  • rubygems-1.2.0
  • capistrano(2.4.0)

  • 2 capistranoを使用するメリット

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

  • 外部のサーバから複数のリモートサーバにsshで接続し一斉に操作できるので、複数のサーバで同時に同じ操作を行うときに楽であり、ミスがない

  • 3 capistranoのインストール

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

デプロイの基点となるサーバに、capistranoをインストールする

3.1 rubyをインストールする

# yum -y install ruby

3.2 rubygemsをインストールする

$ wget rubygems-1.2.0.tgz
$ tar xvzf rubygems-1.2.0.tgz
$ cd rubygems-1.2.0
# ruby setup.rb

3.3 capistranoをインストールする

# gem install capistrano

  • 4 ユーザアカウントの作成

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

デプロイを行う先のサーバに、ユーザアカウントを作成する。ただし、全てのサーバで同じアカウント名・パスワードとする。
# useradd capistrano
# passwd password

  • 5 操作内容の記述

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

一括で実行したい操作内容をrubyファイルにまとめる
$ vi example.rb

# Definition
set :application, "example"
set :user, "capistrano"
set :password, "password"

# role
role :http_server, "192.168.1.2, 192.168.1.3"
role :ftp_server, "192.168.1.4, 192.168.1.5"

# task
task :update_http, :roles => [:http_server] do
run "echo hello $HOSTNAME"
end

# task
task :httphello, :roles => [:http_server] do ←タスク名と実行を行うロールの設定
run "echo hello $HOSTNAME" ←リモートサーバに行うコマンド
end

実行を行うロールを設定しなければ、すべてのサーバで実行されてしまう。
  • set:変数を定義する
  • role:同じ処理を行うサーバグループを作成する。複数設定可能で、ホスト名での指定も可能。
  • task:処理内容を記述する


  • 6 実行方法

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

デフォルトで、./config/deploy.rbを読みこむ。ただし、-fオプションをつけて、任意のファイルを読み込ませることもできる。
$ /usr/bin/cap -f /home/capistrano/example.rb update_http

  • 7 参考文献・参考サイト

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする


  • 執筆者情報

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

ニックネーム:fujiyama
自己紹介:
都内大学4年生です。 プログラミングとサーバ関係のレシピを書いてます。

  • 関連レシピ

  • このレシピを編集する
  • 編集履歴を表示する
  • レシピの上部にジャンプする

レシピを書く


Feedback Form