Einrichten Node.js auf Webfaction
Was sind die notwendigen Schritte für die Einrichtung eines Node.js Anwendung auf Webfaction shared-hosting-account?
- Nur eine Anmerkung für jeden Leser. Die zweite Antwort hat eine neue (aktuellere) Lösung, die über einen one-Klick installer. So beginnen Sie nicht auf der top-Antwort werden die Schritte nur noch. Blättern Sie nach unten einige!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einführung
Das Ergebnis der folgenden Anweisungen ein Node.js Anwendung, die läuft ständig, erzeugt logfiles und startet sich selbst neu, selbst nach dem Neustart der server-Maschine. Die Anweisungen sind speziell für das shared-host-Konten auf Webfaction aber kann sein verwendet für Allgemeine Zwecke, auch.
Installieren Node.js
Obwohl Node.js download-Seite bietet Linux-binaries, es wäre robuster zu installieren Node.js von der Quelle. Download des aktuellsten source-codes, und extrahieren Sie Sie, um
~/src/
.Der nächste Schritt ist das kompilieren und installieren der code. Für diese Python verwendet wird. Weil die Standard -
python
version 2.4 ist (zumindest auf meinem Webfaction server web223) und weil die Node.js die installation erfordert eine der Versionen 2.6+, müssen Sie vorübergehend neuere version, die standardmäßig verwendet werden. Finden Sie unter den folgenden snippet (siehe auch dieser Artikel für details). Hinweis:--prefix=$HOME
die erforderlich ist, aufgrund Webfaction Umwelt Einschränkungen (Sie haben nur Zugriff auf Ihr home-Verzeichnis).Node.js installiert. Überprüfen Sie den Erfolg von
Dass auch die installierten Knoten-Paket-manager
npm
.Installieren Immer
Laufen zu halten Node.js Anwendung so lange wie möglich und Protokollierung der Ausgabe für die Wartung, die Sie benötigen,Für immer. Für die Bequemlichkeit, installieren Sie Global (für Sie) mit dem flag
-g
.Können Sie später aktualisieren, für immer von
Starten Sie die Anwendung
Ersten, erstellen Sie eine benutzerdefinierte Anwendung über Webfaction Control Panel (Custom app (port)). Nennen Sie es zum Beispiel foonode. Sie können auch eine Domäne erstellen und die Webseite für die app.
Sekunde, machen Sie eine Notiz über die socket-port-Nummer, gab es für die app von Webfaction. Lassen Sie uns das Beispiel 48888.
Dritte, kopieren Sie die Anwendung code, um das Verzeichnis der app, d.h.
~/webapps/foonode/
. Nach, dass der Verzeichnis-Inhalt könnte zum Beispiel die folgenden.Index.js wäre so etwas wie das snippet unten. Der entscheidende Punkt ist die Verwendung der angegebenen port-Nummer für die app.
Nun können Sie die app ausführen von
node index.js
. Allerdings gibt es ein problem: beim beenden der shell, auch die app beendet. Daher sollten Sie laufen Node.js als ein daemon. Das ist etwas, wo sich Immer eine Menge für Sie. Starten Sie Knoten mit forever:Nun die app wird weiterhin ausgeführt, nachdem Sie sich Abmelden und als eine sehr nette Sache zu haben, ist schnell neu gestartet, wenn es kommt zu Abstürzen. Dies ist eine Menge, aber noch nicht genug. Was, wenn der server neu startet? Wo ist der Ausgang aus der app gehen? Was ist, wenn das Skript stürzt ständig? Was ist, wenn Sie mehrere Skripts mit dem Namen
index.js
? Halten Sie zu Lesen.Verwenden Sie Absolute Pfade mit " für Immer
Immer identifiziert der Prozess, durch den Dateinamen des Skripts zugeführt
forever start <filename_of_script>
. Ein problem entsteht, wenn Sie mehrere Anwendungen mit dem gleichen Dateinamen für das Skript an.Zum Beispiel an, Sie haben zwei Anwendungen
/home/foouser/webapps/foonode/index.js
und/home/foouser/webapps/barnode/index.js
. Wenn Sie jetzt starten beide mitforever start index.js
in den Verzeichnissen der Anwendungen und führen Sie dannforever stop index.js
nur einmal, das Ergebnis ist, dass beide Anwendungen gestoppt werden. Dies geschieht, weil Sie beide hatten die gleiche Identitätindex.js
Die Lösung ist die Verwendung der absoluten filepaths bei der Angabe der script.
Und beenden Sie die Ausführung:
Dadurch wird sichergestellt, dass nur die beabsichtigte Anwendung wird beendet. Diese Gewohnheit, mit absoluten Pfaden hat auch positive Auswirkungen auf
forever list
. Sehen dieses Problem für details.Protokollierung
Speichern Sie die Anwendung output zu irgendwo, die folgenden Argumente angeben.
Scheint es bequem zu haben, ein Unterverzeichnis für die logs, z.B.
logs/
. Mit den Argumenten, absoluten Pfad und das Unterverzeichnis logs/der Befehl zu dem folgenden:Erkennen und durch einen Neustart des Spinning-Prozesses
Immer hat die Parameter
--minUptime
und--spinSleepTime
die sind nicht so gut dokumentiert derzeit. Die Bedeutung der Parameter ist zu kontrollieren, die situation, in der das Skript stürzt ab und fast sofort stürzt wieder nach dem Neustart. Wie immer versucht zu starten, das Skript so bald wie möglich nach dem Unfall, kann dies zu einer busy-loop die können Essen viel von Ressourcen des Servers.--minUptime
gibt die Anzahl der Millisekunden, die das script laufen ohne Abstürze werden sofort neu gestartet. Wenn die Betriebszeit der abgestürzten Skript ist weniger als minUptime, dann wird das Skript als Spinnen also problematisch. Wenn die Betriebszeit größer ist, dann wird das Skript als non-spinning.Wenn ein spinning-Skript stürzt ab, d.h. die Laufzeit des Skript ist weniger als
--minUptime
dann ewig wartet--spinSleepTime
Anzahl von Millisekunden, bevor ein Neustart des Skripts. Anderenfalls wird das Skript neu gestartet wird, so bald wie möglich. Dies verhindert, dass die Ressource-fressende Schleife. Sehen diese Antwort für die weitere Diskussion.Ich persönlich benutze 5000 für
--minUptime
um sicherzustellen, dass Knoten vollständig gestartet ist, bevor Sie deklarieren es nicht Spinnen. 2000 wäre ein guter für--spinSleepTime
zu vermeiden, wird die Schleife aber immer noch versuchen, um das Skript zu starten schnell, nachdem die problematische situation löst.Verwalten die Anwendung
Als die Befehle wachsen, merken und schreiben, Sie wird mehr und mehr mühsam. Daher ist es zweckmäßig, kopieren Sie Sie in ein Makefile. Das makefile wird auch nützlich später, wenn Sie müssen angeben, dass ein Befehl ausgeführt wird, nachdem der server neu gestartet.
Halten Sie die Anwendung
Ewig gilt nicht für den Fall wo der server wird neu gestartet. Für die, die Sie angeben müssen, ein cronjob mit
@reboot
Regel beginnen immer nach einem Neustart.Fügen Sie die folgende Zeile ein und speichern Sie.
Die Zeile sorgt dafür, dass foonode wird sofort gestartet, nachdem der server neu gestartet. Die Flagge
-C
gibt das Verzeichnis zum ausführen des makefile aus und-f
den tatsächlichen Speicherort der Datei makefile. Sehen diese Antwort für details über die Verwendung von@reboot
.Abschluss
Jetzt haben Sie einen Knoten Laufenden Prozess, die wirklich für immer oder zumindest so lange, wie es die Wartung Jungs, die Fütterung der server mit Strom. Viele Dinge getan, aber vielleicht noch mehr kommen wird. Dinge, die Sie gerne in der Zukunft tun, die nicht waren, die hier behandelt werden, gehören die folgenden.
--watch
imforever --help
)Siehe auch
Irgendwelche Ideen, Anregungen oder Korrekturen?
Gut, haben Sie wahrscheinlich bereits gefolgt alle Schritte in der anderen Antwort (wow!!! solche Details! toll), aber es ist jetzt viel einfacher: Sie jetzt haben eine one-click-installer für node.js.
cd /home/myusername/webapps/myapp ./bin/forever server.js /usr/bin/env: node: No such file or directory
Andere Möglichkeit ist die Installation nvm (Node Version Manager) und Typ:
Es ist nicht nur gültig für Webfaction.