Auf unseren cPanel-Hosting-Paketen können Sie auch Node.js-Anwendungen ausführen. Die Anwendungen werden vom CloudLinux Node.js Selector verwaltet, der im cPanel unter dem Namen „Setup Node.js App“ verfügbar ist. Hier können Sie die Node.js-Version auswählen und die Anwendung starten, beenden sowie neu starten. Die Anwendung wird von Phusion Passenger ausgeführt, sodass Sie keinen separaten Port öffnen oder einen Prozessmanager (z. B. pm2) verwenden müssen.
Einen allgemeinen Überblick über das Hosting von Node.js-Anwendungen finden Sie in diesem Blogbeitrag.
Erstellung der Anwendung
- Melden Sie sich bei cPanel an und klicken Sie in der Gruppe „Software“ auf das Symbol „Setup Node.js App“. Die sich öffnende Node.js-Seite zeigt in der Liste „WEBANWENDUNGEN“ die bereits erstellten Anwendungen an.
- Klicken Sie auf die Schaltfläche „ANWENDUNG ERSTELLEN“.
- Bitte füllen Sie die Felder aus:
- Node.js-Version: Die Node.js-Version, die Sie verwenden möchten. Wählen Sie die Version aus, für die Sie Ihre Anwendung entwickelt haben.
- Anwendungsbereich:
Production-Modus (Scharfe Umgebung) oderDevelopment-Modus (Entwicklungsumgebung). Dies ist der Wert der UmgebungsvariablenNODE_ENV. - Anwendungs-Root: Das Verzeichnis der Anwendung auf dem Webhosting-Server, relativ zu Ihrem eigenen Verzeichnis (
/home/felhasznalo), beispielsweisenodeapp. Geben Sie nicht das Verzeichnis „public_html“ an, da der Quellcode sonst öffentlich heruntergeladen werden könnte. - Anwendungs-URL: Die Domain und der Pfad, unter dem die Anwendung erreichbar sein wird, beispielsweise
pelda.huoderpelda.hu/api. - Startdatei der Anwendung: Die Einstiegsdatei der Anwendung, beispielsweise „
app.js“. - Passenger-Protokolldatei: Wenn Sie eine Datei angeben, beispielsweise
/home/felhasznalo/logs/nodeapp.log, werden dort die Ausgaben und Fehlermeldungen der Anwendung gespeichert.
- Klicken Sie oben rechts auf die Schaltfläche „ERSTELLEN“ (so wird sie auf der Benutzeroberfläche angezeigt).
cPanel legt das Verzeichnis an und fügt, falls die Startdatei noch nicht vorhanden ist, eine einfache Beispielanwendung mit dem Namen „It works!“ hinzu. Unter der URL „Anwendung“ können Sie überprüfen, ob diese funktioniert.
Hochladen der Anwendung
Laden Sie die Anwendungsdateien mit dem Dateimanager oder per FTP in das Stammverzeichnis der Anwendung hoch. Eine einfache Express-Anwendung sieht wie folgt aus:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Helló a Node.js alkalmazásból!');
});
app.listen(process.env.PORT || 3000);
Sie müssen den Port nicht konfigurieren: Passenger übernimmt den Aufruf „listen()“ der Anwendung und leitet eingehende Anfragen an die Anwendung weiter.
Wichtig: Passenger kann nur CommonJS-Module (require) direkt laden. Falls Ihre Anwendung ES-Module (import) verwendet, erstellen Sie bitte eine Datei „app_wrapper.cjs“ mit dem folgenden Inhalt und geben Sie diese als Einstiegsdatei an:
(() => import('./app.js'))();
Pakete installieren
Sie können die Abhängigkeiten anhand der Datei „package.json“ im Anwendungsverzeichnis installieren:
- Laden Sie die Datei „
package.json“ in das Stammverzeichnis der Anwendung hoch. - Klicken Sie auf der Oberfläche „Setup Node.js App“ auf das Bearbeitungssymbol (Bleistift) neben der Anwendung.
- Im Abschnitt „Erkannte Konfigurationsdateien“ wird die Datei „
package.json“ angezeigt. Klicken Sie auf die Schaltfläche „NPM-Installer ausführen“.
Wichtig: Der Node.js Selector speichert die Pakete außerhalb des Anwendungsverzeichnisses in einer separaten virtuellen Umgebung und legt im Anwendungsverzeichnis lediglich einen Verweis (Symlink) mit dem Namen „node_modules“ an. Laden Sie daher kein eigenes „node_modules“-Verzeichnis hoch. Sollte sich ein solches Verzeichnis oder eine solche Datei im Stammverzeichnis der Anwendung befinden, bricht die Installation mit einer Fehlermeldung ab. Löschen Sie diese und installieren Sie die Pakete wie oben beschrieben.
Über die Schaltfläche „JS-Skript ausführen“ können Sie die im Abschnitt „scripts“ der Datei „package.json“ angegebenen Befehle (z. B. „build“) ausführen.
Umgebungsvariablen
Auf der Bearbeitungsseite der Anwendung können Sie über die Schaltfläche „Variable hinzufügen“ Umgebungsvariablen angeben, beispielsweise Datenbankzugangsdaten oder einen API-Schlüssel. Die Anwendung greift über das Objekt „process.env“ auf diese zu, sodass Sie Passwörter nicht in den Quellcode schreiben müssen. Starten Sie die Anwendung nach dem Speichern neu.
Neustart nach einer Änderung
Passenger führt die bereits geladene Anwendung weiter aus; daher muss die Anwendung nach einer Änderung der Dateien neu gestartet werden. Klicken Sie dazu oben auf der Bearbeitungsseite auf die Schaltfläche „NEUSTART“ oder in der Spalte „Aktionen“ der Anwendungsliste auf das Symbol für den Neustart. Mit der Schaltfläche „ANWENDUNG BEENDEN“ können Sie die Anwendung **beenden, mit der **Schaltfläche „LÖSCHEN“ (oder dem Papierkorbsymbol in der Liste) können Sie die Anwendung löschen.
Verwendung der Befehlszeile (SSH)
Bei Paketen mit SSH-Zugriff (cP Premium, cP Pro und cP Pro 100) können Sie auch über das Terminal auf die virtuelle Umgebung der Anwendung zugreifen. Der genaue Befehl wird auf der Oberfläche „Setup Node.js App“ oben auf der Bearbeitungsseite der Anwendung angezeigt und sieht wie folgt aus:
source /home/felhasznalo/nodevenv/nodeapp/20/bin/activate && cd /home/felhasznalo/nodeapp
Anschließend werden die Befehle „node“ und „npm“ mit der ausgewählten Version ausgeführt, sodass beispielsweise auch „npm install“ verwendet werden kann. Die SSH-Anmeldung wird in dem Artikel zur Einrichtung des SSH-Schlüssels im cPanel beschrieben.
Automatisierung über die Befehlszeile (mit cloudlinux-selector)
Bei Paketen mit SSH-Zugriff können die Schritte der Oberfläche „Setup Node.js App“ auch mit dem Befehl „cloudlinux-selector“ ausgeführt werden, sodass die Erstellung und Aktualisierung der Anwendung über ein Skript oder einen CI/CD-Prozess automatisiert werden kann. Der Befehl wird unter Ihrem eigenen Benutzerkonto ausgeführt; Root-Rechte sind dafür nicht erforderlich. Für den Node.js Selector gibt es keine dokumentierte Web-API, und auch die cPanel-UAPI verwaltet diese Anwendungen nicht; daher ist für die Automatisierung eine SSH-Verbindung erforderlich.
So richten Sie die Anwendung ein:
A="--json --interpreter nodejs"
R="--app-root nodeapp"
cloudlinux-selector create $A --domain pelda.hu $R --app-uri api --version 22 \
--app-mode production --startup-file app.js \
--env-vars '{"KULCS":"ertek"}' \
--passenger-log-file=/home/felhasznalo/logs/nodeapp.log
Der Schalter „--interpreter nodejs“ muss bei jedem Befehl angegeben werden, da die Standardeinstellung PHP ist. „--app-root“ ist der Pfad relativ zum eigenen Verzeichnis, „--domain“ und „--app-uri“ ergeben zusammen die Anwendungs-URL (hier „pelda.hu/api“), und der Wert von „--app-mode“ ist entweder „production“ oder „development“.
Laden Sie anschließend die Dateien in das Stammverzeichnis der Anwendung hoch, beispielsweise per SFTP oder mit dem Befehl „rsync“, installieren Sie dann die Pakete, führen Sie das erforderliche Skript aus und starten Sie die Anwendung neu:
cloudlinux-selector install-modules $A $R
cloudlinux-selector run-script $A $R --script-name build
cloudlinux-selector restart $A $R
Die übrigen Funktionen sind auf dieselbe Weise zugänglich:
cloudlinux-selector get $A # alkalmazások és verziók listája
cloudlinux-selector set $A $R --env-vars '{"KULCS":"uj-ertek"}' --new-version 24
cloudlinux-selector set $A $R --app-mode development
cloudlinux-selector stop $A $R
cloudlinux-selector start $A $R
cloudlinux-selector destroy $A $R
Beachten Sie in Ihrem Skript bitte Folgendes:
- Nach einem erfolgreichen Befehl lautet der Wert des Feldes „
result“ in der JSON-Ausgabe „success“. Bitte überprüfen Sie dies im Skript. - Die Funktion „
run-script“ gibt die Ausgabe des Skripts und dessen Rückgabecode in Base64-Kodierung im Feld „data“ zurück. Mit dem Befehl „base64 -d“ können Sie diese wieder lesbar machen. - Wenn Sie mit dem Befehl „
set“ die Node.js-Version oder eine Umgebungsvariable ändern, kann es vorkommen, dass die Anwendung nach dem Neustart noch einige Sekunden lang mit den bisherigen Werten antwortet. Überprüfen Sie nach einem Versionswechsel, mit welcher Version die Anwendung tatsächlich läuft (process.version). Die installierten Pakete mussten nach dem Versionswechsel nicht neu installiert werden. - Die Adresse der deaktivierten Anwendung gibt einen 403-Fehler zurück.
- Der Befehl „
destroy“ löscht die virtuelle Umgebung, jedoch nicht den Quellcode. Bitte löschen Sie das Stammverzeichnis der Anwendung, die Protokolldatei sowie den im Stammverzeichnis der Domain für den Pfad erstellten Ordner (z. B. „public_html/api“ mit einer leeren.htaccess-Datei) manuell, da die Adresse einen 403-Fehler zurückgibt, solange dieser Ordner vorhanden ist.
Fehlersuche
- Sollte die Anwendung nicht starten, überprüfen Sie bitte die im Feld „Passenger-Protokolldatei“ angegebene Protokolldatei.
- Während der Entwicklung zeigt der „
Development“-Modus detailliertere Fehlermeldungen an. Lassen Sie diesen Modus auf einer live geschalteten Website nicht aktiviert. - Die Anwendung läuft innerhalb der Ressourcenbeschränkungen Ihres Webhosting-Kontos. Sollte sie aufgrund von Speichermangel abstürzen, überprüfen Sie bitte die Ressourcennutzung.

