Subversion を使用した Capistrano のデプロイメント

Capistrano の導入

カピストラーノ は、アプリケーション展開プロセスの自動化に使用されるツールです。 Capistrano は主に Rails アプリのデプロイに使用されます。 Rails アプリに加えられた変更は、キャップのデプロイを使用してサーバーに簡単に転送できます。 Capistrano は、アプリをデプロイするために SVN / GIT などのバージョン管理システムを使用して構成できます。また、Capistrano でアプリがデプロイされているアプリケーション サーバーの種類 (mongrel、mod_rails / Fcgi) を定義できます。ここでは、Mongrel クラスターをアプリケーション サーバーとして使用し、SVN を使用してアプリをデプロイするキャップについて説明します。

インストール:

Capistrano は、以下に示すように Ruby gem としてインストールできます。 $ gem インストール capistrano

capistrano を使用するように Rails アプリを構成する:

これは、Rails アプリから次のコマンドを実行することで実行できます。

$キャピファイ。

上記のコマンドは、 キャップファイル そして config/deploy.rb ファイル。

user@hostname [~/railsapp]$ capify 。 [追加] './Capfile' の書き込み [追加] './config/deploy.rb' の書き込み

user@hostname [~/railsapp]$ cat Capfile

load 'deploy' if Reply_to?(:namespace) # cap2 区別子 Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin|ロード(プラグイン) }

load 'config/deploy' # デフォルト タスクのロードをスキップするには、この行を削除します。

user@hostname [~/railsapp]$ cat config/deploy.rb

set :application, “ここにアプリケーション名を設定します” set :repository, “ここにリポジトリの場所を設定します”

# ターゲット # サーバー (デフォルト) 上の /u/apps/#{application} にデプロイしない場合は、:deploy_to 変数を使用して # の実際の場所を指定できます: # set :deploy_to, “/var /www/#{アプリケーション}」

# ソース コードの管理に Subversion を使用していない場合は、以下に # SCM を指定します: # set :scm, :subversion

role :app, “あなたのアプリサーバーはここにあります” role :web, “あなたのウェブサーバーはここにあります” role :db, “あなたのデータベースサーバーはここにあります”, :primary => true

PS: 代わりに、直接作成することもできます。 キャップファイル そして デプロイ.rb Rails アプリの下にファイルを作成し、「vi」エディターを使用して必要なデータをそれにロードします。

Capfile と Deploy.rb:

Capfile には、キャップの展開中に実行する必要があるすべてのタスクが含まれています。 Capfile 内のすべての関数 (タスク) は、キーワード「task」を使用して定義できます。関数のグループは名前空間と呼ばれます。

サンプル キャップファイル:

'デプロイ' をロードします ifresponse_to?(:namespace) # cap2 区別子

「構成/デプロイ」をロードします

名前空間:デプロイ実行

タスク :start、:roles => :app do

「cd #{current_path} && mongrel_rails cluster::configure -eproduction -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –user #{user} –group #{user}」を実行します。

「cd #{current_path} && mongrel_rails クラスタ::スタート」を実行します。

「rm -rf /home/#{user}/public_html;」を実行します。 ln -s #{現在のパス}/public /home/#{ユーザー}/public_html”

「mkdir -p #{deploy_to}/shared/config」を実行します。

「mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml」を実行します。

「ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml」を実行します。

終わり

タスク :restart、:roles => :app do

「ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml」を実行します。

「cd #{current_path} && mongrel_rails cluster::restart」を実行します。

「cd #{current_path} && chmod 755 #{chmod755}」を実行します。

終わり

終わり

config/deploy.rb ファイルには、cap のデプロイ中に使用されるすべての変数が含まれています。たとえば、上記の Capfile では、mongrel_port、user、chmod755 などのさまざまな変数にアクセスしています。同じ変数を最初に config/deploy.rb ファイルで定義する必要があります。その後、Capistrano だけがタスクを適切に実行します。

サンプル config/deploy.rb:

設定:アプリケーション、「railsapp」

セット:ドメイン、「ホスト名」

設定:ユーザー、「ユーザー」

set :repository、「svn+ssh://#{ユーザー}@#{ドメイン}/home/#{ユーザー}/svn/#{アプリケーション}/trunk」

セット:use_sudo、false

セット:group_writable、false

