Mein Variomedia

Hier können Sie sich im Kundenmenü einloggen.




Passwort vergessen?

Weitere Logins

Sie befinden sich hier: variomedia.de > Support > Häufige Fragen (FAQ) > Webanwendungen und Datenbanken > Python, Ruby, Node.js

Fragen und Antworten

Wie kann ich eine Node.js-Anwendung mit Phusion Passenger nutzen?

Um eine Node.js-Web-Anwendung auf einem Webservern zu nutzen, wird diese üblicherweise per HTTP Proxy mit dem Webserver verbunden. Eine weniger bekannte, aber in vielen Fällen einfachere Möglichkeit, ist die Nutzung von Phusion Passenger. Passenger hat den Vorteil, dass man sich nicht um die Prozessveraltung kümmern muss: Die Anwendung wird beim ersten Seitenaufruf automatisch gestartet, und Passenger erzeugt bei Bedarf zusätzliche Prozesse und kümmert sich um die gleichmäßige Lastverteilung.

Passenger aktivieren

Voraussetzung für die Nutzung von Passenger ist, dass Sie einen eigenen Webserver (Pro-Paket bzw. Dedicated Server) gebucht haben, und Passenger aktiviert wurde.

Zunächst sollte die Node.js-Anwendung mitsamt ihrer Abhängigkeiten in ein eigenes Verzeichnis auf dem Webserver installiert werden. In diesem Verzeichnis legen Sie dann zusätzlich eine .htaccess-Datei mit folgendem Inhalt an, um Passenger zu aktivieren:

PassengerEnabled on
Options -MultiViews

Die Anwendung sollte über ein ggf. noch zu erstellendes Startup-Script mit dem Namen app.js aufrufbar sein, das einen HTTP Server implementiert (abweichende Dateinamen könnten mittels der .htaccess-Direktive PassengerStartupFile angegeben werden). Im Anwendungsverzeichnis muss weiterhin noch ein Unterverzeichnis mit Namen public angelegt werden. In diesem Verzeichnis können von der Anwendung benötigte statische Dateien (z.B. Bilder oder CSS-Dateien) abgelegt werden. Dieses Public-Verzeichnis muss abschließend im Kundenmenü für die gewünschte Domain als Webspace-Pfad eingerichtet werden.

Normalerweise kommuniziert eine Node.js-Anwendung über einen eigenen TCP-Port, indem die Methode listen() auf ein http.Server-Objekt aufgerufen wird. Passenger fängt den ersten listen()-Aufruf einer Anwendung ab (der ausgewählte TCP-Port spielt keine Rolle), und leitet darüber alle HTTP-Anfragen, die vom Webserver ankommen, an die Node.js-Anwendung weiter.

Beispielanwendung

Sie können Passenger mittels folgender kleiner Beispielanwendung testen:

var http = require('http');
var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end("Hello, world!
");
});
server.listen(3000);

Wenn alles richtig konfiguriert wurde, sollte die Anwendung nun unter der für Passenger eingerichteten Domain mit "Hello, world!" antworten.

Eigene Node.js-Version

Auf den Webservern ist die jeweils aktuelle Node.js-Version aus dem LTS-Versionszweig (14.x) installiert. Falls Ihre Anwendung eine abweichende Node.js-Version benötigt, können Sie diese einfach herunterladen, und in ein Unterverzeichnis in Ihrem Webserver-Benutzerverzeichnis installieren (benötigt wird die Linux-Version für x86 / 64 Bit). Achten Sie dabei darauf, dass die Node.js-Binärdatei aus ausführbar markiert wurde (chmod 755) Damit diese Version von Passenger genutzt wird, müssen Sie sie über die .htaccess-Direktive PassengerNodejs vorgeben, z.B.:

PassengerNodejs /homepages/u12345/nodejs/bin/node

Passenger-Anwendung neu starten

Sie können eine Passenger-Anwendung neu starten, indem sie per SSH den Befehl passenger-config restart-app aufrufen.

Alternativ können Sie auch im Unterverzeichnis tmp der Anwendung eine Datei restart.txt erstellen (Shell-Befehl touch restart.txt). Passenger überprüft regelmäßig den Zeitstempel dieser Datei und startet die Anwendung neu, sobald der Zeitstempel sich aktualisiert hat.

Einschränkungen und Hinweise

Aktuell lassen sich Websockets noch nicht mittels Passenger und dem Apache HTTP Server nutzen.

Da Passenger sich um die Prozessveraltung und Lastverteiltung kümmert, sollte das Modul Cluster nicht genutzt werden.

Links


Node.js
Passenger