Den MEAN Stack auf Ubuntu 22.04 installieren – Schritt für Schritt erklärt
Der MEAN-Stack ist ein freies und quelloffenes JavaScript-basiertes Framework, das für die Entwicklung von Webanwendungen verwendet wird. MEAN besteht aus den vier Schlüsseltechnologien MongoDB, Express, Angular und Node. Der Stack wurde entwickelt, um das Erstellen von Webanwendungen in JavaScript und den Umgang mit JSON unglaublich einfach zu machen. Du kannst MEAN-Anwendungen auf viele Arten nutzen. Es eignet sich jedoch besonders für Echtzeitanwendungen, vor allem für solche, die nativ in der Cloud laufen, und für einseitige (dynamische) Webanwendungen, die mit Angular.js erstellt wurden.
In diesem Beitrag zeigen wir dir, wie du den MEAN Stack auf einem Ubuntu 22.04 Server installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein gültiger Domainname, der auf die IP deines Servers zeigt.
- Ein Root-Passwort ist auf dem Server eingerichtet.
Erste Schritte
Bevor du beginnst, solltest du alle Systempakete auf die neueste Version aktualisieren. Du kannst alle Pakete mit dem folgenden Befehl aktualisieren:
apt update -y apt upgrade -y
Sobald alle Pakete aktualisiert sind, installierst du die erforderlichen Abhängigkeiten mit dem folgenden Befehl:
apt install python3 dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y
Sobald alle Abhängigkeiten installiert sind, kannst du mit dem nächsten Schritt fortfahren.
MongoDB installieren
Standardmäßig ist das MongoDB-Paket nicht im Standard-Repository von Ubuntu enthalten. Daher musst du das MongoDB-Repository zu deinem Server hinzufügen.
Lade zunächst den MongoDB-Schlüssel herunter und füge ihn mit dem folgenden Befehl hinzu:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
Als Nächstes fügst du das MongoDB-Repository mit dem folgenden Befehl zur APT hinzu:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Als Nächstes lädst du die libssl-Abhängigkeit herunter und installierst sie mit dem folgenden Befehl:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
Als Nächstes aktualisierst du das Repository und installierst das MongoDB-Paket mit dem folgenden Befehl:
apt-get update -y apt-get install mongodb-org -y
Nach der erfolgreichen Installation startest und aktivierst du den MongoDB-Dienst mit folgendem Befehl:
systemctl start mongod systemctl enable mongod
Als Nächstes überprüfst du den Status des MongoDB-Dienstes mit dem folgenden Befehl:
systemctl status mongod
Du erhältst die folgende Ausgabe:
? mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-10-30 07:30:10 UTC; 5s ago Docs: https://docs.mongodb.org/manual Main PID: 2995 (mongod) Memory: 60.5M CPU: 1.050s CGroup: /system.slice/mongod.service ??2995 /usr/bin/mongod --config /etc/mongod.conf Oct 30 07:30:10 ubuntu2204 systemd[1]: Started MongoDB Database Server.
Wenn du damit fertig bist, kannst du mit der Installation von Node.js fortfahren.
Node.js installieren
Standardmäßig ist das Node.js-Paket nicht im Standard-Repository von Ubuntu enthalten. Daher musst du es aus dem Node-Quellcode-Repository installieren.
Füge zunächst das Node Source Repository mit dem folgenden Befehl hinzu:
curl -sL https://deb.nodesource.com/setup_18.x | bash -
Als nächstes installierst du das Node.js-Paket mit dem folgenden Befehl:
apt-get install nodejs -y
Sobald das Node.js-Paket installiert ist, kannst du die Node.js-Version mit dem folgenden Befehl überprüfen:
node -v
Du erhältst die folgende Ausgabe:
v18.12.0
Als Nächstes installierst du die Pakete Yarn, Gulp und PM2 mit dem NPM:
npm install -g yarn npm install -g gulp npm install pm2 -g
Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
MEAN Stack herunterladen und installieren
Zuerst musst du die neueste Version von MEAN Stack aus dem Git-Repository herunterladen. Du kannst sie mit dem folgenden Befehl herunterladen:
git clone https://github.com/meanjs/mean
Sobald der Download abgeschlossen ist, navigierst du in das heruntergeladene Verzeichnis und installierst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:
cd mean yarn install
Sobald alle Abhängigkeiten installiert sind, kannst du mit dem nächsten Schritt fortfahren.
MEAN-Anwendung erstellen
In diesem Abschnitt werden wir eine einfache MEAN-Anwendung erstellen.
Dazu erstellst du eine MEAN-Anwendung im Mean-Verzeichnis mit dem folgenden Befehl:
nano server.js
Füge den folgenden Code ein:
const express = require('express'); const MongoClient = require('mongodb').MongoClient; const app = express(); app.use('/', (req, res) => { MongoClient.connect("mongodb://localhost:27017/test", function(err, db){ db.collection('Example', function(err, collection){ collection.insert({ pageHits: 'pageHits' }); db.collection('Example').count(function(err, count){ if(err) throw err; res.status(200).send('Page Hits: ' + Math.floor(count/2)); }); }); }); }); app.listen(3000); console.log('Server running at http://localhost:3000/'); module.exports = app;
Speichere und schließe die Datei und starte die Anwendung mit dem PM2:
pm2 start server.js
Du erhältst die folgende Ausgabe:
Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /root/mean/server.js in fork_mode (1 instance) [PM2] Done. ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? id ? name ? namespace ? version ? mode ? pid ? uptime ? ? ? status ? cpu ? mem ? user ? watching ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? 0 ? server ? default ? 0.6.0 ? fork ? 5644 ? 0s ? 0 ? online ? 0% ? 45.2mb ? root ? disabled ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Als Nächstes aktivierst du die MEAN-Anwendung, damit sie nach dem Neustart des Systems gestartet wird:
pm2 startup
Du erhältst die folgende Ausgabe:
Target path /etc/systemd/system/pm2-root.service Command list [ 'systemctl enable pm2-root' ] [PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service ? /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
Standardmäßig lauscht die MEAN-Anwendung auf Port 3000. Du kannst dies mit dem folgenden Befehl überprüfen:
ss -antpl | grep 3000
Du erhältst die folgende Ausgabe:
LISTEN 0 511 *:3000 *:* users:(("node /root/mean",pid=5644,fd=20))
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Nginx für die MEAN-Anwendung installieren und konfigurieren
Installiere zunächst das Nginx-Webserverpaket mit dem folgenden Befehl:
apt-get install nginx -y
Sobald Nginx installiert ist, erstellst du mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/mean.conf
Füge die folgenden Konfigurationen hinzu:
server { listen 80; server_name mean.example.com; access_log /var/log/nginx/mean-access.log; error_log /var/log/nginx/mean-error.log; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:3000/; } }
Speichere und schließe die Datei und überprüfe dann Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -t
Du solltest die folgende Ausgabe erhalten:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen.
systemctl restart nginx
Du kannst den Nginx-Status auch mit dem folgenden Befehl überprüfen:
systemctl status nginx
Du solltest die folgende Ausgabe erhalten:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-10-30 07:37:24 UTC; 4s ago Docs: man:nginx(8) Process: 6416 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 6417 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 6418 (nginx) Tasks: 3 (limit: 4579) Memory: 3.3M CPU: 49ms CGroup: /system.slice/nginx.service ??6418 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??6419 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??6420 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Oct 30 07:37:24 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 30 07:37:24 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Zugriff auf die MEAN-Anwendung
Nun ist Nginx installiert und als Reverse Proxy für die MEAN-Anwendung konfiguriert. Du kannst nun über die URL http://mean.example.com auf die MEAN-Anwendung zugreifen . Auf dem folgenden Bildschirm solltest du die MEAN-Weboberfläche sehen:
Fazit
Herzlichen Glückwunsch! Du hast den MEAN-Stack erfolgreich auf Ubuntu 22.04 installiert und konfiguriert. Du kannst jetzt mit der Entwicklung von Anwendungen mit dem MEAN-Stack beginnen und sie auf dem Produktionsserver hosten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.