2010-07-15 9 views
1

Je suis nouveau à déployer avec Capistrano, et je suis en train de ce qui suit:Capistrano 'faucheur not found

deploy.rb:

set :application, "example.co.uk" 

# If you aren't deploying to /u/apps/#{application} on the target 
# servers (which is the default), you can specify the actual location 
# via the :deploy_to variable: 
set :deploy_to, "/home/example/#{application}" 

# SCM Options 
default_run_options[:pty] = true # Must be set for the password prompt from git to work 
ssh_options[:forward_agent] = true # Agent forwarding keys 
set :repository, "[email protected]:mongeese/example.git" # Your clone URL 
set :scm, "git" 
set :branch, "master" 
set :deploy_via, :remote_cache 
set :user, "james" # The server's user for deploys 

role :app, "example.co.uk" 
role :web, "example.co.uk" 
role :db, "example.co.uk", :primary => true 

set :use_sudo, false 

Je reçois la sortie suivante:

* executing `deploy:restart' 
    * executing "/home/example/example.co.uk/current/script/process/reaper" 
    servers: ["example.co.uk"] 
    [example.co.uk] executing command 
** [out :: example.co.uk] sh: /home/example/example.co.uk/current/script/process/reaper: not found 
    command finished 

L'utilisateur "james" peut sudo. Si je sors: use_sudo, je reçois l'erreur suivante:

* executing "sudo -p 'sudo password: ' -u app /home/example/example.co.uk/current/script/process/reaper" 
    servers: ["example.co.uk"] 
    [example.co.uk] executing command 
** [out :: example.co.uk] sudo: unknown user: app 
    command finished 

Je manque évidemment quelque chose de complètement, comme Google ne semble tourner de vieux résultats à ce sujet.

Répondre

1

Il devait y avoir un problème avec les recettes, la dérogation suivante fonctionne très bien:

set :application, "example.co.uk" 

# If you aren't deploying to /u/apps/#{application} on the target 
# servers (which is the default), you can specify the actual location 
# via the :deploy_to variable: 
set :deploy_to, "/home/example/#{application}" 

# SCM Options 
default_run_options[:pty] = true # Must be set for the password prompt from git to work 
ssh_options[:forward_agent] = true # Agent forwarding keys 
set :repository, "[email protected]:example/MyRepo.git" # Your clone URL 
set :scm, "git" 
set :branch, "master" 
set :deploy_via, :remote_cache 
set :user, "james" # The server's user for deploys 

role :app, "example.co.uk" 
role :web, "example.co.uk" 
role :db, "example.co.uk", :primary => true 

namespace :deploy do 
    desc "Restarting mod_rails with restart.txt" 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 

    [:start, :stop].each do |t| 
    desc "#{t} task is a no-op with mod_rails" 
    task t, :roles => :app do ; end 
    end 
end 
0

Pour les personnes qui rencontrent le même problème, ont un coup d'oeil à:

http://capitate.rubyforge.org/recipes/deploy.html#deploy:restart

Lorsque l'appel de la commande "cap deploy", "update" + "restart" dans l'espace de noms "deploy" est appelé.

Le comportement par défaut de "restart" est d'appeler le script "script/process/reaper" sous le chemin courant. Dans la réponse de James, "restart" est remplacée par la commande ci-dessous:

run "touch #{current_path}/tmp/restart.txt" 

Par exemple, les personnes qui utilisent unicorn devraient traiter comme:

#launch unicorn 
    task :start, roles: :app, except: { no_release: true } do 
    run "cd #{current_path} && bundle exec unicorn_rails -c config/unicorn.rb -E #{rails_env} -D" 
    end 

    #stop unicorn 
    task :stop, roles: :app, except: { no_release: true } do 
    run "kill -KILL -s QUIT `cat #{shared_path}/pids/unicorn.pid`" 
    end 

    #when calling "cap deploy", files will be updated with #update# task (default behaviour), 
    #then "restart" task will be called (overridden below) 
    task :restart, roles: :app, except: { no_release: true } do 
    stop 
    start 
    end 

espère que ma contribution sera utile à quelqu'un ...

Questions connexes