2014-02-27 5 views
7

Ich versuche, einen Dienst/ein Skript zu erstellen, um meinen Nodejs-Server automatisch zu starten und zu steuern, aber es scheint überhaupt nicht zu funktionieren.Upstart/Init-Skript funktioniert nicht

Zunächst einmal habe ich diese Quelle als Hauptbezugs http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

Nach rund Testen ich den Inhalt der eigentlichen Datei minimzed jede Art von Fehler zu vermeiden, in dieser resultierenden (das absolute Minimum, aber es tut Arbeit)

description "server" 
author  "blah" 

start on started mountall 
stop on shutdown 

respawn 
respawn limit 99 5 

script 
    export HOME="/var/www" 

    exec nodejs /var/www/server/server.js >> /var/log/node.log 2>&1 
end script 

die Datei in /etc/init/server.conf

wenn man versucht, das Skript zu starten (als root oder normalen Benutzer) gespeichert wird, erhalte ich:

[email protected]:/etc/init# start server 
start: Job failed to start 

Dann habe ich versucht, meine Syntax mit init-checkconf zu überprüfen, was zu:

$ init-checkconf /etc/init/server.conf 
File /etc/init/server.conf: syntax ok 

Ich habe versucht, verschiedene andere Dinge, wie initctl reload-configuration ohne Ergebnis.

Was kann ich tun? Wie kann ich das zur Arbeit bringen? Es kann nicht so schwer sein, oder?

+0

und Sie sind sicher, dass Sie eine Datei unter/usr/local/bin/nodejs haben? –

+0

@MattPileggi Verdammt, du hast Recht ... es fehlt. Hm, komisch, ich erinnere mich daran, nodejs so zu benutzen - lass mich etwas anderes ausprobieren. Ergebnis: keine Änderung - Ich habe den Befehl direkt in 'nodejs' geändert und sogar den' sudo -u' Teil entfernt, um ihn als root auszuführen - nichts geändert. Ich habe versucht, den Befehl direkt über die Konsole aufzurufen - das funktioniert. – user169099

+0

Sorry, ich bin mir nicht sicher, was ich sonst noch sehen soll. Ich habe alle meine Init-Skripte eingerichtet, um Forever zu verwenden - das sorgt dafür, dass es läuft. Hast du das überhaupt gesehen? –

Antwort

-3

Ab Ubuntu 15 wird Upstart nicht mehr verwendet, siehe systemd.

0

So sieht unser typisches Startskript aus. Wie Sie sehen können, führen wir unsere Knotenprozesse als Benutzer nodejs aus. Wir verwenden auch das Vorstart-Skript, um sicherzustellen, dass alle Protokolldateiverzeichnisse und .tmp-Verzeichnisse mit den richtigen Berechtigungen erstellt werden.

#!upstart 
description "grabagadget node.js server" 
author  "Jeffrey Van Alstine" 

start on started mysql 
stop on shutdown 
respawn 

script 
    export HOME="/home/nodejs" 
    exec start-stop-daemon --start --chuid nodejs --make-pidfile --pidfile /var/run/nodejs/grabagadget.pid --startas /usr/bin/node -- /var/nodejs/grabagadget/app.js --environment production >> /var/log/nodejs/grabagadget.log 2>&1 
end script 

pre-start script 
    mkdir -p /var/log/nodejs 
    chown nodejs:root /var/log/nodejs 
    mkdir -p /var/run/nodejs 
    mkdir -p /var/nodejs/grabagadget/.tmp 

    # Git likes to reset permissions on this file, but it really needs to be writable on server start 
    chown nodejs:root /var/nodejs/grabagadget/views/layout.ejs 
    chown -R nodejs:root /var/nodejs/grabagadget/.tmp 

    # Date format same as (new Date()).toISOString() for consistency 
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/nodejs/grabagadget.log 
end script 

pre-stop script 
    rm /var/run/nodejs/grabagadget.pid 
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/nodejs/grabgadget.log 
end script 
Verwandte Themen