Как я могу указать отдельные серверы приложений и БД для Capistrano? - PullRequest
1 голос
/ 20 июля 2009

Я пытаюсь развернуть приложение Rails на сервере CentOS под управлением Passenger. Репозиторий SVN и база данных MySQL размещены на разных компьютерах. (Другими словами, в общей сложности задействовано три отдельных хоста.)

Вот мой deploy.rb файл (взят из Документы для пассажиров ):

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 . 1014 *

    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

1 Ответ

4 голосов
/ 20 июля 2009

Если вам не нужен код Rails в поле базы данных, это легко исправить - не определяйте роль :db.

cap deploy по умолчанию помещает код во все поля во всех ролях, которые вы определили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...