GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Node.js unter Debian 10 und konfigurieren Nginx als Frontend-Proxy-Server

Node.js ist eine kostenlose Open-Source-JavaScript-Plattform, die verwendet werden kann, um dynamische und reaktionsschnelle serverseitige Inhalte bereitzustellen. Es baut auf der V8-JavaScript-Engine von Chrome auf und kann JavaScript-Code außerhalb eines Webbrowsers ausführen. Es kann auf mehreren Betriebssystemen ausgeführt werden, darunter Linux, FreeBSD, Windows und macOS. Node.js funktioniert auch auf anderen Webservern wie Apache und Nginx.

In diesem Tutorial erfahren wir, wie Sie Node.js installieren und konfigurieren, um Backend-Anfragen zu verarbeiten, und Nginx konfigurieren, um Frontend-Anfragen unter Debian 10 zu verarbeiten.

Voraussetzungen

  • Ein Server mit Debian 10.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Zunächst wird empfohlen, Ihr System auf die neueste Version zu aktualisieren. Sie können dies mit dem folgenden Befehl tun:

apt-get update -y
apt-get upgrade -y

Sobald Ihr Server aktualisiert ist, starten Sie ihn neu, um die Änderungen zu übernehmen.

Installieren Sie Node.js

Standardmäßig ist die neueste Version von Node.js nicht im Standard-Repository von Debian 10 verfügbar. Sie müssen es also über das Skript installieren.

Installieren Sie zuerst curl mit dem folgenden Befehl:

apt-get install curl -y

Laden Sie als Nächstes das Node.js-Installationsskript herunter und installieren Sie es mit dem folgenden Befehl:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Sobald die Installation abgeschlossen ist, können Sie die Node.js mit dem folgenden Befehl installieren:

apt-get install nodejs -y

Nach erfolgreicher Installation können Sie die Version von Node.js mit folgendem Befehl überprüfen:

nodejs --version

Sie sollten die Node.js-Version in der folgenden Ausgabe sehen:

v12.16.1

Sie können die NPM-Version auch prüfen, indem Sie den folgenden Befehl ausführen:

npm --version

Sie sollten die NPM-Version in der folgenden Ausgabe sehen:

6.13.4

Node.js-Anwendung erstellen

Zuerst müssen Sie ein Verzeichnis für Ihre Anwendung erstellen. Sie können es erstellen, indem Sie den folgenden Befehl ausführen:

mkdir nodeapp

Wechseln Sie als Nächstes in das Verzeichnis nodeapp und installieren Sie Express mit dem folgenden Befehl:

cd nodeapp
npm install express

Erstellen Sie als Nächstes mit dem Nano-Editor eine Node.js-Beispielanwendung mit Express:

nano-app.js

Fügen Sie den folgenden Inhalt hinzu:

var express =require('express');var app =express();app.get('/', function(req, res){ res.send("Nginx als Frontend-Server für Node.js!" );});app.listen(8000, '127.0.0.1');

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Führen Sie als Nächstes Ihre Anwendung mit dem folgenden Befehl aus:

Knoten app.js

Öffnen Sie als Nächstes ein anderes Terminal und überprüfen Sie die Anwendung mit dem folgenden Befehl:

netstat -antup | grep 8000

Sie sollten sehen, dass Ihre Node.js-Anwendung auf Port 8000 lauscht:

tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 26193/Knoten

Sie können die Anwendung auch mit dem Curl-Befehl wie unten gezeigt überprüfen:

curl http://127.0.0.1:8000

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

Nginx als Frontend-Server für Node.js!

Installieren und konfigurieren Sie PM2

PM2 ist ein Prozessmanager zur Verwaltung der Node.js-Anwendung. Sie können die Node.js-Anwendung einfach starten, stoppen und aktivieren, damit sie beim Booten mit PM2 startet.

Installieren Sie zuerst die neueste Version von PM2 mit NPM wie unten gezeigt:

npm install pm2 -g

Wechseln Sie nach der Installation mit dem folgenden Befehl in das Verzeichnis nodeapp und Ihre Anwendung:

cd nodeapp
pm2 start app.js

