Wie man Node.js Anwendungen mit pm2 und Nginx auf Ubuntu einsetzt.

pm2 ist ein Prozessmanager für Node.js-Anwendungen, er ermöglicht es Ihnen, Ihre Anwendungen am Leben zu erhalten und verfügt über einen integrierten Load Balancer. Pm2 ist einfach und leistungsstark, Sie können Ihre Node.js jederzeit ohne Ausfallzeiten neu starten oder laden und er ermöglicht Ihnen, einen Cluster Ihrer Node.js Anwendung zu erstellen.

In diesem Tutorial zeige ich Ihnen, wie Sie pm2 für die einfache „Express“-Anwendung installieren und konfigurieren und dann Nginx als Reverse-Proxy für die Node Anwendung konfigurieren, die unter pm2 läuft.

Voraussetzungen

  • Ubuntu 16.04 – 64bit
  • Root-Privilegien

Schritt 1 – Node.js LTS installieren

In diesem Tutorial werden wir unser Projekt von Grund auf neu beginnen. Zuerst müssen Nodejs auf dem Server installiert werden. Ich werde die Nodejs LTS Version 6.x verwenden, die aus dem Nodejs Source Repository installiert werden kann.

Installieren Sie das Paket ‚python-software-properties‚ aus dem Ubuntu-Repository und fügen Sie dann das ’nodesource‘ Nodejs-Repository hinzu.

sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Installiere die neueste Nodejs LTS-Version.

sudo apt-get install -y nodejs

Wenn die Installation erfolgreich war, überprüfen Sie die Knoten- und npm-Version.

node -v
npm -v

Überprüfen Sie die Version node.js.

Schritt 2 – Express Sample App generieren

Ich werde ein einfaches Skelett für Webanwendungen verwenden, das mit einem Paket namens ‚express-generator‚ für diese Beispielinstallation generiert wurde. Der Expressgenerator kann mit dem Befehl npm installiert werden.

Installieren Sie den‘express-generator‚ mit npm:

npm install express-generator -g

g: Installation des Pakets innerhalb des Systems

Wir werden die Anwendung als normaler Benutzer ausführen, nicht als Root- oder Superuser. Daher müssen wir zuerst einen neuen Benutzer anlegen.

Erstelle einen neuen Benutzer, ich nenne meinen ‚yume‘:

useradd -m -s /bin/bash yume
passwd yume

Melden Sie sich mit su beim neuen Benutzer an:

su - yume

Als nächstes erstellen Sie eine neue einfache Webanwendung mit dem Express-Befehl:

express hakase-app

Der Befehl erstellt ein neues Projektverzeichnis ‚hakase-app‚.

App-Skelett mit Expressgenerator generieren

Gehen Sie in das Projektverzeichnis und installieren Sie alle Abhängigkeiten, die von der App benötigt werden.

cd hakase-app
npm install

Dann testen und starten Sie eine neue einfache Anwendung mit dem folgenden Befehl:

DEBUG=myapp:* npm start

Standardmäßig läuft unsere Expressanwendung auf Port 3000. Besuchen Sie nun die IP-Adresse des Servers: 192.168.33.10:3000

express nodejs läuft auf Port 3000

Das einfache Skelett der Webanwendung läuft auf Port 3000 unter dem Benutzer ‚yume‘.

Schritt 3 – Installation von pm2

pm2 ist ein Node Paket und kann mit dem Befehl npm installiert werden. Installieren wir es also mit npm (mit root-Rechten, wenn Sie noch als Benutzer hakase angemeldet sind, dann führen Sie den Befehl „exit“ ro become root wieder aus):

npm install pm2 -g

Jetzt können wir pm2 für unsere Webanwendung verwenden.

Gehen Sie in das App-Verzeichnis ‚hakase-app‚:

su - hakase
cd ~/hakase-app/

Dort findest du eine Datei namens‘package.json‚, die ihren Inhalt mit dem Befehl cat anzeigt.

cat package.json

Express nodejs Dienste Konfiguration

Sie können sehen, dass die Zeile „start“ einen Befehl enthält, der von Nodejs verwendet wird, um die Expressanwendung zu starten. Diesen Befehl verwenden wir mit dem pm2 Prozessmanager.

