Node.js App für eine Website mit Apache auf Ubuntu 16.04 einrichten

Node.js ist eine JavaScript-Laufzeitumgebung, mit der Sie problemlos serverseitige Anwendungen erstellen können. Mit dem Prozessmanager PM2 können Sie eine Node.js-App einrichten, die als Service unter Ubuntu 16.04 ausgeführt wird.

Die Ausführung von Node.js-Skripten als Service

Obwohl Skripte der Open-Source-JavaScript-Laufzeitumgebung Node.js von der Befehlszeile aus über den Bildschirm ausgeführt werden können, bietet die Ausführung der Skripte als Dienst über den Prozessmanager PM2 den Skripten ein robusteres Verhalten. Wenn die Skripte auf diese Weise als Dienst ausgeführt werden, werden sie automatisch neu gestartet, wenn der Server neu gestartet wird oder das Skript abstürzt.

PM2 ist ein Prozessmanager für Node.js mit einer Vielzahl von Funktionen, mit denen Sie Ihre Node.js-Skripte steuern und verwalten können. Besuchen Sie die offizielle PM2-Website für weitere Informationen zur Verwendung von PM2.

Anforderungen

  • Ein Cloud Server unter Linux (Ubuntu 16.04).
  • Ein funktionierender Domainname, der auf den Server zeigt.
  • Ein funktions- und lauffähiger Apache Webserver

Cloud Server von IONOS

Vertrauen Sie auf flexibel skalierbare und zuverlässige Cloud Server auf hochverfügbarer Infrastruktur mit Standort Deutschland inklusive persönlichem Berater und minutengenauer Abrechnung - Sie zahlen also wirklich nur Ihre benötigten Ressourcen!

VMware Virtualisierung
Rest API
Unlimited Traffic

Node.js installieren

Aktualisieren Sie die Pakete Ihres Servers und installieren Sie curl mit den folgenden Befehlen:

sudo apt-get update
sudo apt-get install curl

Laden Sie das persönliche Paketarchiv (PPA) von Node.js herunter. Dieses enthält eine aktuellere Node.js-Version als die Ubuntu-Repositories:

curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

Führen Sie den Befehl nodesource_setup.sh aus, um das PPA zum Paket-Cache Ihres Servers hinzuzufügen:

sudo bash nodesource_setup.sh
Hinweis

Dieses Skript aktualisiert den Server automatisch. Es ist nicht erforderlich, apt-get update ein zweites Mal auszuführen.

Installieren Sie anschließend Node.js:

sudo apt-get install nodejs

Dadurch wird auch npm automatisch installiert.

Schließlich installieren Sie das build-essential-Paket für npm:

sudo apt-get install build-essential

Erstellen einer exemplarischen Node.js-Anwendung

Für dieses Beispiel werden wir zunächst ein separates Verzeichnis im Dokumentenstamm Ihrer Website erstellen, um Node.js-Anwendungen unterzubringen:

sudo mkdir /var/www/html/nodejs

Erstellen Sie die Datei hello.js in diesem Verzeichnis:

sudo nano /var/www/html/nodejs/hello.js

Fügen Sie dann folgenden Beispielinhalt in die Datei ein:

#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function (request, response) {
   response.writeHead(200, {'Content-Type': 'text/plain'});
   response.end('Hello World! Node.js is working correctly.\n');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

Speichern und beenden Sie die Datei und machen Sie sie mit folgendem Befehl ausführbar:

sudo chmod 755 hello.js

PM2 installieren

Verwenden Sie npm, um PM2 mit dem folgenden Befehl zu installieren:

sudo npm install -g pm2

Starten Sie das eben erstellte Beispielskript hello.js mit dem Befehl:

sudo pm2 start hello.js

Als root fügen Sie PM2 zu den Startup-Skripten hinzu, so dass es beim Neustart des Servers automatisch neu gestartet wird:

sudo pm2 startup systemd

Cloud Backup von IONOS

Maximaler Schutz für Ihre Unternehmensdaten: Einfache Backups für Cloud-Infrastruktur, PCs und Smartphones, inklusive persönlichem Berater!

Umfassender Schutz
Einfache Wiederherstellung
Schnelle Datenspeicherung

Apache konfigurieren

Um vom Web aus auf das Node.js-Skript zuzugreifen, installieren Sie die Apache-Module proxy und proxy_http mit den Befehlen:

sudo a2enmod proxy
sudo a2enmod proxy_http

Nach Abschluss der Installation starten Sie Apache neu, damit die Änderungen wirksam werden:

sudo service apache2 restart

Als nächstes müssen Sie die Apache-Proxy-Konfigurationen anpassen. Folgende Anweisungen müssen in den VirtualHost-Befehlsblock in der Hauptkonfigurationsdatei des Apache der Website eingefügt werden.

Diese Apache-Konfigurationsdatei finden Sie normalerweise im Dateipfad /etc/apache2/sites-available/example.com.conf auf Ubuntu.

Hinweis

Der Speicherort und Dateiname der Apache-Konfigurationsdatei einer Website kann variieren.

Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z. B. mit dem Befehl:

sudo nano /etc/apache2/sites-available/example.com.conf

Scrollen Sie durch die Datei, bis Sie den VirtualHost-Befehlsblock finden, der so aussehen wird:

<VirtualHost *:80>
ServerName example.com
    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Fügen Sie Folgendes zum VirtualHost-Befehlsblock hinzu:

ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>

   <Location /nodejs>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   </Location>

Stellen Sie sicher, dass diese Zeilen außerhalb von Verzeichnisbefehlsblöcken platziert werden. Zum Beispiel:

<VirtualHost *:80>
ServerName example.com

   ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>

   <Location /nodejs>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   </Location>

    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Speichern und beenden Sie die Datei und starten Sie dann Apache neu, damit die Änderungen wirksam werden:

sudo services apache2 restart

Nach dem Neustart von Apache können Sie die Anwendung testen, indem Sie sie in einem Browser anzeigen. Sie sollten dort die folgende Nachricht aus der zuvor erstellen Testdatei sehen:

Hello World! Node.js is working correctly.

Halt! Wir haben noch etwas für Sie!

Eigene E-Mail-Adresse
schon ab 1,- €/Mon.
Professionell: 100% werbefrei
Firmen- oder Private E-Mail-Adresse inkl. Domain
E-Mail-Weiterleitung, Spam- und Virenschutz