Wie resque Arbeiter in der Produktion einzusetzen?
-
20-09-2019 - |
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:
- Capistrano Rezept deploy Arbeiter (Kontrollzahl der Arbeitnehmer, sie neu gestartet, usw.)
- entsandter Arbeitnehmer zu separater Maschine (n), von wo aus der Hauptanwendung ausgeführt wird, welche Einstellungen wurden hier gebraucht?
- bekam redis einen Neustart auf dem Server, um zu überleben (Ich habe versucht, es in cron aber kein Glück setzen)
- 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!
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:
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