Führen Sie die Expressanwendung mit dem Befehl pm2 unten aus:

pm2 start ./bin/www

Jetzt können Sie sehen, die Ergebnisse sind unten:

Ausführen von nodejs app mit pm2

Unsere Expressanwendung läuft unter pm2 mit dem Namen‘www‚, id‘0‚. Weitere Details zur Anwendung unter pm2 erhalten Sie mit der Show-Option‘show nodeid|name‚.

pm2 show www

pm2 Dienststatus

Wenn Sie das Protokoll unserer Anwendung sehen möchten, können Sie die Option Logs verwenden. Es ist nur ein Zugriffs- und Fehlerprotokoll und Sie können den HTTP-Status der Anwendung sehen.

pm2 logs www

pm2 Dienstleistungen Protokolle

Sie sehen, dass unser Prozess läuft. Nun, lassen Sie uns aktivieren, dass es beim Booten startet.

pm2 startup systemd

systembedingt: Ubuntu 16 verwendet systemd.

Sie erhalten eine Meldung, dass ein Befehl als root ausgeführt werden soll. Zurück zu den Root-Rechten mit „exit“ und dann diesen Befehl ausführen.

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume

Es wird die Systemkonfigurationsdatei für den Anwendungsstart generiert. Wenn Sie Ihren Server neu starten, wird die Anwendung beim Start automatisch ausgeführt.

pm2 Hinzufügen eines Dienstes zum Startzeitpunkt des Bootvorgangs

Schritt 4 – Nginx als Reverse-Proxy installieren und konfigurieren

In diesem Tutorial werden wir Nginx als Reverse-Proxy für die Knotenanwendung verwenden. Nginx ist im Ubuntu-Repository verfügbar, installieren Sie es mit dem Befehl apt:

sudo apt-get install -y nginx

Gehen Sie anschließend in das Verzeichnis „sites-available“ und erstellen Sie eine neue Konfigurationsdatei für den virtuellen Host.

cd /etc/nginx/sites-available/
vim hakase-app

Füge die Konfiguration unten ein:

upstream hakase-app {
    # Nodejs app upstream
    server 127.0.0.1:3000;
    keepalive 64;
}

# Server on port 80
server {
listen 80;
server_name hakase-node.co;
root /home/yume/hakase-app;

location / {
# Proxy_pass configuration
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection „upgrade“;
proxy_max_temp_file_size 0;
proxy_pass http://hakase-app/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}

Speichern Sie die Datei und beenden Sie vim.

In der Konfiguration:

  • Die Knoten-App läuft unter dem Domainnamen‘hakase-node.co‚.
  • Der gesamte Datenverkehr von nginx wird an die Node App weitergeleitet, die auf Port 3000 läuft.

Aktivieren Sie die Konfiguration, indem Sie einen Symlink im Verzeichnis sites-enabled erstellen.

ln -s /etc/nginx/sites-available/hakase-app /etc/nginx/sites-enabled/

Testen Sie die Nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt.

nginx -t

Starten Sie Nginx und aktivieren Sie es so, dass es beim Booten startet:

systemctl start nginx
systemctl enable nginx

Schritt 5 – Prüfung

Öffnen Sie Ihren Webbrowser und besuchen Sie den Domainnamen (meiner ist es):

http://hakase-app.co

Sie werden sehen, dass die Express-Anwendung unter dem nginx-Webserver läuft.

Nodejs ap läuft mit pm2 und nginx

Als nächstes starten Sie Ihren Server neu und stellen Sie sicher, dass die Node App zur Bootzeit läuft:

pm2 save
sudo reboot

Wenn Sie sich erneut an Ihrem Server angemeldet haben, überprüfen Sie den Prozess der Node App. Führen Sie den folgenden Befehl als ‚yume‚ Benutzer aus.

su - yume
pm2 status www

nodejs läuft zur Booti-Zeit mit pm2

Die Node Application läuft unter pm2 und Nginx als Reverse Proxy.

Links

Das könnte dich auch interessieren …