Capistrano3とBitbucketを使ってRailsアプリをデプロイ

Capistrano3 を使って、Bitbucket に作成したリポジトリに置いた Rail アプリケーションを、staging 環境の CentOS サーバーにデプロイさせるところまで試しました。忘れないように作業記録です。

スポンサーリンク

— 環境 —
Rails 4.1.1
Capistrano 3.2.1

SSH接続の設定

作業は手元の Mac にて。

1. Mac ローカルから Bitbucket リポジトリに push
2. staging 環境のサーバーが Bitbucket から master ブランチをチェックアウトしてデプロイ

という流れになります。SSH接続のために、2種類の鍵ペア(秘密鍵・公開鍵)が必要となる。

① Mac ローカルから staging サーバーへの SSH 接続用
② staging サーバーから Bitbucket への SSH 接続用

いずれもパスフレーズを空にして作成。最初パスフレーズを設定してたら、SSH接続で permission denied など問題が発生する場合がありましたので。①については、以下参照。

SSH で公開鍵認証による接続の設定、Mac で ssh-keygen し公開鍵をサーバーに保存 〜 CentOS6 | EasyRamble

②はssh で staging サーバーにログイン後、ssh-keygen で鍵作成。

パスフレーズ設定を聞かれますが、空のままEnter。作成された公開鍵のほうを、Bitbucket に登録します。これで、ローカル → staging サーバー、staging サーバー → Bitbucket の両者のSSH接続が可能となる。

Bitbucketアカウント作成〜ローカルのGit既存プロジェクトをインポート(push) | EasyRamble

また、SSH 接続の設定を、あらかじめ ~/.ssh/config に作成しておく必要があります。詳しくは以下。

SSH 接続クライアントの設定、 Macの ~/.ssh/config に SSH 接続の設定を書いておく 〜 CentOS6 | EasyRamble

capistrano の gem をインストール

Gemfile

cap install で capistrano の設定ファイル等がインストールされます。

config/deploy.rb の編集

deploy.rb にデプロイの設定を書いていきます。

config/deploy.rb

application → アプリケーション名
repo_url → リポジトリURL
deploy_to → デプロイ先サーバーのパス
scm → 利用するバージョン管理システム

deploy_to(/path/to/deploy)で指定したパスは、ログインユーザーが書き込めるパーミッションである必要があります。

staging 環境用のファイル作成

config/deploy/staging.rb

app → アプリケーションサーバー
web → ウェブサーバー
db → DBサーバー

それぞれ以上を指定、今回はすべて同じ1台のサーバーで賄う。

以上で、最低限のデプロイ実行の準備は整いました。

デプロイコマンド実行

staging へのデプロイを行うコマンド実行。

これで一応最低限ではありますが、デプロイ完了です。

Rails アプリケーションを staging や production の環境で動作させるには、その他に以下も整える必要があります。

・Bundler による gem のインストール
・DBマイグレーション
・ウェブサーバー再起動

これはまた次の機会に。Capistrano でこれらも自動化するために、もうちょっと突っ込んでちゃんとやんないといけません。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!