サーバーへデプロイ

もう締め切り間近なので、サーバーへ「Rails南蛮通事」をデプロイしました。 締め切りまでの間に何度もデプロイすると思われるので、Capstrano で 開発環境(Mac)から簡単にデプロイ出来るようにしました。

情報元は http://manuals.rubyonrails.com/read/chapter/97 です。


*注意* 最新の Capstrano のバージョンは 2.0.X です。しかし、ここで書いたものは 1.4.1 での手順、設定です。(締め切り間近なので前から使ってるバージョンにしました)

準備

  1. ssh でサーバーへのログイン、known_hostsへの登録確認が出ないようにする為
  2. サーバー上で Subversion から checkout 出来る事の確認。サーバー上のインストールで使うアカウントにSubversionのログイン、パスワードを設定する。
  3. ruby/rails/DBソフトのインストール
  4. FastCGIのインストール・設定
  5. Rails FastCGIライブラリーのインストール
  6. データベース・アカウントの作成
  7. apacheの設定

public/.htaccss の変更

デフォルトの .htaccess のままでは、 FastCGIでは動きません。変更したところは:

# サーバー名の後に パスが入る場合はそのパスを設定、この例だと http://server/app/コントロラー名 になる
RewriteBase /app     
# CGI用の設定 RewriteRule ^(.*)$ dispatch.cgi [QSA,L] を止め、FastCGI用に変更 
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

プレジェクトへの Capstorano インストールと設定

既にCapstorano はインストールされているとして、

% cd tsuuji  -- Railsプロジェクトのトップへ移動
% cap --apply-to .

設定ファイル (config/deploy.rb) を編集。変更した所だけ書きます

# アプリケーション名
set :application, "tsuuji"
# SubversionのURL
set :repository, "http://svn.ey-office.com/tsuuji/trunk/tsuuji"
# サーバー名
role :web, "tsuuji.ey-office.com"
role :app, "tsuuji.ey-office.com"
role :db,  "tsuuji.ey-office.com", :primary => true
# インストール先
set :deploy_to, "/users/www/tsuuji" # defaults to "/u/apps/#{application}"
# ログイン名 (このログイン名でsshを使いログインしインストールが行われる)
set :user, "yoshida"            # defaults to the currently logged in user
# ログイン用暗号キーの場所
ssh_options[:keys] = %w(/Home/yy/.ssh/key)

# 最後にサーバー リスタートコマンドを記述
desc "Restart the web server"
task :restart, :roles => :app do
  sudo "/usr/sbin/apachectl  graceful"
end 

サーバーの設定

cap -a setup

デプロイ

cap deploy

migrationが必要な場合は

cap deploy_with_migartion

起動が、ログイン用の暗号キーのパスフレーズや、サーバーで sudo する為のパスワード等をたずねられますので入力して下さい。



実はサーバーに FastCGI用の Ruby ライブラリーが入ってなくて かなり手間取ってしまいました orz
(サーバーからの反応が戻らず、ログも出力されず・・・ ^^;)