Railsアプリケーションを本番環境に安全かつ効率的にデプロイする手段の一つとして「Capistrano(カピストラーノ)」があります。Capistranoはリモートサーバーへの自動デプロイツールで、特に中規模〜大規模のRailsプロジェクトでよく用いられます。
以下では、Capistranoによる自動デプロイの概要、設定手順、典型的な構成、注意点を順を追って説明します。
1. Capistranoの概要
CapistranoはRuby製のリモートサーバー操作ツールで、以下のような特徴を持ちます:
-
複数のサーバーへの同時デプロイが可能
-
ロール(app, db, webなど)に応じた処理の分離
-
ロールバック機能のサポート
-
sshを利用した安全な接続 -
タスクベースの柔軟なカスタマイズ
2. 前提条件
-
Gitによるバージョン管理
-
公開鍵認証によるSSH接続設定済み
-
本番サーバーにRails、Ruby、Bundlerなど必要な環境が整っている
-
データベースやnginx、pumaなどのサーバー構成が完了していること
3. Capistranoの導入手順
3.1 Gemのインストール
まず、Gemfileに以下を追加します:
その後、インストールします:
3.2 初期化
以下のディレクトリ・ファイルが生成されます:
-
Capfile -
config/deploy.rb -
config/deploy/production.rb -
lib/capistrano/tasks(必要に応じて)
4. Capfileの編集
Capfileに使用するプラグインを読み込みます:
5. config/deploy.rbの設定
基本的な設定:
6. config/deploy/production.rbの設定
本番サーバーの情報を記載します:
7. SSH公開鍵の設定
ローカルの~/.ssh/id_rsa.pubを本番サーバーの~/.ssh/authorized_keysに登録し、SSH接続を確認してください。
8. デプロイ実行
以下のコマンドでデプロイします:
初回は次のようなタスクも必要になります:
9. Capistranoによるデプロイの流れ
-
Gitからコードを取得
-
サーバーにコードを展開(
releasesディレクトリ) -
シンボリックリンクの更新(
currentディレクトリ) -
Bundlerでgemをインストール
-
アセットのプリコンパイル
-
マイグレーションの実行(オプション)
-
アプリケーションサーバーの再起動
10. よくあるカスタマイズ例
-
deploy:restartタスクでpumaやpassengerの再起動設定 -
.envファイルの共有や環境変数設定 -
バックアップや通知の組み込み
11. 注意点とベストプラクティス
-
linked_filesやlinked_dirsの設定を怠ると設定ファイルやログが失われる -
Capistranoは「状態管理型」のデプロイ手法なので、適切なディレクトリ構成(
shared,releases,current)を理解しておく -
複数人開発時はデプロイ前の
deploy:checkを必ず実施する
まとめ
Capistranoは中級以上のRails開発者にとって、効率的で信頼性の高いデプロイ手段です。設定に若干の学習コストがありますが、導入すればデプロイミスの防止や作業の自動化が実現できます。適切な設定とタスク分離を行えば、保守性の高い本番運用体制を構築することが可能です。
ChatGPT4o 生成日:2025/06/21