Capistrano 2.2.0のチュートリアル
Capistranoのデプロイ作業について基本的なところをメモ。
Rails2.0.2、Capistrano2.2.0を使っています。
Capistranoは最近のバージョンアップでRails本の説明とコマンドなどが異なっています。
必要な物
- 開発サーバ
- 配備先のサーバ
- svnサーバ
開発サーバは普段開発作業してるクライアントでOKです。配備先のサーバは公開する用の物をでっち上げましょう。Railsが動いて、Apacheが入ってれば大丈夫です。
svnサーバも適当にでっち上げてください。Capistranoはデプロイ時にsvnサーバからデータを取得します。svnサーバ構築はこちらのエントリが参考になるかもしれません。体系的に学びたいならでびあんぐる本がオススメです。
インストール
% sudo gem install --include-dependencies termios % sudo gem install --include-dependencies capistrano % sudo gem install --include-dependencies mongrel % sudo gem install --include-dependencies mongrel_cluster
開発機、配備先ともに導入してください。今回はサーバにMongrelを利用します。
配備するテストアプリを作成
Railsで適当なものを作成します。
% rails test % cd test % ruby script/generate scaffold user name:string % rake db:migrate
上記でCRUDできるテストアプリが完成します。
% ruby script/server
http://127.0.0.1:3000/users でアクセスできます。確認したら終了します。
Mongrelの設定
% mongrel_rails cluster::configure -e production -p 5000 -N 2 -c /home/railsapp/test/current
5000は開始ポート番号、2は起動するサーバの個数です。配備サーバの/home/railsapp/test/currentに設置します。最後の/currentは必須項目なので忘れないように。
配備先サーバにrailsappというユーザを作ればよさそうです。
Capistranoの設定
まず設定ファイルを作成します。
% capify .
config/deploy.rbを以下の具合に修正します。
require 'mongrel_cluster/recipes' set :application, "test" # アプリ名 set :repository, "http://svnserver/#{application}/trunk" set :deploy_to, "/home/railsapp/#{application}" set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml" set :user, "railsapp" # 配備先ディレクトリのユーザ #set :scm_username, "svnuser" # svnのユーザ名があれば設定 #set :scm_password, "svnpass" # パスワードがあれば設定 role :app, "配備先サーバのアドレス" role :web, "配備先サーバのアドレス" role :db, "配備先サーバのアドレス", :primary => true
デプロイ
ここまでで設定作業は終了です。実際にデプロイを行います。
% cap deploy:setup % cap deploy:cold
setupで配備先にディレクトリが作成されます。coldは初回配備時のみに使用するコマンドです。
これで http://配備先サーバのアドレス:5000/ にアクセスするとアプリが動作しているはずです。
次回デプロイしたいときはsvnサーバに修正をコミットしたあと、cap deploy を実行すればOKです。
もし「sudoできないぞ!」エラーが出たなら/etc/sudoersを修正してください。
#Defaults requiretty #端末がないとエラーになる
Apacheの設定
バランサーを設定して使いましょう。
<Proxy balancer://test> BalancerMember http://127.0.0.1:5000 BalancerMember http://127.0.0.1:5001 </Proxy>
よく使うコマンド
% cap deploy #デプロイ % cap deploy:cleanup #過去に配備したバージョンを削除 % cap deploy:start #アプリケーションサーバの開始 % cap deploy:stop #アプリケーションサーバの停止