2012-01-02 12 views
5

Ok, sto facendo la mia prima app rubino. Chi sa che spostare tutto su "produzione" è così complicato. Finora ho faticato molto nella configurazione del passeggero, facendolo funzionare all'avvio, quindi ho iniziato a eseguire i redis all'avvio.Come si crea un operatore resque automaticamente all'avvio?

Il mio ultimo compito è all'avvio per aggiungere 1 lavoratore. In questo momento, devo ssh in ed eseguire il mio comando rake rake workers:start. Ovviamente questo non va bene quando voglio chiudere ssh ... quindi non so davvero come o quale sarà il prossimo passo.

Ho provato a copiare resque default config su config.ru e fa esplodere Passenger con errori. Ho anche cercato in resque-pool che alcune persone hanno menzionato ma che è sopra la mia testa.

tutto ciò che devo fare è aggiungere 1 worker all'avvio. Questo non è così serio di un'app così semplice sarebbe meglio a questo punto.

+0

A proposito, usi Rails? O qualche altro quadro? –

+0

Sinatra. scusa, avrei dovuto dire che – Tallboy

+0

ho capito cosa provi.Sono stato sopraffatto anche :-) –

risposta

4

Nella produzione si dovrebbe usare god per osservare i processi. Anche se questo progetto è piccolo, ti consiglio vivamente di investire il tuo tempo e installarlo.

Un altro grande un must è Capistrano.

Quindi, se stavate usando dio, ecco un config file che potrebbe esservi d'aiuto.

Si potrebbe anche provare la programmazione rake resque:work all'avvio del sistema, utilizzando uno script adeguato in /etc/init.d/ o /etc/init/ o di un altro (dipende da quale sistema si usa). L'ho provato qualche tempo fa e mi sono arreso (non ricordo perché).

Capisco che questa mia risposta non è esattamente quello che stai cercando in questo momento. Ma immagina questo: se tutto è impostato, l'implementazione della prossima versione è facile come eseguire rake deploy sul tuo computer di sviluppo. E si prenderà cura di estrarre il codice dal repository, eseguire migrazioni, riavviare lavoratori e server web e cosa no.

+1

So che questa non è la risposta che ti aspettavi, ma come potrei farlo con uno script di avvio 'corretto'. Prometto di guardare in dio e capistrano di più ma voglio solo farlo funzionare prima. Sto usando centOS. – Tallboy

+0

Hmm, sto usando Ubuntu sui miei server. Non so di centos, mi dispiace. –

+0

Per le persone che credono che Dio sia qualcuno da adorare, e non qualcosa da usare, questa è una soluzione inaccettabile. Un'alternativa migliore sarebbe monit. – sockmonk

6

Io non uso la gemma di Dio perché (1) ho visto un progetto che era molto afflitto dalla complessità della configurazione introdotta, e (2) sono personalmente molto a mio agio con lo standard Linux (Ubuntu) strumenti che gestiscono questo tipo di cose.

per avviare il lavoratori Resque all'avvio

Ho questo codice nel mio file /etc/rc.local. Ho un implementare utente del sistema:

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

Poi, in questi script ho creato l'ambiente rubino ed eseguire il task rake:

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

Sto usando questo tipo di istituito per anni, ed è solido. I server non si bloccano. Non ho ancora bisogno del sovraccarico di installare un altro sistema (come la gemma del dio) per controllare questi altri server.

Inoltre, io uso una gemma capistrano per gestire il riavvio degli addetti alla distribuzione.

+0

Ehi, vedo che hai risposto a questo quasi 4 anni fa, ma ... Avresti un modo per cancellare gli operatori resque ... Usando ps ax e uccidendo il pid uccide il processo, ma resque continua a tenerli registrati. – jdkealy

+0

hmm ... Mi dispiace, non lo so. Ecco i miei script resque, in caso di aiuto: https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

Hey, grazie per avermi contattato! L'ho appena implementato ieri: https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb Ero preoccupato dell'uccisione di un server mentre i lavoratori resque erano occupati con un'attività e aggiungevano un collegamento simbolico a uno script bash che esegue un'attività di rake in /etc/rc0.d/ sembra abbandonare gli operai con grazia! – jdkealy