Frage

Die GitHub Jungs vor kurzem ihre Hintergrundverarbeitung App veröffentlicht, die Redis verwendet: http://github.com/defunkt/resque http://github.com/blog/542-introducing-resque

Ich habe es vor Ort zu arbeiten, aber ich bin zu kämpfen es in der Produktion zu bekommen. Hat jemand ein:

  1. Capistrano Rezept deploy Arbeiter (Kontrollzahl der Arbeitnehmer, sie neu gestartet, usw.)
  2. entsandter Arbeitnehmer zu separater Maschine (n), von wo aus der Hauptanwendung ausgeführt wird, welche Einstellungen wurden hier gebraucht?
  3. bekam redis einen Neustart auf dem Server, um zu überleben (Ich habe versucht, es in cron aber kein Glück setzen)
  4. Wie haben Sie resque-web (ihre hervorragende Überwachung app) in die deploy arbeiten?

Danke!

P. S. Ich stellte ein Problem auf Github darüber aber keine Antwort vor. einige SO Gurus der Hoffnung, auf diese helfen, wie ich in Installationen erlebt nicht sehr bin. Vielen Dank!

War es hilfreich?

Lösung 3

Garrett Antwort wirklich hilft, wollte nur noch ein paar Details veröffentlichen. Es dauerte viel Bastelei es richtig zu machen ...

Ich bin mit Passagiere auch, aber nginx anstelle von Apache.

Zuerst vergessen Sie nicht, Sie sinatra installieren müssen, das warf mich für eine Weile. sudo gem install sinatra

Dann müssen Sie ein Verzeichnis für die Sache zum Laufen zu bringen, und es hat einen öffentlichen und tmp-Ordner haben. Sie können leer sein, aber das Problem ist, dass git nicht ein leeres Verzeichnis im Repo speichern. Das Verzeichnis hat mindestens eine Datei darin haben, so dass ich einige Junk-Dateien als Platzhalter gemacht. Dies ist eine seltsame Funktion / Fehler in git.

Ich bin mit dem resque Plugin, so dass ich das Verzeichnis gemacht dort (wo der Standard config.ru ist). Es sieht aus wie Garrett ein neues ‚resque‘ Verzeichnis in seiner RAILS_ROOT gemacht. Entweder man sollte funktionieren. Für mich ...

cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public 
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt

Dann bearbeiten ich MY_RAILS_APP/vendor/plugins/resque/config.ru so dass es wie folgt aussieht:

#!/usr/bin/env ruby
require 'logger'

$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'

use Rack::ShowExceptions

# Set the AUTH env variable to your basic auth password to protect Resque.
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
  Resque::Server.use Rack::Auth::Basic do |username, password|
    password == AUTH_PASSWORD
  end
end

run Resque::Server.new

Vergessen Sie nicht zu ändern ADD_SOME_PASSWORD_HERE zu dem Passwort, das Sie verwenden möchten, um die Anwendung zu schützen.

Schließlich verwende ich Nginx so hier ist das, was ich hinzugefügt, um meine nginx.conf

server {
  listen   80;
  server_name  resque.seoaholic.com;
  root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
  passenger_enabled on;
}

Und so wird es auf Ihrem entfalten neu gestartet wird, wahrscheinlich so etwas wie dies in Ihrem deploy.rb

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

Ich bin nicht wirklich sicher, ob dies der beste Weg ist, habe ich nie Setup Rack / sinatra-Anwendungen vor. Aber es funktioniert.

Dies ist nur die Überwachung der App in Gang zu bringen. Als nächstes ich brauche, um herauszufinden Gott Teil.

Andere Tipps

Ich bin ein wenig spät, um die Partei, aber dachte, ich würde schreiben, was für mich gearbeitet. Im Wesentlichen muss ich Monitor redis und resque Gott Setup. Wenn sie nicht mehr laufen, Gott beginnt sie wieder nach oben. Dann habe ich eine Harke Aufgabe, die nach einem Capistrano deploy fuehrt wird, dass meine resque Arbeiter beendet. Sobald die Arbeiter verlassen werden, wird Gott neuen Arbeiter beginnen, so dass sie die aktuelle Code-Basis laufen.

Hier ist meine volle writeup, wie ich resque in der Produktion:

http://thomasmango.com/2010/05/27/resque- in Produktion

Ich dachte gerade diese letzte Nacht, für Capistrano sollten Sie san_juan , dann ich wie die Verwendung von Gott Einsatz der Arbeitnehmer zu verwalten. Wie für einen Neustart überleben, ich bin nicht sicher, aber ich alle 6 Monate neu starten, so auch ich nicht besorgt.

Obwohl er von Start es verschiedene Möglichkeiten vorschlagen, das ist was für mich gearbeitet am einfachsten. (Innerhalb Ihres deploy.rb)

require 'san_juan'
after "deploy:symlink", "god:app:reload"
after "deploy:symlink", "god:app:start"

So zu verwalten, wo es läuft, auf einen anderen Server, etc., deckt er, dass in dem Konfigurationsabschnitt des README.

Ich benutze Passagier auf meiner Scheibe, so dass es relativ einfach war, musste ich so wie so eine config.ru Datei haben:

require 'resque/server'

run Rack::URLMap.new \
  "/" => Resque::Server.new

Für meine Virtual Datei habe ich:

<VirtualHost *:80>
        ServerName resque.server.com
        DocumentRoot /var/www/server.com/current/resque/public

        <Location />
          AuthType Basic
          AuthName "Resque Workers"
          AuthUserFile /var/www/server.com/current/resque/.htpasswd
          Require valid-user
        </Location>
</VirtualHost>

Auch eine kurze Notiz. Stellen Sie sicher, dass Sie die resque:setup Rake Aufgabe overide, wird es Ihnen viel Zeit zum Laichen neuen Arbeiter mit Gott speichern.

Ich lief in eine Menge Ärger, wenn Sie also mehr Hilfe benötigen, nur einen Kommentar.

Verwenden Sie diese Schritte, anstatt, Konfiguration mit Web-Server-Ebene und Bearbeitung Plugin:

#The steps need to be performed to use resque-web with in your application

#In routes.rb

ApplicationName::Application.routes.draw do
  resources :some_controller_name
  mount Resque::Server, :at=> "/resque"
end

#That's it now you can access it from within your application i.e
#http://localhost:3000/resque

#To be insured that that Resque::Server is loaded add its requirement condition in Gemfile

gem 'resque', :require=>"resque/server"

#To add  basic http authentication add resque_auth.rb file in initializers folder and add these lines for the security

Resque::Server.use(Rack::Auth::Basic) do |user, password|
  password == "secret"
end

#That's It !!!!! :)

#Thanks to Ryan from RailsCasts for this valuable information.
#http://railscasts.com/episodes/271-resque?autoplay=true 

https://gist.github.com/1060167

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top