ハマログ

株式会社イーツー・インフォの社員ブログ

デプロイ作業にCapistranoを試してみる

リーダーかねこがブログかけというので再登板です。Shinです。

今やっている案件でCapistranoというデプロイツールをつかってみました。

これで私もナウなヤングの仲間入りです。

さあ、やってみようといざ始めてみたものの、開発で使用しているローカルPCはWindows、

Rubyのインストールから始めないといけません。

リーダーかねこ、Mac買ってください。

さらにWindows版Rubyをインストールする場合はmingw32版でなければならないという罠が。

自分は大丈夫でしたがS.I様が見事に嵌りました。

Rubyのインストールが終わりましたら、gemのインストールを行います。

 gem install capistrano -v 2.15.5
 gem install capistrano_colors
 gem install capistrano-ext
 gem install railsless-deploy

現在、capistranoはバージョン3なんですが、参考にした資料がバージョン2向けばかりだったので、今回は2.15.5をインストールしました。すいません力及ばず。

インストールがおわったら、任意の場所にフォルダをつくって、そのフォルダ内で以下のコマンドを実行します。

 capify .

そうしますと以下のファイル・フォルダ類が生成されます。

("capify ."コマンドを実行したフォルダ)
 ├─Capfile
 │  
 └─config
      └deploy.rb

今回は開発用サーバと本番サーバの2つにデプロイする必要があるので、まずはその各サーバへの接続設定を記述したファイルを準備します。

configフォルダの中にdeployフォルダを作成し、そのなかにdevelop.rbとproduction.rbの2つのファイルを用意します。

develop.rbに開発サーバ、production.rbに本番サーバの設定を記述します。

("capify ."コマンドを実行したフォルダ)
 ├─Capfile
 │  
 └─config
    ├─deploy.rb
    │  
    └─deploy
         ├─develop.rb
         └─production.rb

develop.rb、production.rbは以下のような書式となっています。

role :web, *%w[
  接続先サーバのIP
]
set :user, "接続するユーザーID"
ssh_options[:keys] = %w(秘密鍵へのパス)

接続先サーバのIP、ユーザーID、秘密鍵へのパスは各自の環境で読みかえてください。

次にconfigフォルダ直下のdeploy.rbを編集します。このファイルに、デプロイ時に行う操作もろもろを記入していきます。

require "capistrano/ext/multistage"
require "capistrano_colors"
require "railsless-deploy"
require "rubygems"

set :application, "sample"
# 残す世代数は3つ(デフォルト5つ)
set :keep_releases, 3

# SCMは使わない
set :scm, :none
set :repository,  "C:\\デプロイしたいソースが置いてある\\任意のフォルダを指定"

set :deploy_to, "デプロイ先サーバのデプロイ先パス(例:/var/www/sample)"
set :deploy_via, :copy
set :copy_dir, "ローカルPCの任意のディレクトリを指定"
# コピー時に無視するファイル
set :copy_exclude, [".git", "**/.git", ".DS_Store", ".svn", "**/.svn"]
set :use_sudo, false
# sudoを実行する際に使う接続ユーザのパスワード
set :password, "xxxxxxx"
default_run_options[:pty] = true

namespace :deploy do
  task :finalize_update, :except => { :no_release => true } do
    # 以下にデプロイ時に実行するコマンドを指定
    # (例:run "chmod -R 770 #{latest_release}/app/storage/")
  end
end

今回はローカルPCにあるソースをまるっとデプロイしたかったのでGitやSubversionは使わず、

set :scm, :none
set :repository,  "ソースの置いてある場所"

としています。

default_run_options[:pty] = true

この記述がないと、sudoを使ったコマンドが実行できないので記入しています。
(これについてはもう一つはまりどころがあるので機会があればまた)

さて、準備もおわり、デプロイを実行してみます。手元にある秘密鍵は.ppk(PuTTy)形式なので、また一調べ必要でした。

[参考サイト] http://www.oiax.jp/rails/capistrano/capistrano_with_windows.html

鍵認証のためにPageantを起動します。
(Puttyがインストールされていればプログラムの検索で「Pageant」と入力すればみつかります)

pageantが起動するとタスクトレイに帽子をかぶったパソコンのアイコンが現れます。
このアイコンをダブルクリックすると、「Pageant Key List」というウィンドウが開くので、
[Add Key] ボタンをクリックして、秘密鍵(.ppk)のファイルを選んで、鍵を pageant に登録します。

これですべての準備が整いました。デプロイ定義ファイルを作成したディレクトリに移動します。

初回デプロイの場合は”deploy:setup”を行います。

cap develop deploy:setup

コマンドの第1引数はデプロイ先です。上記の例では開発サーバ、”config/deploy/develop.rb”の設定となります。

その後デプロイします。

cap develop deploy

前のバージョンに戻すときはロールバックします。

cap develop deploy:rollback

deploy.rbでkeep_releases変数でセットした世代分をのこし削除する場合は以下のコマンドを実行します。

cap develop deploy:cleanup

しかし、今どきの開発はWindowsのほうが一手間かかる場合が多いですね。
リーダーかねこ様、Mac買ってください。

Capistrano

  Shin.A   2014年3月12日


関連記事

MySQLのデータベースの容量を調べる

こんにちは、かねこです。 ブログ更新当番の今日は、エンジニアっぽいエントリーを書…

monacaでiPhoneアプリ

こんにちは。池島です。たまには技術ネタを。と思い一生懸命仕込みました。 mona…

日本語名を含む redmine wikiページをpdf で一括でdownloadするshell

前回のポスト redmine wiki の pdf を shell で down…


← 前の投稿

次の投稿 →