Node.js App für eine Website mit Apache auf Ubuntu 24.04 einrichten
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
- 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 -ybashLaden 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 -bashInstallieren Sie anschließend Node.js:
sudo apt install -y nodejsbashDadurch 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-essentialbashErstellen 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/nodejsbashErstellen Sie die Datei hello.js in diesem Verzeichnis:
sudo nano /var/www/html/nodejs/hello.jsbashFü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/');javascriptSpeichern und beenden Sie die Datei und machen Sie sie mit folgendem Befehl ausführbar:
sudo chmod 755 hello.jsbashFirewall 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/tcpbashDieser 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 pm2bashStarten Sie das eben erstellte Beispielskript hello.js mit dem Befehl:
sudo pm2 start hello.jsbashAls 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 savebashApache 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_httpbashNach Abschluss der Installation starten Sie Apache neu, damit die Änderungen wirksam werden:
sudo systemctl restart apache2bashAls 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.
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.confbashScrollen 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 apache2bashNach 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.