Node.js ist eine JavaScript-Laufzeitumgebung, mit der Sie problemlos serverseitige Anwendungen erstellen. Mit dem Prozessmanager PM2 können Sie eine Node.js-App einrichten, die als Service unter Ubuntu 24.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 Service ü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

Bevor Sie mit den weiteren Schritten zur Installation von Node.js mit Apache und PM2 beginnen, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:

  • Ein Server unter Linux (Ubuntu 24.04).
  • Ein funktionierender Domainname, der auf den Server zeigt.
  • Ein funktions- und lauffähiger Apache Webserver
Cloud Server
Leistungsstarke Konfigurationen
  • 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

Um Node.js zu installieren, benötigen Sie das Kommandozeilen-Tool curl. Aktualisieren Sie die Pakete Ihres Servers und installieren Sie curl mit den folgenden Befehlen:

sudo apt update
sudo apt install curl -y
bash

Laden Sie das persönliche Paketarchiv (PPA) von Node.js herunter und fügen Sie das PPA zum Paket-Cache Ihres Servers hinzu. Das Archiv enthält eine aktuellere Node.js-Version als die Ubuntu-Repositories:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
bash

Installieren Sie anschließend Node.js:

sudo apt install -y nodejs
bash

Dadurch wird auch npm automatisch installiert.

Schließlich installieren Sie das build-essential-Paket für npm. build-essential installiert wichtige Entwicklerwerkzeuge wie Compiler und Make, die benötigt werden, damit Node.js npm-Module mit nativen Erweiterungen korrekt kompilieren und ausführen kann.

sudo apt install -y build-essential
bash

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
bash

Erstellen Sie die Datei hello.js in diesem Verzeichnis:

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

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

#!/usr/bin/env node
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, '0.0.0.0');
console.log('Server running at http://127.0.0.1:8080/');
javascript

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

sudo chmod 755 hello.js
bash

Firewall prüfen

Ubuntu 24.04 aktiviert unter Umständen die ufw-Firewall standardmäßig. Damit Sie Ihre Node.js-Anwendung direkt testen können, müssen Sie sicherstellen, dass der Port 8080 offen ist:

sudo ufw allow 8080/tcp
bash

Dieser Schritt ist insbesondere dann wichtig, wenn Sie Ihren Server direkt über die IP-Adresse oder einen Browser außerhalb des Servers aufrufen möchten. Wird Node.js ausschließlich über Apache und den Proxy bereitgestellt, ist dieser Schritt optional, da der Proxy den Verkehr weiterleitet.

PM2 installieren

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

sudo npm install -g pm2
bash

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

sudo pm2 start hello.js
bash

Als root fügen Sie PM2 zu den Startup-Skripten hinzu, sodass es beim Neustart des Servers automatisch neu gestartet wird, und speichern Sie die aktuell laufenden Prozesse:

sudo pm2 startup systemd
sudo pm2 save
bash

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
bash

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

sudo systemctl restart apache2
bash

Als Nächstes müssen Sie die Apache-Proxy-Konfigurationen anpassen. Folgende Anweisungen fügen Sie in den VirtualHost-Befehlsblock in der Hauptkonfigurationsdatei des Apache-Servers ein.

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
bash

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 systemctl restart apache2
bash

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 erstellten Testdatei sehen:

Hello World! Node.js is working correctly.
War dieser Artikel hilfreich?
Zum Hauptmenü