デプロイ作業に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買ってください。