Starten oder Neustarten von Unicorn mit Capistrano 3.x

Ich versuche Unicorn zu starten oder neu zu starten, wenn ich das tuecap production deploy mit Capistrano 3.0.1. Ich habe einige Beispiele, bei denen ich mit Capistrano 2.x gearbeitet habe:

namespace :unicorn do
  desc "Start unicorn for this application"
  task :start do
    run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
  end
end

Aber wenn ich es versuche und benutzerun in demdeploy.rb Für Capistrano 3.x erhalte ich einen undefinierten Methodenfehler.

Hier sind ein paar Dinge, die ich ausprobiert habe:

# within the :deploy I created a task that I called after :finished
namespace :deploy do
...

  task :unicorn do
    run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
  end

  after :finished, 'deploy:unicorn'

end

Ich habe auch versucht, den Lauf innerhalb der Aufgabe: restart zu setzen

namespace :deploy do
  desc 'Restart application'
  task :restart do

  on roles(:app), in: :sequence, wait: 5 do
    # Your restart mechanism here, for example:
    # execute :touch, release_path.join('tmp/restart.txt')
    execute :run, "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/deployrails.conf.rb -D"
  end
end    

Wenn ich nur benutzerun "cd ... " then I'll get afalsche Anzahl von Argumenten (1 für 0) `in der lokalen Shell.

Ich kann den Einhornprozess mit startenunicorn -c /etc/unicorn/deployrails.conf.rb -D von meiner ssh'd VM Shell.

Ich kann den Master-Unicorn-Prozess über die VM-Shell mit kill USR2 beenden, aber obwohl der Prozess beendet wird, wird eine Fehlermeldung angezeigt. Ich kann den Vorgang dann mit erneut startenunicorn -c ...

$ kill USR2 58798
bash: kill: USR2: arguments must be process or job IDs

Ich bin sehr neu in Ruby, Rails und Deployment im Allgemeinen. Ich habe ein VirtualBox-Setup mit Ubuntu, Nginx, RVM und Unicorn. Bis jetzt bin ich ziemlich aufgeregt, aber dieses Setup ist wirklich faul, jeder Rat oder jede Einsicht ist willkommen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage