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

So installieren und konfigurieren Sie MERN Stack mit Nginx unter Ubuntu 20.04

MERN-Stack ist ein Setup mit MongoDB, Express, React und Node.js. Dies ist eine der Varianten des MEAN-Stacks. MongoDB ist die Datenbank, Express mit Node.js wird als Backend verwendet, das mit der Datenbank kommuniziert, React ist die Clientseite oder das Frontend. Wir werden den Nginx-Reverse-Proxy für den Node.js-Server verwenden und Let’sEncrypt SSL einrichten.

In dieser Anleitung erfahren Sie, wie Sie den MERN-Stack auf Ihrem Ubuntu 20.04-Server einrichten.

Dieses Setup wurde auf Google Cloud getestet, daher sollte es auf anderen VPS, Cloud-Servern mit Ubuntu 20.04 oder Ubuntu 18.04 problemlos funktionieren.

Voraussetzungen

  • Ein Ubuntu-Server mit sudo-Zugriff.
  • Ein Domänenname, der auf Ihren Server verweist.

Inhaltsverzeichnis

  1. Installieren Sie MongoDB.
  2. MongoDB konfigurieren.
  3. Installieren Sie Node.js mit NVM.
  4. Installieren Sie React.js.
  5. Installieren Sie Express.js.
  6. Richten Sie PM2 so ein, dass Node.js im Backend ausgeführt wird.
  7. Installieren Sie Nginx und konfigurieren Sie es.
  8. Installieren Sie Let’sEncrypt SSL.

Ersteinrichtung des Servers

Beginnen Sie damit, die Serverpakete auf die neuesten verfügbaren zu aktualisieren.

sudo apt update
sudo apt dist-upgrade -y

Jetzt können Sie mit der Einrichtung des MERN-Stacks fortfahren.

Installieren Sie MongoDB

Hier installieren wir die MongoDB Community Edition mit LTS unter Verwendung des apt Paket verwaltet. Die aktuell neueste Version von MongoDB zum Zeitpunkt dieses Artikels ist 5.0.5.

Möglicherweise müssen Sie gnupg installieren zum Importieren des Schlüssels.

 sudo apt install gnupg

Importieren Sie den öffentlichen Schlüssel mit dem folgenden Befehl.

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

Fügen Sie das MongoDB-Repository zur Quellenliste hinzu.

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Aktualisieren Sie die Pakete und installieren Sie MongoDB.

sudo apt update
sudo apt install -y mongodb-org

Sobald die Installation abgeschlossen ist, aktivieren Sie MongoDB, um beim Systemstart zu starten.

sudo systemctl enable mongod

MongoDB-Server starten.

sudo service mongod start

Sie können den Status mit dem folgenden Befehl anzeigen.

sudo service mongod status

Output
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-01-16 22:08:26 UTC; 7h ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 1942 (mongod)
     Memory: 164.5M
     CGroup: /system.slice/mongod.service
             └─1942 /usr/bin/mongod --config /etc/mongod.conf

Jan 16 22:08:26 staging systemd[1]: Started MongoDB Database Server.

MongoDB konfigurieren

Jetzt können wir MongoDB sichern, MongoDB so konfigurieren, dass es Remote-Verbindungen akzeptiert, und auch eine neue Datenbank erstellen.

Sichere MongoDB

MongoDB-Konfigurationsdatei bearbeiten.

sudo nano /etc/mongod.conf

Scrollen Sie nach unten zum Sicherheitsabschnitt #security und kommentieren Sie es aus und aktivieren Sie die Autorisierung. Die endgültige Bearbeitung sollte wie folgt aussehen.

security:
  authorization: enabled

Remoteverbindungen aktivieren

Um Remoteverbindungen zu aktivieren, müssen Sie dieselbe Datei bearbeiten und Ihre interne oder private IP zu den Netzwerkschnittstellen hinzufügen. Ihre Konfiguration sollte wie unten aussehen.

net:
  port: 27017
  bindIp: 127.0.0.1,10.128.10.1

Ersetzen Sie 10.128.10.1 durch Ihre IP-Adresse.

Öffnen Sie gegebenenfalls die Firewall für den Port 27017.

Starten Sie MongoDB neu.

sudo systemctl restart mongod

Bestätigen Sie mit dem folgenden Befehl, ob MongoDB Remoteverbindungen zulässt.

sudo lsof -i | grep mongo

Sie sollten eine Ausgabe ähnlich der folgenden erhalten.

mongod 1942 mongodb 11u IPv4 31550 0t0 TCP instance_name.c.project_id.internal:27017 (LISTEN)
mongod 1942 mongodb 12u IPv4 31551 0t0 TCP localhost:27017 (LISTEN)

MongoDB-Admin-Benutzer erstellen

Stellen Sie mit mongosh eine Verbindung zur MongoDB-Shell her Befehl.

mongosh

Zur Admin-Datenbank wechseln.

use admin

Erstellen Sie einen Admin-Benutzer mit allen Rechten und einem Setup-Passwort.

db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}]})

Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.

Geben Sie exit ein um die Shell zu verlassen.

Jetzt können Sie die folgende Verbindungszeichenfolge verwenden, um eine Verbindung zu MongoDB herzustellen.

mongodb://admin:password@External-IP:27017/database

Installieren Sie Node.js mit NVM

Wir werden Node Version Manager (NVM) verwenden, um Node.js zu installieren. Damit können Sie ganz einfach zwischen verschiedenen Node.js-Versionen wechseln.

Laden Sie das NVM-Installationsskript mit wget herunter und führen Sie es aus .

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Laden Sie nun den nvm-Befehl in die aktuelle Shell-Sitzung.

source ~/.bashrc

Um alle verfügbaren Node.js-Versionen aufzulisten, können Sie den folgenden Befehl verwenden.

nvm ls-remote

Installieren Sie die benötigte Node.js-Version mit der folgenden Syntax.

nvm install v16.13.2

Nach der Installation können Sie die Node.js- und NPM-Versionen überprüfen.

node -v
v16.13.2

npm -v
6.14.13

Installieren Sie React.js

Frontend React.js mit npx installieren und erstellen Befehl.

Navigieren Sie zu dem Ordner, in dem Sie die React-App installieren möchten, und führen Sie den folgenden Befehl aus.

npx create-react-app frontend

Dies wird einige Zeit in Anspruch nehmen, um alle React-Pakete zu installieren. Sobald die Installation abgeschlossen ist, sehen Sie einen frontend Ordner, der mit allen grundlegenden React-Skripten erstellt wurde.

Navigieren Sie in das Frontend-Verzeichnis und lösen Sie den Build mit npm aus .

cd frontend
npm run build

Dadurch wird eine statische Ausgabe mit HTML-, CSS- und JS-Dateien für Ihr Frontend erstellt.

Sie können Ihren Nginx-Webserver auf dieses Build-Verzeichnis verweisen, um Ihr Frontend zu bedienen.

Installieren Sie Express.js

Installieren Sie die Express-Generierung mit npx Befehl.

npx express-generator

Sobald die Installation abgeschlossen ist, erstellen Sie Ihre Backend-Anwendung mit express Befehl.

cd ~/
express backend

Jetzt sollte Ihr Express erstellt werden. Sie können alle Knotenmodule installieren und den Express-Server mit PM2 im Hintergrund starten, wie im folgenden Abschnitt beschrieben.

cd backend
npm install

Werden Sie ein Full-Stack-Webentwickler mit React-Spezialisierung . Absolvieren Sie den Webentwicklungskurs

Richten Sie PM2 so ein, dass Node.js im Hintergrund ausgeführt wird

PM2 ist ein Knotenprozessmanager, der sehr nützlich ist, um Knotenserver im Hintergrund zu starten.

