Node.js App für eine Website mit Apache auf Ubuntu 16.04 einrichten
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
- On-Demand skalierbar, Load Balancer und Traffic inklusive
- Hochverfügbare Server-Plattform
- ISO-zertifizierte Rechenzentren am Standort Deutschland
- Inkl. 100,- € Startguthaben im 1. Monat
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
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
- Automatisch: Backups und Recovery
- Intuitiv: Planung und Management
- Intelligent: KI-basierter Bedrohungsschutz
- Inkl. 300,- € Startguthaben im 1. Monat
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.
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.