GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So stellen Sie Node.js-Anwendungen mit pm2 und Nginx auf Ubuntu bereit

pm2 ist ein Prozessmanager für Node.js-Anwendungen, mit dem Sie Ihre Apps am Leben erhalten können, und verfügt über einen integrierten Load Balancer. Es ist einfach und leistungsstark, Sie können Ihre Knotenanwendung jederzeit ohne Ausfallzeit neu starten oder neu laden und es ermöglicht Ihnen, einen Cluster Ihrer Knotenanwendung 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 Knotenanwendung konfigurieren, die unter pm2 ausgeführt wird.

Voraussetzungen

  • Ubuntu 16.04 – 64 Bit
  • Root-Berechtigungen

Schritt 1 – Node.js LTS installieren

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

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

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

Installieren Sie die neueste Version von Nodejs LTS.

sudo apt-get install -y nodejs

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

node -v
npm -v

Schritt 2 – Express-Beispiel-App generieren

Ich werde ein einfaches Webanwendungsskelett verwenden, das mit einem Paket namens „express-generator“ generiert wurde ' für diese Beispielinstallation. Express-Generator kann mit dem npm-Befehl installiert werden.

Installieren Sie 'Express-Generator ' mit npm:

npm install express-generator -g

-g: Paket im System installieren

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

Erstellen Sie einen neuen Nutzer, 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 generieren Sie eine neue einfache Webanwendung mit dem Express-Befehl:

express hakase-app

Der Befehl erstellt ein neues Projektverzeichnis „hakase-app '.

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

cd hakase-app
npm install

Testen und starten Sie dann eine neue einfache Anwendung mit dem folgenden Befehl:

DEBUG=myapp:* npm start

Standardmäßig wird unsere Express-Anwendung auf Port 3000 ausgeführt . Besuchen Sie nun die Server-IP-Adresse:192.168.33.10:3000

Das einfache Webanwendungsskelett läuft auf Port 3000 unter dem Benutzer „yume“.

Schritt 3 - pm2 installieren

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

npm install pm2 -g

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

Gehen Sie zum App-Verzeichnis „hakase-app“. ':

su - hakase
cd ~/hakase-app/

Dort finden Sie eine Datei mit dem Namen 'package.json ', zeigen Sie seinen Inhalt mit dem cat-Befehl an.

cat package.json

Sie können den 'Start sehen ' Zeile enthält einen Befehl, der von Nodejs verwendet wird, um die Express-Anwendung zu starten. Diesen Befehl werden wir mit dem pm2-Prozessmanager verwenden.

Führen Sie die Express-Anwendung mit dem folgenden pm2-Befehl aus:

pm2 start ./bin/www

Jetzt können Sie die Ergebnisse unten sehen:

Unsere Express-Anwendung läuft unter pm2 mit dem Namen 'www ', ID '0 '. Mit der Show-Option 'show nodeid|name erhalten Sie weitere Details über die Anwendung, die unter pm2 läuft '.

pm2 show www

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

pm2 logs www

Sie können sehen, dass unser Prozess ausgeführt wird. Lassen Sie uns jetzt aktivieren, dass es beim Booten startet.

pm2 startup systemd

systemd :Ubuntu 16 verwendet systemd.

Sie erhalten eine Meldung zum Ausführen eines Befehls als root. Kehren Sie mit "exit" zu den Root-Rechten zurück und führen Sie dann diesen Befehl aus.

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

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

Schritt 4 – Nginx als Reverse-Proxy installieren und konfigurieren

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

sudo apt-get install -y nginx

Gehen Sie als Nächstes zu den 'sites-available '-Verzeichnis und erstellen Sie eine neue virtuelle Host-Konfigurationsdatei.

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

Konfiguration unten einfügen:

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.

Zur Konfiguration:

  • Die Node-App läuft mit dem Domainnamen „hakase-node.co '.
  • Der gesamte Datenverkehr von nginx wird an die Node-App weitergeleitet, die auf Port 3000 ausgeführt wird .

Aktivieren Sie die Konfiguration, indem Sie im Verzeichnis „sites-enabled“ einen Symlink 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 gestartet wird:

systemctl start nginx
systemctl enable nginx

Schritt 5 – Testen

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

http://hakase-app.co

Sie werden sehen, dass die Express-Anwendung unter dem Nginx-Webserver ausgeführt wird.

Starten Sie als Nächstes Ihren Server neu und vergewissern Sie sich, dass die Node-App beim Booten ausgeführt wird:

pm2 save
sudo reboot

Wenn Sie sich erneut bei Ihrem Server angemeldet haben, überprüfen Sie den Node-App-Prozess. Führen Sie den folgenden Befehl als „yume“ aus ' Benutzer.

su - yume
pm2 status www

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

  • Ubuntu
  • Node.js
  • Nginx

Ubuntu
  1. So installieren Sie Node.js und NPM unter Ubuntu 18.04 und 20.04

  2. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  3. So stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  4. So stellen Sie die Flask-Anwendung mit Nginx und Gunicorn unter Ubuntu 20.04 bereit

  5. So installieren Sie Node.js mit NVM und Nginx unter Ubuntu 22.04

So installieren Sie Drupal 8 mit Nginx, PHP-FPM und SSL unter Ubuntu 15.10

So installieren Sie Mailpile mit Nginx unter Ubuntu 15.10

So installieren Sie OpenCart 2 mit Nginx und SSL unter Ubuntu 15.10

So installieren Sie Django mit PostgreSQL und Nginx unter Ubuntu 16.04

So installieren Sie Wordpress mit Nginx, MariaDB und HHVM in Ubuntu 15.04

Wie stellt man die Laravel-Anwendung mit Nginx auf Ubuntu bereit?