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:

MEAN Stack Testseite

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.

Das könnte dich auch interessieren …