Capistranoを使ってみた

CentOS6にapacheとpassengerをインストール手順が覚えれそうになかったので、

Capistranoで自動化してみました。

今回、Capistranoを実行した環境は

  • Mac OSX 10.7.2
  • ruby 1.9.2
  • rubygems 1.8.6
  • Capistrano 2.9.0

です。

Capistranoインストール

Capistranoのインストール自体は、
Terminal.appを立ち上げて以下のコマンドで行えます。

1
$ gem install capistrano

自動化スクリプトの雛形作成

Capistranoをインストールすると、capifyというコマンドが使えるようになり、

自動化スクリプトの雛形が作成できるようになります。

以下のコマンドで適当な場所に雛形を作成します。

1
2
3
$ mkdir ~/cap_test
$ cd ~/cap_test
$ capify .

~/cap_test/config/deploy.rb

が作成されていれば、雛形の作成は完了です。

このdeploy.rbに自動化スクリプトを記述します。


apacheとpassengerをインストールする処理の記述

いよいよインストールの自動化スクリプトを記述していきます。

エディタで~/cap_test/config/deploy.rbを以下の通り編集します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# passengerをインストールしたいサーバーのIPを受け取る。
set(:host) do
Capistrano::CLI.ui.ask "Give me a server host(IP or domain): "
end

# サーバーにSSHでログインする為のユーザー名を受け取る。
set(:user) do
Capistrano::CLI.ui.ask "Give me a ssh user: "
end

# SSHのパスワードを受け取る
set(:password) do
Capistrano::CLI.password_prompt "Give me a ssh password: "
end

role :target, host

namespace :centos6 do

task :install_passenger, :roles=>:target do

# yumでapacheをインストール
run "yum -y install httpd"
# ファイアウォールの設定変更を行い、80番ポートを公開(設定変更場所は決め打ちでINPUTの5番目にしておく)
run "iptables -I INPUT 5 -m state --state NEW -p tcp --dport 80 -j ACCEPT"
run "service iptables save"
# apacheの自動起動を設定
run "chkconfig httpd on"

# rubyと、rubygemsをインストール
run "yum -y install ruby ruby-devel rubygems"

# passengerをインストール
run "yum -y install gcc make"
run "gem install passenger"

# passengerのapache用モジュールをインストール
run "yum -y install gcc-c++ httpd-devel openssl-devel readline-devel zlib-devel curl-devel"
run "passenger-install-apache2-module -a"

# apache起動
run "service httpd start"
end
end

編集が終わったら、Terminalからcapコマンドで、

install_passengerタスクを実行します。

1
$ cap centos6:install_passenger

サーバーのIPと、ユーザー名・パスワードを聞かれるので入力すると、

apacheとpassengerのインストールが行われます。