Navigieren Sie zu Ihrer Express-Anwendung und führen Sie den folgenden Befehl aus.

cd ~/backend
pm2 start npm --name "backend" -- start

Jetzt wird Ihr Express-Server im Hintergrund gestartet und lauscht auf Port 3000.

Konfigurieren Sie PM2 so, dass die Express-Anwendung beim Start gestartet wird.

pm2 startup

Sie erhalten einen langen Befehl zur Ausführung. Sobald der Befehl ausgeführt wurde, können Sie die Einstellungen speichern.

pm2 save

Als Nächstes können Sie den Nginx-Reverse-Proxy über diesen Port auf einer Subdomain oder einem Unterordner nach Ihren Wünschen konfigurieren.

Nginx installieren und konfigurieren

Nginx ist einer der besten Webserver für die Arbeit mit Node.js-basierten Anwendungen.

Nginx installieren.

sudo apt install nginx

Standardkonfigurationen entfernen

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

Neue Nginx-Konfiguration erstellen

sudo nano /etc/nginx/sites-available/application.conf

Fügen Sie Folgendes ein. In dieser Konfiguration verweisen wir den Hauptdomänenpfad auf das Build-Ausgabeverzeichnis der React.js-Anwendung und den /api Pfad für die Express.js-Anwendung.

server {
     listen [::]:80;
     listen 80;

     server_name domainname.com www.domainname.com;

     root /home/cloudbooklet/backend/build/;
     index index.html;

     location / {
         try_files $uri $uri/ =404;
     }

     location /api/ {
         proxy_pass http://127.0.0.1:3001;
         proxy_http_version 1.1;
         proxy_set_header Connection '';
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Speichern und beenden Sie die Datei.

Aktivieren Sie Ihre Konfiguration, indem Sie einen symbolischen Link erstellen.

sudo ln -s /etc/nginx/sites-available/application.conf /etc/nginx/sites-enabled/application.conf

Überprüfen Sie Ihre Nginx-Konfiguration und starten Sie Nginx neu

sudo nginx -t
sudo service nginx restart

Installieren Sie Let’sEncrypt SSL

Wir können Certbot verwenden, um ein kostenloses SSL-Zertifikat von Let’s Encrypt für Ihre Domain zu installieren.

sudo apt install python3-certbot-nginx

Führen Sie den folgenden Befehl aus, um das Zertifikat zu installieren und die Umleitung zu HTTPS automatisch zu konfigurieren.

sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com

Jetzt sollten Sie ein SSL-Zertifikat erhalten und es wird automatisch konfiguriert.

Automatische Verlängerung einrichten.

sudo certbot renew --dry-run

Jetzt können Sie Ihre Domain in Ihrem Browser nachschlagen, um die Ausgabe zu sehen.

Schlussfolgerung

Jetzt haben Sie gelernt, wie Sie den MERN-Stack unter Ubuntu 20.04 installieren und einrichten.

Vielen Dank für Ihre Zeit. Wenn Sie auf ein Problem oder Feedback stoßen, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. So installieren Sie Elgg mit Nginx unter Ubuntu 14.04

  2. So installieren Sie Joomla mit Nginx unter Ubuntu 18.04

  3. So installieren Sie MERN Stack für JS-basierte Anwendungen unter Ubuntu 20.04

  4. So richten Sie eine einfache nodejs-App mit nginx und pm2 auf einem Ubuntu-Server ein

  5. So installieren Sie VSFTP unter Ubuntu 20.04

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 20.04 LTS

So installieren Sie WordPress 5.x mit Nginx auf Ubuntu 18.04 / Ubuntu 16.04

So installieren Sie WordPress mit Nginx auf Ubuntu

So installieren und konfigurieren Sie Sendmail unter Ubuntu

So installieren Sie Apache Tomcat 10 auf Ubuntu 20.04 mit Nginx

So installieren Sie Apache Tomcat 10 auf Ubuntu 22.04 mit Nginx