Domanda

I ragazzi GitHub ha recentemente pubblicato il loro app elaborazione in background che utilizza Redis: http://github.com/defunkt/resque http://github.com/blog/542-introducing-resque

L'ho lavoro a livello locale, ma sto lottando per farlo funzionare in produzione. Qualcuno ha ottenuto una:

  1. Capistrano ricetta per distribuire lavoratori (numero di controllo dei lavoratori, riavviarli, etc)
  2. lavoratori distaccati a macchina separata (s) da dove l'applicazione principale è in esecuzione, quali impostazioni fosse bisogno qui?
  3. Redis ottenuto per sopravvivere un riavvio del server (ho provato a mettere in cron ma senza fortuna)
  4. Come avete lavorato resque-web (la loro eccellente monitoraggio app) nella vostra deploy?

Grazie!

P.S. Ho pubblicato un problema su Github di questo, ma nessuna risposta ancora. Sperando alcuni così guru può aiutare su questo come io non sono molto esperto nelle distribuzioni. Grazie!

È stato utile?

Soluzione 3

La risposta di Garrett ha veramente aiutato, voleva solo per pubblicare un qualche dettaglio in più. Ci sono voluti un sacco di ritocchi per farlo bene ...

sto usando dei passeggeri anche, ma nginx invece di Apache.

In primo luogo, non dimenticare che è necessario installare Sinatra, questo mi ha buttato per un po '. sudo gem install sinatra

Poi è necessario creare una directory per la cosa a correre, e deve avere una cartella pubblica e tmp. Possono essere vuota, ma il problema è che git non salverà una directory vuota nel repository. La directory deve avere almeno un file in esso, così ho fatto alcuni file spazzatura come segnaposto. Questa è una strana caratteristica / bug in git.

Sto usando il plugin resque, così ho fatto la directory lì (dove il default è config.ru). Sembra Garrett ha fatto una nuova directory 'Resque' nel suo rails_root. O si dovrebbe lavorare. Per me ...

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

Poi ho modificato MY_RAILS_APP/vendor/plugins/resque/config.ru in modo che appaia in questo modo:

#!/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

Non dimenticare di cambiare ADD_SOME_PASSWORD_HERE alla password che si desidera utilizzare per proteggere l'applicazione.

Infine, sto usando Nginx ecco quello che ho aggiunto alla mia nginx.conf

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

E così viene riavviato sulle tue dell'airbag, probabilmente qualcosa di simile nel tuo deploy.rb

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

In realtà non sono sicuro se questo è il modo migliore, non ho mai cremagliera di installazione / apps Sinatra prima. Ma funziona.

Questo è solo per ottenere l'applicazione di monitoraggio in corso. Poi ho bisogno di capire la parte di Dio.

Altri suggerimenti

Sono un po 'in ritardo alla festa, ma ho pensato di postare quello che ha funzionato per me. In sostanza, Ho installato dio di monitorare Redis e Resque. Se essi non sono in esecuzione più, Dio li avvia il backup. Poi, ho un compito rastrello che viene eseguito dopo un'implementare Capistrano che chiude miei operai Resque. Una volta che i lavoratori sono uscire, Dio si avvierà nuovi lavoratori in modo che si sta eseguendo l'ultima base di codice.

Ecco la mia piena interessante resoconto di come uso Resque nella produzione:

http://thomasmango.com/2010/05/27/resque- a-produzione

Ho appena capito questo la scorsa notte, per Capistrano si dovrebbe usare San_Juan , poi mi piace l'uso di Dio per gestire la distribuzione dei lavoratori. Come per sopravvivere un riavvio, non sono sicuro, ma che riavvio ogni 6 mesi, quindi non sono troppo preoccupato.

Anche se suggerire diversi modi di partenza, questo è ciò che ha funzionato più facile per me. (All'interno del vostro deploy.rb)

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

Per gestire in cui viene eseguito, su un altro server, ecc, si copre che nel href="https://github.com/resque/resque#configuration" rel="nofollow noreferrer"> sezione di configurazione del README.

Io uso passeggeri sul mio fetta, quindi è stato relativamente facile, ho solo bisogno di avere un file config.ru in questo modo:

require 'resque/server'

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

Per il mio file di VirtualHost ho:

<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>

Inoltre, una breve nota. Assicurati di overide il compito resque:setup rastrello, ti farà risparmiare un sacco di tempo per la deposizione delle uova nuovi lavoratori con Dio.

Mi sono imbattuto in un sacco di problemi, quindi se avete bisogno di ulteriore aiuto, basta inserire un commento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top