Passengerを実行しているCentOSサーバーにRailsアプリをデプロイしようとしています。SVNリポジトリとMySQLデータベースは、それぞれ別々のマシンでホストされています。(つまり、合計3つの個別のホストが関係しています。)
これが私のdeploy.rb
ファイルです(Passenger docsから取得):
set :application, 'myapp'
set :repository, 'svn+ssh://user@svn_host.com/var/svn/myapp/trunk'
# Changed this to true because I do in fact use sudo.
set :use_sudo, true
set :deploy_to, "/opt/deployed_rails_apps/#{application}"
role :app, 'user@app_host.com'
role :web, 'user@app_host.com'
# Originally this had a "primary => true" option, but cap deploy:setup failed
# when that option was present.
role :db, 'user@db_host.com'
namespace :deploy do
task :start, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
task :stop, :roles => :app do
# Do nothing.
end
desc "Restart Application"
task :restart, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
end
cap deploy:setup
成功しているようです。少なくともエラーはありません。しかしcap deploy
失敗します。多くの出力がありますが、結果として、Capistranoが、指定した「役割」に:db
アプリをデプロイしようとしているようです。つまり、アプリをDBホストにデプロイしようとしています。
servers: ["app_host.com", "db_host.com"]
..。
** [db_host :: out] Permission denied, please try again.
** [db_host :: out] user@svn_host.com's password:
..。
failed: "sh -c 'svn checkout -q -r184 svn+ssh://user@svn_host.com/var/svn/myapp/trunk /opt/deployed_rails_apps/myapp/releases/20090720190553 && (echo 184 > /opt/deployed_rails_apps/myapp/releases/20090720190553/REVISION)'" on user@db_host.com