2013-04-03 10 views
8

Ich verwende meine Rails-Anwendung mit Ruby Enterprise Edition mit Unicorn als App-Server. Ich führe diesen Befehl ausstarten Unicorn-App-Server, wenn der Ubuntu-Server startet

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

Ich muss diesen Befehl bald nach dem System neu starten oder starten. Ich benutze die App auf ubuntu 10.04 LTS EC2 Instanz. Ich habe einige Beispiele ausprobiert, die on this site sowie as this site erwähnt werden, aber es funktioniert nicht für mich. Any heads up

+0

Wie funktioniert es nicht? Siehst du einen Fehler? Ist der Prozess nicht wirklich läuft (mit ps aux überprüfen) – aussiegeek

+0

Ich habe dieses Skript hinzugefügt und reboot die Instanz, aber das Einhorn wurde auch gestartet Ich habe überprüft Syslog nicht gefunden und protokollieren und auch ps aux überprüft, der Prozess wurde noch nicht gestartet –

+0

I müssen Bundle Exec ausführen, es ist nicht typisch Unicorn_rails. Machen Sie einen Unterschied –

Antwort

2

In meinem Fall hinzufügen, ich wollte es einfach schnell also setze ich den Startbefehl in /etc/rc.local wie unten. Beachten Sie, dass ich RVM verwende.

# 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 

Stellen Sie sicher, Ihre Startbefehl über den Ausgang ist 0. Nach dem Neustart, ob es oder nicht direkt ausgeführt wird, indem Sie die URL Ihrer Anwendung schlagen oder ps -aux | grep unicorn Befehl verwenden.

Hinweis * Zuvor verwende ich Phusion Passenger, aber ich habe Probleme, sein Fehlerprotokoll zu sehen, also gehe ich zurück zum Einhorn. Ich habe auch versucht @ Warantesbr ohne Erfolg, was ich schätze, es scheitert, weil meine gesamte Umgebung Setup mit root-Zugriff.

16

Versuchen Sie es als Upstart. Um dies zu tun, müssen Sie eine myapp.conf-Datei in das Verzeichnis erstellen /etc/init/ mit dem Inhalt unter:

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 

Danach sollten Sie in der Lage sein Start/Stopp/Neustart Ihre App mit den Befehlen unter:

start myapp 
stop myapp 
restart myapp 

Verwenden ps -aux | grep myapp um zu überprüfen, ob Ihre App läuft.

+0

Lassen Sie mich das versuchen und sich bald bei Ihnen melden. Danke vielmals. –

+0

wenn Start MyApp starten, sagt es unbekannten Job. –

+1

Ich bekomme: 'initctl: Abgelehnte Nachricht senden, 1 übereinstimmende Regeln; type = "methodenruf", sender = ": 1.7 "(uid = 1000 pid = 4533 comm =" initctl staging-myapp starten ") interface =" com.ubuntu.Upstart0_6.Job "member =" Start "error name =" (nicht gesetzt) ​​"requested_reply =" 0 "destination = "com.ubuntu.Upstart" (uid = 0 pid = 1 comm = "/ sbin/init") ' –

13

Sie können this file als Vorlage, setzen entsprechende Pfade in dieser Datei erwähnt verwenden, es ausführbar und Symlink in /etc/init.d/my_unicorn_server machen. Jetzt können Sie den Server mit starten:

sudo service my_unicorn_server start 

Dann können Sie tun:

sudo update-rc.d my_unicorn_server defaults 

Um den Einhorn-Server auf Neustart des Systems automatisch beim Start.

+0

I habe das Script schon ausprobiert, es funktioniert nicht für mich –

+0

Dies ist nur zu empfehlen, wenn du keinen Emporkömmling hast Ich weiß nicht ob 10.04 funktioniert Hast du das jemals sortiert? – jrhorn424

+0

Funktioniert für mich am 12.04 .. Ma ke sicher beim Erzeugen von Symlink geben Sie absolute Pfad und nicht relativ .. – benchwarmer

2

Wenn Sie unicorn_init Skript
verwenden Sie können einen cron-Job konfigurieren beim Neustart des Einhorn-Server starten

crontab -e 

und

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