Sobald die Anwendung gestartet wurde, sollten Sie die folgende Ausgabe erhalten:

 -------------__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\ \\\\_____ _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///// //\\\___ _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\ \__ _\/\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___ _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____ _\/\\\ _______________\/\\\____\///_____\/\\\_____/\\\//________ _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________ _\/\\\______________\/\\\____________\/\\\__/\\\\\\\\\\\\\\\_ _\///______________\///______________\// /__\///////////////__ Runtime Edition PM2 ist ein Produktionsprozess-Manager für Node.js-Anwendungen mit integriertem Load Balancer. Starten und daemonisieren Sie eine beliebige Anwendung:$ pm2 start app.js Load Balance 4 Instanzen von api.js:$ pm2 start api.js -i 4 Monitor in Produktion:$ pm2 monitor Lassen Sie pm2 beim Serverneustart automatisch starten:$ pm2 startup To gehe weiter checkout:http://pm2.io/ -------------[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2[PM2] PM2 Successfully daemonized[PM2] Starting / root/nodeapp/app.js in fork_mode (1 Instanz)[PM2] Fertig.???????????????????????????????? ????????????????????????????????????????????? ????????????????????????????????????????????? ?? Ich würde ? Name ? Namensraum ? Ausführung ? Modus ? PID? Betriebszeit ? ? ? Stand ? Zentralprozessor ​​ ? mem ? Benutzer ? Aufpassen ????????????????????????????????????????????????? ????????????????????????????????????????????? ????????????????????????????????? 0 ? App? Ursprünglich ? N / A ? Gabel ? 13202 ? 0s ? 0 ? online? 0% ? 27,2 MB ? Wurzel ? behindert ????????????????????????????????????????????????? ????????????????????????????????????????????? ????????????????????????????????????

In der obigen Ausgabe sehen Sie sehr nützliche Informationen wie Anwendungs-PID, Betriebszeit, Status, CPU- und Speichernutzung.

Führen Sie als Nächstes den folgenden Befehl aus, um ein Startskript für die Node.js-Anwendung zu erstellen und zu konfigurieren, damit Ihre Node.js-Anwendung beim Booten automatisch gestartet wird.

Start von pm2

Sie sollten die folgende Ausgabe erhalten:

[PM2] Init System gefunden:systemdPlatform systemdTemplate[Unit]Description=PM2 process managerDocumentation=https://pm2.keymetrics.io/After=network.target[Service]Type=forkingUser=rootLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityEnvironment =PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binEnvironment=PM2_HOME=/root/.pm2PIDFile=/root/.pm2/pm2.pidRestart=on-failureExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrectExecReload=/usr/lib /node_modules/pm2/bin/pm2 reload allExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill[Install]WantedBy=multi-user.targetTarget path/etc/systemd/system/pm2-root.serviceCommand list[ ' systemctl enable pm2-root' ][PM2] Init-Konfiguration in /etc/systemd/system/pm2-root.service schreiben[PM2] Skript beim Start booten lassen...[PM2] [-] Ausführen:systemctl enable pm2-root ... Symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-roo erstellt t.service.[PM2] [v] Befehl erfolgreich ausgeführt.+----------------------------------- ----+[PM2] Prozessliste beim Neustart einfrieren via:$ pm2 save[PM2] Init-Skript entfernen via:$ pm2 unstartup systemd

Als nächstes starten Sie den PM2-Dienst mit dem folgenden Befehl:

systemctl start pm2-root

Überprüfen Sie als Nächstes den Status des PM2-Dienstes mit dem folgenden Befehl:

Systemctl-Status pm2-root

Sie sollten die folgende Ausgabe erhalten:

