続・Capistranoによるデプロイ

2012/05/06

『改訂新版 基礎Ruby on Rails』 読者サポートページ > Rails本番環境構築ガイド

Gitレポジトリの作成の続きです。

Gitで管理されたソースコードをCapistranoでリモートマシンに設置(デプロイ)する手順を示します。

この文章の内容は、随時更新しています。最終更新日: 2012/06/10

以下、ローカルマシン(あなたのPC)で作業する場合はコマンドプロンプトを % で示し、リモートマシン(サーバ)で作業する場合はコマンドプロンプトを $ で示します。

Capistranoの設定を変更

ローカルマシンのasagaoディレクトリにある config/deploy.rb をエディタで開き、

set :repository, "."
set :scm, :none
set :deploy_via, :copy
set :copy_exclude, [ "doc", "log", "tmp" ]

と書いてある部分を、次のように修正します。

set :local_repository, "git@asagao.oiax.jp:asagao.git"
set :repository, "/var/git/asagao.git"
set :branch, "master"
set :scm, :git
set :deploy_via, :remote_cache

:local_repository にはローカルマシンから見たときのレポジトリのURLを指定し、:repository にはリモートマシンから見たときのレポジトリのURLあるいはパスを指定します。

ローカルマシンからデプロイできるかどうか確認します。

% cap deploy

GitHubのレポジトリからデプロイする

以下、GitHubのレポジトリのURLを git@github.com:oiax/asagao.git とします。

GitHubにレポジトリを作る方法は、本稿の範囲外とします。なお、上記のURLは本物です。

railsユーザーでリモートマシンにログインし、次のコマンドを実行します。

$ git ls-remote git@github.com:oiax/asagao.git master

「Are you sure you want to continue connecting (yes/no)?」と尋ねられたら「yes」を入力します。

次のような結果が表示されればOKです。40桁の16進数の値は何でも構いません。

a7fd1b0a63cffa5a1820fded705d155b0453eaf5	refs/heads/master

github.com のサーバ鍵を /var/rails/.ssh/known_hosts に加えるために、このコマンドを実行しています。リモートマシン上で少なくとも1回このコマンドを実行しないと、デプロイに失敗します。

続いて以下のコマンドを順に実行します。

$ cd /var/rails/asagao/shared
$ rm -rf cached-copy

リポジトリを変更した時はキャッシュを消去する必要があります。

ローカルマシンのasagaoディレクトリにある config/deploy.rb をエディタで開き、

set :local_repository, "git@asagao.oiax.jp:asagao.git"
set :repository, "/var/git/asagao.git"

と書いてある部分を、次のように修正します。

set :repository, "git@github.com:oiax/asagao.git"

ローカルマシンからデプロイできるかどうか確認します。

% cap deploy

目次