set :deploy_to, “/home/#{ユーザー}/apps/#{アプリケーション}”

セット:deploy_via、:checkout

set :chmod755, “app config db lib publicベンダースクリプト script/* public/disp*”

設定:mongrel_port、「4000」

セット:mongrel_nodes、「2」

デフォルト_run_options[:pty] = true

役割:アプリ、ドメイン

役割:ウェブ、ドメイン

ロール:db、ドメイン、:primary => true

ここでは、適切なアプリケーション名、ドメイン名、SSH ユーザーを配置する必要があります。キャップ付きのデプロイを続行する前に、rails アプリを svn リポジトリにインポートする必要があります。 SVN リポジトリは以下のように設定できます。

ユーザー@ホスト名 [~]$ mkdir svn

user@hostname [~]$ svnadmin create ~/svn/railsapp

PS: svn リポジトリにも同じ名前の Rails アプリを指定してください。

それが完了したら、Rails アプリを SVN リポジトリにインポートできます。

user@hostname [~]$ mkdir -p ~/temp/railsapp/tags ~/temp/railsapp/branches

user@hostname [~]$ cp -pR ~/railsapp ~/temp/railsapp/trunk

ここで、トランク ディレクトリを作成するときに、railsapp (Rails アプリ ディレクトリ) への完全なパスを必ず指定してください。また、正しいユーザー、アプリケーション、ドメインをtrunk/config/deploy.rbに指定する必要があります。

Rails アプリはトランク ディレクトリに配置され、svn リポジトリにインポートできるようになります。

user@hostname [~]$ svn import temp/railsapp file:///home/user/svn/railsapp -m "message"

svn リポジトリ (サーバーにあるなど) にインポートされた Rails アプリは、以下に示すようにローカル マシンにチェックアウトできます。

user@localmachine [~]$ svn co svn+ssh://user@hostname/home/user/svn/railsapp/trunk フォルダ名

パスワード: ユーザーのSSHパスワード

これで、チェックアウトしたフォルダー内で編集済みの capfile とdeploy.rb ファイルを見つけることができます。この後、ローカル版アプリケーションのRAILS_ROOTから以下のコマンドを実行します。

$ キャップ展開:セットアップ

$ キャップ展開:コールド

コマンド「capdeploy:setup」は、cap がデプロイされたアプリに必要な初期ディレクトリ構造をセットアップします。

言う、

/ホーム/ユーザー/アプリ

/ホーム/ユーザー/アプリ/アプリ名

/home/ユーザー/アプリ/アプリ名/リリース

/home/ユーザー/アプリ/アプリ名/共有

コマンド「capdeploy:cold」は、svn リポジトリから Rails アプリをチェックアウトし、/home/user/apps/appname/releases 内のディレクトリの下に配置します。後でシンボリック リンクが /home/user/apps/appname/releases/ /home/user/apps/appname/current から作成されます。また、Capfile で説明されているように、ドキュメント ルートは現在のリリースのパブリック ディレクトリを指します。

リリース ディレクトリにはサーバーにデプロイされたアプリが含まれており、アプリ フォルダーには Rails アプリがキャップ デプロイされた日時に従って名前が付けられます。

言う、

ユーザー@ホスト名 [~/apps/railsapp/releases]$ ls -al

合計24

drwxrwxr-x 6 ユーザー ユーザー 4096 2009 年 4 月 28 日 。

drwxrwxr-x 4 user user 4096 2009年7月9日..

drwxr-xr-x 16 ユーザー ユーザー 4096 2008 年 10 月 15 日 20081015183834

drwxr-xr-x 21 ユーザー ユーザー 4096 2009 年 2 月 3 日 20081015183941

drwxr-xr-x 8 ユーザー ユーザー 4096 2009 年 4 月 28 日 20090428215604

drwxr-xr-x 8 ユーザー ユーザー 4096 2009 年 4 月 28 日 20090428221701

Rails アプリで共通のディレクトリ (イメージ、構成ファイル、ログ ファイルなど) は共有ディレクトリ内に配置され、現在のリリースにシンボリック リンクされます。

参考文献: http://www.capify.org/index.php/Capistrano http://www.hostingrails.com/Capistrano-2-x-Deploying-Your-Rails-Application-on-HostingRails-com

投稿者 : ビナヤン

ご連絡ください。

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese