Node.js auf Managed Flex Server

Node.js ist eine Plattform, um serverseitige Applikationen basierend auf JavaScript zu betreiben. Auf unseren Managed-Flex-Servern bieten wir Node.js in mehreren Versionen an. In dieser Anleitung beschreiben wir, wie Sie eine Node.js-Applikation auf Ihrem Managed Flex Server in Betrieb nehmen können.

Anforderungen

Node.js-Applikationen können ab Managed Flex Server M in Betrieb genommen werden.

Erstellen einer Node.js-Applikation

Als Beispiel wollen wir eine «Hello World»-Web-Applikation schreiben. Um sie als Website im Internet verfügbar zu machen, werden wir sie als Backend eines nginx-Reverse-Proxy betreiben.

Wir empfehlen Ihnen, für Ihre eigenen Applikationen einen Ordner ~/app/ und darin jeweils für jede Ihrer Applikationen einen eigenen Unterordner zu erstellen. So haben Sie jederzeit eine saubere Ordnung und eine klare Übersicht. Für unsere Beispielapplikation erstellen wir daher den Ordner ~/app/hello-world.

Platzieren Sie nun den Code an diese Stelle. Für unsere Beispielapplikation braucht es ein File mit folgendem Inhalt, dem wir den Namen hello.js geben.

~/app/hello-world/hello.js
var http = require('http');
var server = http.createServer(function(req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
});
server.listen(8080, '127.0.0.1');
console.log('Server running on port 8080');

Wie Sie sehen, erstellt hello.js ein Listening Socket und wartet auf http-Anfragen. Die IP-Adresse 127.0.0.1 wählen wir aus, weil wir unsere Applikation nicht direkt im Internet exponieren wollen, sondern dazu nginx als Proxy verwenden. Die Proxy-Funktion des nginx erwartet, dass Ihre Applikation auf dieser IP-Adresse erreichbar ist. Bei der Auswahl des Ports sind Sie grundsätzlich frei. Jeder Port zwischen 1024 und 65535 ist möglich. Beachten Sie jedoch, dass nur ein Listening Socket pro Port erstellt werden kann und dass das Starten Ihrer Applikation fehlschlagen würde, falls der ausgewählte Port bereits besetzt wäre. Es ist daher eine gute Taktik, Ports zu vermeiden, die üblicherweise von anderen Applikationen verwendet werden.

Tipp: Seien Sie sich bewusst, dass die Bezeichnung «localhost» zwei Adressen referenziert: Die IPv4-Loopback-Adresse 127.0.0.1 sowie die IPv6-Loopback-Adresse ::1. Je nachdem, wie Sie oder Ihre Applikation (bzw. Bibliothek oder Sprache) die «listen»-Anweisung implementieren, hört also Ihre Applikation auf verschiedene Interfaces. Wenn Sie dies vermeiden wollen, geben Sie direkt die IP-Adresse an.

Unsere Beispiel-Applikation benötigt keine weiteren NPM-Module. Sollte Ihre Applikation solche benötigen, können Sie diese ganz normal mittels NPM installieren lassen. Loggen Sie sich dafür via SSH in Ihr Hosting ein, wechseln Sie in ihr Applikationsverzeichnis und installieren Sie die gewünschten Module mit npm install.

Sie können nun die Beispielapplikation mit node hello.js starten. Zum beenden drücken Sie Ctrl-C:

node hello.js
Server running on port 8080
^C

Integration

Da es sich bei unserem Beispiel um eine Web-Applikation handelt, die üblicherweise per http(s) zugänglich sein sollte, müssen Sie Ihren Webserver im Panel so konfigurieren, dass er die Anfragen als Proxy an Ihre neue Node-Applikation weiterleitet.

Webserver konfigurieren

Erstellen Sie in Ihrem Control Panel eine Website mit der Grundeinstellung «Nginx Proxy auf eigene Applikation»:

Nodejs DE

Server-Adresse und Port
Die Proxy-Funktion erwartet, dass Ihre Applikation auf die IPv4-Loopback-Adresse 127.0.0.1 hört. Sie müssen hier also nur den Port angeben: 8080.

Betrieb mit der Custom Service Control

Bisher haben Sie Ihre Applikation von Hand über die Shell gestartet. Während das zum Testen und Entwickeln zwar ein einfacher Weg sein kann, ist es für den produktiven Betrieb keine Option. Die Custom Service Control (CSC) kann sich um den Betrieb und das automatische Management Ihrer Applikation, zum Beispiel das Starten und Stoppen bei Wartungsarbeiten an Ihrem Server, kümmern.

Die Konfiguration der hello.js-App in der CSC ist denkbar einfach. Erstellen Sie dazu einen neuen Custom Service für die hello.js-Applikation:

hpservices supervisord add hello-world
successfully created dir for hello.js: /home/username/.services/supervisord/hello-world
successfully created dir for hello.js: /home/username/.services/supervisord/hello-world/log
successfully created dir for hello.js: /home/username/app/hello-world
supervisord service config file written: /home/username/.services/supervisord/hello-world/service.conf

Dabei wird in der Datei ~/.services/supervisord/hello-world/service.conf ein Konfigurationsgerüst für den neuen Service erstellt. Nur das command müssen wir für unsere Hello-World-Applikation anpassen, ansonsten können wir alle vorgeschlagenen Werte übernehmen:

~/.services/supervisord/hello-world/service.conf
[program:hello-world]
command=/usr/local/bin/node %(ENV_HOME)s/app/hello-world/hello.js  ; the program (can take args)
directory=%(ENV_HOME)s/app/hello-world/     ; directory to cwd to before exec (default no cwd)
autostart=true                ; start application at supervisord start (default: true)
stopwaitsecs=10               ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/hello-world/log/default.log
stdout_logfile_maxbytes=1MB   ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10     ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/hello-world/log/default.err
stderr_logfile_maxbytes=1MB   ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10     ; number of stderr logfile backups (0 means none, default 10)

Mit supervisorctl update können Sie die neue Konfiguration für unsere Hello-World-Applikation aktivieren:

supervisorctl update
hello-world: added process group

Achtung: Falls Sie einen Fehler erhalten, muss zuerst einmalig "hpservices supervisord start" ausgeführt werden.

Genaueres zur Bedienung und zu den Möglichkeiten, die Ihnen mit der CSC zur Verfügung stehen, können Sie in der Anleitung zur Custom Service Control entnehmen.

Weiterführende Informationen

 

Konnten Sie finden, was Sie suchen?

Unsere Support-Profis helfen Ihnen gerne persönlich weiter!

 

© 2001 - Hostpoint AG