? pm2-root.service - PM2-Prozessmanager Geladen:geladen (/etc/systemd/system/pm2-root.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Do 2020-03-26 06:04:28 UTC; Vor 2s Dokumente:https://pm2.keymetrics.io/ Prozess:13387 ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect (code=exited, status=0/SUCCESS) Haupt-PID:13191 (PM2 v4 .2.3:God) Tasks:0 (Limit:4915) CGroup:/system.slice/pm2-root.service ? 13191 PM2 v4.2.3:God Daemon (/root/.pm2)Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]:[PM2] Wiederherstellung von Prozessen in /root/.pm2/dump.pm2.bakMar 26 06:04:28 kolab.linuxbuz.com pm2[13387]:[PM2][ERROR] Fehler beim Lesen der Dump-Datei in /root/.pm2/dump.pm2.bakMar 26 06:04:28 kolab.linuxbuz.com pm2[13387]:[PM2][FEHLER] Keine Prozesse gespeichert; DUMP-Datei existiert nicht Mar 26 06:04:28 kolab.linuxbuz.com pm2 [13387]:? PM2+ aktiviert | Instanzname:node.myserver.tld-109e | Dash:https://app.pm2.io/#/r/7p66twgMar 26 06:04:28 kolab.linuxbuz.com pm2[13387]:????????????????? ????????????????????????????????????????????? ????????????????????????????? 26. März 06:04:28 kolab.linuxbuz.com pm2 [13387]:? Ich würde ? Name ? Namensraum ? Ausführung ? Modus ? PID? Betriebszeit ? ? ? Stand ? cpu 26. März 06:04:28 kolab.linuxbuz.com pm2 [13387]:???????????????????????????????? ????????????????????????????????????????????? ?????????????? 26. März 06:04:28 kolab.linuxbuz.com pm2[13387]:? 0 ? App? Ursprünglich ? N / A ? Gabel ? 13202 ? 8m ? 0 ? online? 0% 26. März 06:04:28 kolab.linuxbuz.com pm2[13387]:?????????????????????????????? ????????????????????????????????????????????? ??????????????? 26. März 06:04:28 kolab.linuxbuz.com systemd[1]:PM2-Prozessmanager gestartet.

Konfigurieren Sie Nginx als Reverse-Proxy für Node.js

Zu diesem Zeitpunkt wird Ihre Node.js-Anwendung ausgeführt und lauscht auf dem localhost. Als Nächstes müssen Sie Nginx als Front-End-Proxyserver für die Node.js-Anwendung konfigurieren, damit jeder Benutzer über das Internet auf Ihre Anwendung zugreifen kann.

Installieren Sie zuerst den Nginx-Webserver mit dem folgenden Befehl:

apt-get install nginx -y

Erstellen Sie nach der Installation eine virtuelle Nginx-Host-Konfigurationsdatei für die Node.js-Anwendung:

nano /etc/nginx/sites-enabled/myapp.conf

Fügen Sie den folgenden Inhalt hinzu:

server {listen 80; Servername node.myserver.tld; Standort / { Proxy_Pass http://127.0.0.1:8000; Proxy_http_Version 1.1; Proxy_set_header Upgrade $http_upgrade; proxy_set_header Verbindung 'upgrade'; Proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Nginx-Server neu, um die Änderungen zu übernehmen:

systemctl startet nginx neu

Sie können den Status des Nginx-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status nginx

Sie sollten die folgende Ausgabe sehen:

? nginx.service - Ein Hochleistungs-Webserver und ein Reverse-Proxy-Server Geladen:geladen (/lib/systemd/system/nginx.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Di 2020-03-25 :42:49 UTC; vor 5 min Dokumente:man:nginx(8) Prozess:26180 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process an; (code=beendet, status=0/SUCCESS) Prozess:26182 ExecStart=/usr/sbin/nginx -g daemon on; master_process an; (code=exited, status=0/SUCCESS) Main PID:26183 (nginx) Tasks:3 (limit:2359) Memory:5.5M CGroup:/system.slice/nginx.service ??26183 nginx:master process /usr/ sbin/nginx -g Daemon an; master_process an; ??26184 nginx:Worker-Prozess 1]:Gestartet Ein Hochleistungs-Webserver und ein Reverse-Proxy-Server.

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Greifen Sie auf Ihre Node.js-Anwendung zu

An diesem Punkt ist Nginx so konfiguriert, dass es Ihre Node.js-Anwendung bedient.

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL http://node.myserver.tld ein. Sie sollten Ihre Node.js-Anwendung auf dem folgenden Bildschirm sehen:

Schlussfolgerung

Im obigen Artikel haben Sie gelernt, wie Sie die Node.js-Anwendung unter Debian 10 einrichten. Sie haben auch gelernt, wie Sie die Node.js-Anwendung als Daemon ausführen und Nginx als Reverse-Proxy konfigurieren, um die Anwendung zu bedienen. Ich hoffe, Sie können Ihre Node.js-Anwendung jetzt problemlos in einer Produktionsumgebung hosten.


Debian
  1. So installieren Sie Node.js und npm unter Debian 11

  2. So installieren und konfigurieren Sie den VNC-Server unter Debian 10

  3. So installieren und konfigurieren Sie Docker unter Debian 11

  4. So installieren und konfigurieren Sie Mariadb 10 in Debian 11

  5. So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Debian 11

So installieren und konfigurieren Sie den OpenLiteSpeed-Webserver unter Debian 10

So installieren und konfigurieren Sie den NFS-Server unter Debian 11

So installieren und konfigurieren Sie den VNC-Server unter Debian 9 Stretch

So installieren und konfigurieren Sie den Apache-Webserver unter Debian 11

So installieren und konfigurieren Sie Git in Debian 11

So installieren und konfigurieren Sie LAMP unter Debian 11 (Bullseye)