2013-04-03 14 views
8

Sto eseguendo la mia applicazione di rails utilizzando l'edizione enterprise di ruby ​​con unicorn come app server. Eseguo questo comandoavvia un server app unicorn all'avvio del server ubuntu

bundle exec unicorn -D -c /home/ubuntu/apps/st/config/unicorn.rb 

Ho bisogno di eseguire questo comando subito dopo il riavvio o l'avvio del sistema. Sto facendo funzionare l'app sull'istanza di Ubuntu 10.04 LTS EC2. Ho provato un paio di esempi che sono citati on this site e as this site ma non funziona per me. Any heads up

+0

Come funziona? Vedi un errore? Il processo non è effettivamente in esecuzione (controllare con ps aux) – aussiegeek

+0

Ho aggiunto questo script e riavviato l'istanza ma è stato avviato anche l'unicorno Ho verificato che syslog non ha trovato e loggato e ha anche controllato ps aux, il processo non era ancora avviato –

+0

I è necessario eseguire bundle exec, in genere non unicorn_rails. Fai la differenza –

risposta

2

Nel mio caso, ho solo voluto in fretta quindi metto il comando di avvio in /etc/rc.local come di seguito. Si noti che sto usando RVM.

# By default this script does nothing. 
cd <your project dir> 
/usr/local/rvm/gems/ruby-2.2.1/wrappers/bundle exec unicorn -c <your project dir>/config/unicorn.conf -D 
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server 
exit 0 

Assicurarsi che il comando di avvio è sopra l'uscita 0. Dopo aver riavviato, verificare se è in esecuzione o no colpendo direttamente l'URL dell'applicazione o utilizzare ps -aux | grep unicorn comando.

Nota * In precedenza utilizzo Phusion Passenger ma non riesco a visualizzare il registro degli errori, quindi torno all'unicorno. Ho anche provato @warantesbr senza successo, che suppongo che non riesca perché il mio intero ambiente in cui l'installazione utilizza l'accesso root.

16

Provalo come un Upstart. Per fare ciò, è necessario creare un file di myapp.conf nella directory /etc/init/ con i contenuti di seguito:

description "myapp server" 

start on runlevel [23] 
stop on shutdown 
exec sudo -u myuser sh -c "cd /path/to/my/app && bundle exec unicorn -D -c /home/ubuntu/apps/st/config/unicorn.rb" 

respawn 

Dopo di che, si dovrebbe essere in grado di start/stop/restart la tua app con i seguenti comandi:

start myapp 
stop myapp 
restart myapp 

Usa ps -aux | grep myapp per verificare se la tua app è in esecuzione.

+0

Fammi provare e ti ritorni presto. Molte grazie. –

+0

quando si esegue start myapp, dice lavoro sconosciuto. –

+1

Ottengo: 'initctl: messaggio di invio rifiutato, 1 regole corrispondenti; type = "method_call", sender = ": 1.7 "(uid = 1000 pid = 4533 comm =" initctl start staging-myapp ") interface =" com.ubuntu.Upstart0_6.Job "member =" Start "error name =" (unset) "requested_reply =" 0 "destination = "com.ubuntu.Upstart" (uid = 0 pid = 1 comm = "/ sbin/init") ' –

13

È possibile utilizzare this file come modello, impostare i percorsi appropriati menzionati in questo file, renderlo eseguibile e symlink in /etc/init.d/my_unicorn_server. Ora è possibile avviare il server utilizzando:

sudo service my_unicorn_server start 

allora si può fare:

sudo update-rc.d my_unicorn_server defaults 

per l'avvio del server unicorno sul riavvio del sistema automaticamente.

+0

io..! provato copione già, non il suo lavoro per me. –

+0

questo è consigliato solo se non si dispone di upstart. io non ricordare se fa 10.04. hai mai risolto questo? – jrhorn424

+0

Opere fuori dalla scatola per me su 12.04 .. Ma ke sicuro mentre si genera il collegamento simbolico si assegna un percorso assoluto e non relativo .. – benchwarmer

2

Se si utilizza lo script unicorn_init
È possibile configurare un processo di cron per avviare il server unicorno al riavvio

crontab -e 

e aggiungere

@reboot /bin/bash -l -c 'service unicorn_<your service name> start >> /<path to log file>/cron.log 2>&1' 
Problemi correlati