2009-07-20 10 views
1

私は乗客を実行しているCentOSサーバーにRailsアプリケーションを配備しようとしています。 SVNリポジトリとMySQLデータベースはそれぞれ別々のマシンでホストされています。ここでCapistranoに別々のアプリケーションサーバーとDBサーバーを指定するにはどうすればよいですか?

(換言すれば、そこに関わる3つの別々のホストの合計です)(Passenger docsから取られた)私のdeploy.rbファイルです:

set :application, 'myapp' 
set :repository, 'svn+ssh://[email protected]_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, '[email protected]_host.com' 
role :web, '[email protected]_host.com' 

# Originally this had a "primary => true" option, but cap deploy:setup failed 
# when that option was present. 
role :db, '[email protected]_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は失敗します。そこ出力の多くはだが、結論はカピストラーノは、「役割」私は:dbに指定さに私のアプリを展開しようとしていることのように見える - DBホストにアプリを展開しようとしています。

servers: ["app_host.com", "db_host.com"] 

...

** [db_host :: out] Permission denied, please try again. 
** [db_host :: out] [email protected]_host.com's password: 

...

failed: "sh -c 'svn checkout -q -r184 svn+ssh://[email protected]_host.com/var/svn/myapp/trunk /opt/deployed_rails_apps/myapp/releases/20090720190553 && (echo 184 > /opt/deployed_rails_apps/myapp/releases/20090720190553/REVISION)'" on [email protected]_host.com 

答えて

4

あなたはそれが簡単に修正だ、DBボックスで、あなたのRailsのコードを必要としない場合 - 定義されていません。 a :dbロールです。デフォルトで

cap deployは、あなたが定義したすべての役割にすべてのボックスにコードを置きます。

+0

ありがとうございました。それで、なぜ多くの例に「db:」役割が含まれているのですか?どのような状況で私はDBボックスにアプリケーションコードを持っていたいですか? – Ethan

+1

ほとんどの場合、そのマシンでレーキタスクを実行します。 –

関連する問題