Orion-LD Version 20200318 - Installationsanleitung

Die Seite wird erstellt Hertha Schwarz
 
WEITER LESEN
CEF-Kontextbroker
T06 - Pflege der technischen Dokumentation
      und der technischen Handbücher
               Version 20200318

                 Orion-LD
          Installationsanleitung

                                   18.03.2020
Inhaltsverzeichnis
1 Übersicht                                                                    4
2 Einleitung                                                                   5
3 Unterstützte Linux-Distributionen                                            5
4 Installationsmethoden                                                        5

  4.1 Docker-Images                                                            5
  4.2 Aus Quellcode erstellen                                                  6
    4.2.1 Funktionstest                                                        6
5 Installationsanleitung für Ubuntu 18.04.3                                   10

  5.1 Installation von abhängigen Paketen                                     11
  5.2 Herunterladen und Erstellen von abhängigen Bibliotheken aus Quellcode   11
    5.2.1 MongoDB-Treiber                                                     12
    5.2.2 libmicrohttpd                                                       12
    5.2.3 rapidjson                                                           12
    5.2.4 kbase                                                               13
    5.2.5 klog                                                                13
    5.2.6 kalloc                                                              13
    5.2.7 kjson                                                               13
    5.2.8 khash                                                               14
  5.3 Quellcode von Orion-LD                                                  14
  5.4 Installation des MongoDB-Servers                                        15
Dokumenteigenschaften

Eigenschaft           Wert

Veröffentlichung:     18.03.2020

Status:               Endfassung

Version:              20200318

Autoren:              Ken Gunnar Zangelin

Geprüft von:          Stefano De Panfilis

Genehmigt von:

Versionsverlauf

Version        Beschreibung                       Datum
20200318       Dokument zur Prüfung eingereicht   18.03.2020
1 Übersicht

Bei dem vorliegenden Dokument handelt es sich um das Orion-LD-Installationshandbuch, das auf der
derzeitigen Software-Version und Dokumentation beruht. D.h. zu diesem Zeitpunkt beziehen sich die
beschriebenen Vorgehensweisen auf die aktuelle Orion-LD Alpha Release 1.
Aus diesem Grund bitten wir den Leser, auf dem offiziellen Orion-LD GitHub Repository nach
aktuellen Updates zu suchen: https://github.com/FIWARE/context.Orion-LD
2 Einleitung
Orion-LD ist ein NGSI-LD Publish/Subscribe Broker (oder: Kontextbroker).
Um Orion-LD, Alpha Release 1, zu installieren, können Sie
   ● ein vorgefertigtes Docker-Image verwenden, oder
   ● den Broker aus dem Quellcode kompilieren.
Derzeit läuft Orion-LD nur unter Linux. Es gab bisher keine Bestrebungen, Orion-LD auch
auf anderen Betriebssystemen zu betreiben. MacOS wäre die nächste naheliegende
Alternative und falls sich jemand damit freiwillig beschäftigen möchte, wäre dies ein sehr
willkommener Beitrag.

3 Unterstützte Linux-Distributionen
Die Referenzdistribution für den Orion-LD NGSI-LD Kontextbroker ist Ubuntu 18.04.
Obwohl Orion-LD auch unter CentOS, Debian oder anderen Versionen von Ubuntu
einwandfrei funktioniert, ist die einzige offiziell unterstützte Distribution Ubuntu 18.04.

4 Installationsmethoden

4.1 Docker-Images
Docker-Images für Ubuntu und CentOS werden für jeden Pull-Request erstellt, der in den
develop Branch gemerged wird. Um das Orion-LD Docker-Image zu erstellen und
auszuführen, müssen Docker und Docker Compose installiert sein. Ein Beispiel für die
Datei docker-compose.yml finden Sie weiter unten:
version: "3.5"
services:
  # Orion ist der Kontextbroker
  orion:
    image: fiware/orion-ld
    hostname: orion
    container_name: fiware-orion
    depends_on:
      - mongo-db
     expose:
      - "1026"
    ports:
      - "1026:1026"
    command: -dbhost mongo-db -logLevel DEBUG
    healthcheck:
      test: curl --fail -s http://orion:1026/version || exit 1

  # Datenbanken
  mongo-db:
    image: mongo:3.6
    hostname: mongo-db
    container_name: db-mongo
expose:
      - "27017"
    ports:
      - "27017:27017"
    command: --nojournal
    volumes:
      - mongo-db:/data

volumes:
  mongo-db: ~

Wir stellen auch CentOS- und Debian-basierte Dockerfiles zur Verfügung, um die
Erstellung Ihrer eigenen Images zu erleichtern. Sie finden sie an dieser Stelle zusammen
mit der Dokumentation, die beschreibt, wie jedes von ihnen zu verwenden ist.
Ein öffentliches Image ist auch auf Docker Hub verfügbar.

4.2 Aus Quellcode erstellen
Als erstes muss das Betriebssystem installiert werden. Wie bereits erwähnt, läuft Orion-
LD auf einer Vielzahl von Linux-Plattformen. Ubuntu 18.04 LTS ist die offiziell
unterstützte Distribution, aber Orion-LD funktioniert potenziell auf jeder modernen
Linux-Distribution.
Um Orion-LD aus dem Quellcode zu installieren, folgen Sie bitte den Anweisungen für
Ihre gewählte Distribution.
Installationsanleitungen für verschiedene Distributionen:
   ● Ubuntu 18.04.3 LTS - die offizielle Distribution
   ● CentOS 7
   ● Debian 9

4.2.1 Funktionstest
Nun, da Sie Orion-LD kompiliert und installiert haben und der MongoDB-Server läuft,
sollte der Broker funktionieren. Um dies sicherzustellen, starten wir ihn und führen ein
paar einfache Befehle aus.
Stellen Sie zunächst sicher, dass der MongoDB-Server auch läuft:
ps aux | grep mongodb

Beispielausgabe, wenn MongoDB läuft:
mongodb   27265 7.5 3.9 1115980 79720 ?                 Ssl   11:34    0:00
/usr/bin/mongod --config /etc/mongod.conf

Falls er nicht läuft (kein /usr/bin/mongod Prozess in der vorherigen Ausgabe
gefunden), starten Sie ihn bitte:
sudo service mongod start

In der MongoDB-Dokumentation können Sie bei Bedarf nachschauen, wie Sie ihn beim
Booten automatisch starten lassen können.
Starten wir den Broker in einem separaten Fenster im Vordergrund:
orionld -fg

In einem weiteren Fenster senden wir curl-Befehle an den Broker. Zuerst müssen wir
natürlich curl installieren :):
curl localhost:1026/ngsi-ld/ex/v1/version

Sie sollten einen ähnlichen Response wie diesen sehen:
kz@ubuntu:~$ curl localhost:1026/ngsi-ld/ex/v1/version
{
  "@context": "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-
context.jsonld",
  "branch": "develop",
  "kbase version": "0.2",
  "kalloc version": "0.2",
  "kjson version": "0.2",
  "boost version": "1_65_1",
  "microhttpd version": "0.9.48-0",
  "openssl version": "OpenSSL 1.0.2n 7 Dec 2017",
  "mongo version": "1.1.2",
  "rapidjson version": "1.0.2",
  "libcurl version": "7.58.0",
  "libuuid version": "UNKNOWN",
  "Next File Descriptor": 18
}

Sie werden vermutlich auch die Ausgabe von Traces im Terminal des Brokers
bemerken.
Nun lassen Sie uns eine Entität erstellen:
curl localhost:1026/ngsi-ld/v1/entities -d '{ "id": "urn:entities:E1",
"type": "T", "P1": { "type": "Property", "value": 12 }}' -H 'Content-Type:
application/json' --dump-header /tmp/httpHeaders.out

curl gibt nur die Payload-Daten des Response auf dem Bildschirm aus und da eine
Entitätserstellung keine Payload-Daten hat, werden Sie nichts sehen (es sei denn, es liegt
ein Fehler vor). Sie können überprüfen, ob der curl-Befehl funktioniert hat, indem Sie den
folgenden Befehl eingeben (direkt nach dem curl-Befehl):
echo $?

$? ist eine Umgebungsvariable, die den Rückgabecode des zuletzt ausgeführten Shell-
Befehls speichert. Null bedeutet OK, alles andere bedeutet einen Fehler.
Es gibt keine Payload-Daten im Response, aber es ist möglich die HTTP-Header des
Response zu sehen, da die Option --dump-header /tmp/httpHeaders.out benutzt
wurde. Um die resultierenden HTTP-Header zu sehen, verwenden Sie dann z.B. den
folgenden Befehl:
cat /tmp/httpHeaders.out
Erwartete HTTP-Header:
HTTP/1.1 201 Created
Connection: Keep-Alive
Content-Length: 0
Link: ;
rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Location: /ngsi-ld/v1/entities/urn:entities:E2
Date: Tue, 19 Nov 2019 18:56:01 GMT

Fügen Sie also --dump-header /tmp/httpHeaders.out dem curl-Request hinzu, um die
HTTP-Header mitzuschneiden und verwenden Sie den Befehl cat, um den Inhalt der
Datei anzusehen (/tmp/httpHeaders.out).
Wenn alles geklappt hat, wurde mit dem vorherigen curl-Kommando eine Entität
erstellt. Sie kann in MongoDB z.B. mit dem folgenden Befehl ausgegeben werden:
echo 'db.entities.findOne()' | mongo mongodb://localhost:27017/orion

Erwarteter Response:
kz@ubuntu:~$ echo 'db.entities.findOne()' | mongo
mongodb://localhost:27017/orion
MongoDB shell version v4.0.13
connecting to: mongodb://localhost:27017/orion?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("9ece1fb7-df0d-41a3-8316-
042425351dd8") }
MongoDB server version: 4.0.13
{
    "_id" : {
        "id" : "urn:entities:E1",
        "type" : "https://uri.etsi.org/ngsi-ld/default-context/T",
        "servicePath" : "/"
    },
    "attrNames" : [
        "https://uri.etsi.org/ngsi-ld/default-context/P1"
    ],
    "attrs" : {
        "https://uri=etsi=org/ngsi-ld/default-context/P1" : {
            "type" : "Property",
            "creDate" : 1574189638,
            "modDate" : 1574189638,
            "value" : 12,
            "mdNames" : [ ]
        }
    },
    "creDate" : 1574189638,
    "modDate" : 1574189638,
    "lastCorrelator" : ""
}
bye

Wenn Sie eine ähnliche Rückgabe wie die obige sehen: Herzlichen Glückwunsch, es
funktioniert alles!!!
Wenn Sie sich die Daten in MongoDB genauer ansehen, werden Sie feststellen, dass der
Entitätstyp und der Name des Attributs nicht mehr exakt dem entsprechen, was Sie
eigentlich "angefragt" haben. Tatsächlich tun sie das aber. Dies ist ein gewolltes Verhalten
und ein wesentlicher Bestandteil von NGSI-LD. Kurz gesagt, der Kontext wurde
verwendet, um den Entitätstyp und den Attributnamen zu erweitern. Wie der Kontext
funktioniert, wird in Dokumenten und Tutorials zu NGSI-LD ausführlich erklärt. Wir
empfehlen mit dem Getting Started with Orion-LD Guide zu beginnen.
Abschließend fragen wir die erstellte Entität direkt beim Orion-LD ab, anstatt sie nur in
der Datenbank anzuschauen:
curl 'localhost:1026/ngsi-ld/v1/entities?type=T&prettyPrint=yes&space=2'

Die Ausgabe sollte genau so aussehen:
[
    {
        "id": "urn:entities:E1",
        "type": "T",
        "P1": {
          "type": "Property",
          "value": 12
        }
    }
]

Wie man erkennen kann, sind der Entitätstyp (T) und der Attributname (P1) keine langen
Namen mehr (diese befinden sich in der Datenbank). Der Grund dafür ist, dass der
Kontext zur Verdichtung der Werte benutzt wurde.
Wie jetzt? Bei diesen beiden Operationen wurde doch kein Kontext verwendet?
So ganz stimmt das nicht. Es wurde der Core-Kontext verwendet, aber es wurde kein
Benutzerkontext angegeben. Der Core-Kontext ist der Standardkontext und wenn kein
Kontext angegeben ist, wird dieser Core-Kontext standardmäßig verwendet.
Tatsächlich wird Orion-LD, selbst wenn der Benutzer einen Kontext angibt, immer noch
den Kernkontext verwenden und jedes Element, das im Kernkontext vorhanden ist, wird
das entsprechende Element (gleicher Key/Name) des vom Benutzer bereitgestellten
Kontextes überschreiben.
Der Kontext, der bei der Erstellung des Response verwendet wurde, wird im HTTP-Link-
Header zurückgegeben. Wenn Sie sich von curl wie bei der nachfolgenden GET-Operation
die HTTP-Headern ausgeben lassen (d.h. unter Verwendung der Option --dump-header
/tmp/httpHeaders.out):
curl 'localhost:1026/ngsi-ld/v1/entities?type=T&prettyPrint=yes&space=2' -
-dump-header /tmp/httpHeaders.out

dann können Sie sich die HTTP-Header anzeigen lassen mit
cat --dump-header /tmp/httpHeaders.out

was folgendes ausgibt:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 120
Content-Type: application/json
Link: ;
rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Date: Wed, 20 Nov 2019 11:49:04 GMT

https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld - das ist der Core-Kontext!
Wenn Sie stattdessen Orion-LD den Kontext innerhalb der Payload-Daten
zurückzugeben lassen (was geschieht, wenn der Accept-Header auf application/ld+json
gesetzt wird):
curl 'localhost:1026/ngsi-ld/v1/entities?type=T&prettyPrint=yes&space=2' -
H "Accept: application/ld+json"

dann würde die Antwort so lauten:
[
    {
    "@context": "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-
context.jsonld",
    "id": "urn:entities:E1",
    "type": "T",
    "P1": {
      "type": "Property",
      "value": 12
    }
  }
]

und es gäbe keinen HTTP-Link-Header.
Die Installationsanleitung wäre dann damit erstmal abgeschlossen.
Wenn Sie Tests durchführen möchten, um wirklich sicherzugehen, dass Ihr Orion-LD
Kontextbroker korrekt funktioniert, folgen Sie bitte den Anweisungen in Ihrem
jeweiligen Installationshandbuch für Funktionstests:
    ● Ubuntu 18.04.3
    ● CentOS 7
    ● Debian 10
Wie man die Unit-Tests durchführt (es gibt keine spezifischen Unit-Tests für den NGSI-
LD-Teil, nur älteres Orion-Material), wird hier beschrieben.

5 Installationsanleitung für Ubuntu 18.04.3
Für diese Anleitung wurde Ubuntu 18.04.3 LTS (Desktop-Image) von hier
heruntergeladen und als virtuelle Maschine unter VMWare installiert.
5.1 Installation von abhängigen Paketen
Installation per Paketmanager:
   ●   boost (viele Bibliotheken)
   ●   libssl1.0
   ●   libcurl4
   ●   libsasl2
   ●   libgcrypt
   ●   libuuid
Nun muss eine ganze Reihe von Paketen installiert werden. Ich persönlich ziehe aptitude
apt-get vor, daher ist das erste, was ich tue, aptitude zu installieren:
sudo apt-get install aptitude

Für die Kompilierung und das Testen benötigte Werkzeuge:
sudo aptitude install build-essential cmake scons curl

Bibliotheken, die nicht aus Quellcode erstellt werden:
sudo aptitude install libssl1.0-dev gnutls-dev libcurl4-gnutls-dev
libsasl2-dev \
                      libgcrypt-dev uuid-dev libboost-dev libboost-regex-
dev libboost-thread-dev \
                      libboost-filesystem-dev

5.2 Herunterladen und Erstellen von abhängigen Bibliotheken aus
Quellcode
Einige Bibliotheken werden aus Quellcode erstellt und diese Quellen müssen
heruntergeladen und kompiliert werden.
   ●   Mongo Driver: legacy-1.1.2
   ●   libmicrohttpd: 0.9.48
   ●   rapidjson: 1.0.2
   ●   kbase: 0.2
   ●   klog: 0.2
   ●   kalloc: 0.2
   ●   kjson: 0.2
   ●   khash: 0.2
   ●   gtest: 1.5 (nur für Unit-Tests erforderlich)
   ●   gmock: 1.5 (nur für Unit-Tests erforderlich)
Bibliotheken, die geklonte Repositories sind, halte ich selbst alle in einem Verzeichnis,
das ich git nenne, direkt unter meinem Home-Verzeichnis: ~/git. Diese Anleitung folgt
diesem Prinzip, daher beginnen wir mit der Erstellung des Verzeichnisses für
Repositories:
mkdir ~/git

Und da git verwendet werden wird, können wir es genauso gut installieren:
sudo aptitude install git

5.2.1 MongoDB-Treiber
Da Orion-LD auf Orion basiert und Orion den alten Legacy C++-Treiber der MongoDB
Client-Bibliothek verwendet, benutzt Orion-LD ebenfalls diese alte Bibliothek. Es ist
geplant, zumindest alle NGSI-LD-Requests auf den neuesten C-Treiber des MongoDB-
Clients zu migrieren, aber mit dieser Arbeit wurde noch nicht begonnen.
Zum Herunterladen, Erstellen und Installieren:
sudo mkdir /opt/mongoclient
sudo chown $USER:$GROUP /opt/mongoclient # (1)
cd /opt/mongoclient
wget https://github.com/mongodb/mongo-cxx-driver/archive/legacy-
1.1.2.tar.gz
tar xfvz legacy-1.1.2.tar.gz
cd mongo-cxx-driver-legacy-1.1.2
scons --disable-warnings-as-errors --ssl --use-sasl-client
sudo scons install --prefix=/usr/local --disable-warnings-as-errors --ssl
--use-sasl-client

(1) Um Sie zum Eigentümer einer Datei zu machen, müssen Sie Ihren Benutzernamen
    und Ihre Gruppe angeben. Die env var USER existiert bereits, aber wenn Sie diesen
    "sudo chown"-Befehl kopieren und einfügen wollen, müssen Sie die env var GROUP
    erstellen, um Ihre Gruppe widerzuspiegeln. In meinem Fall mache ich das:
    export GROUP=kz

Danach sollten Sie die Bibliothek libmongoclient.a unter /usr/local/lib/ und das
Header-Verzeichnis mongo unter /usr/local/include/ finden.

5.2.2 libmicrohttpd
libmicrohttpd ist die Bibliothek, die sich um eingehende Verbindungen und http/https
kümmert. Wir verwenden eine ältere Version davon, die demnächst durch die neueste
Version ersetzt wird. So installieren Sie libmicrohttpd aus dem Quellcode:
sudo mkdir /opt/libmicrohttpd
sudo chown $USER:$GROUP /opt/libmicrohttpd
cd /opt/libmicrohttpd
wget http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.48.tar.gz
tar xvf libmicrohttpd-0.9.48.tar.gz
cd libmicrohttpd-0.9.48
./configure --disable-messages --disable-postprocessor --disable-dauth
make
sudo make install

5.2.3 rapidjson
rapidjson ist der JSON-Parser, der von der NGSI APIv2-Implementierung verwendet wird.
Da Orion-LD ebenfalls NGSI APIv2 enthält, benötigen wir diese Bibliothek. Wie
libmicrohttpd verwenden wir eine ältere Version der Bibliothek. So installieren wir sie
aus dem Quellcode:
sudo mkdir /opt/rapidjson
sudo chown $USER:$GROUP /opt/rapidjson
cd /opt/rapidjson
wget https://github.com/miloyip/rapidjson/archive/v1.0.2.tar.gz
tar xfvz v1.0.2.tar.gz
sudo mv rapidjson-1.0.2/include/rapidjson/ /usr/local/include

5.2.4 kbase
kbase ist eine Sammlung grundlegender Funktionen, wie z.B. die Behandlung von
Zeichenketten, die von den übrigen "K-libs" verwendet wird. Zum Herunterladen,
Erstellen und Installieren:
cd ~/git
git clone https://gitlab.com/kzangeli/kbase.git
cd kbase
git checkout release/0.3
make install

5.2.5 klog
klog ist eine Bibliothek fürs Logging, die von den übrigen "K-libs" verwendet wird. Zum
Herunterladen, Erstellen und Installieren:
cd ~/git
git clone https://gitlab.com/kzangeli/klog.git
cd klog
git checkout release/0.3
make install

5.2.6 kalloc
kalloc ist eine Bibliothek, die eine schnellere Allokation ermöglicht, indem sie Aufrufe von
malloc vermeidet. Die Bibliothek alloziert eine große Menge Pufferspeicher durch den
Aufruf von malloc und gibt dann Teile dieses groß allozierten Speichers aus. Die Anteile
können nicht freigegeben werden, sondern nur die großen Pufferspeicher, die über
malloc zugewiesen werden, und das geschieht, wenn die kalloc-Instanz beendet wird.
Für Orion-LD, der jeden Request in einem separaten Thread behandelt, ist dies mit
Hinblick auf die Performance ideal.
Zum Herunterladen, Erstellen und Installieren:
cd ~/git
git clone https://gitlab.com/kzangeli/kalloc.git
cd kalloc
git checkout release/0.3
make install

5.2.7 kjson
kjson ist ein JSON-Parser, der aus der textuellen JSON-Eingabe einen einfach zu
verwendenden KjNode-Baum aufbaut. Er ist sehr einfach zu verwenden (verknüpfte
Listen) und um ein Vielfaches schneller als rapidjson, den Orion NGSI-v2 verwendet. Aus
diesem Grund verwendet Orion-LD kjson anstelle von rapidjson.
Zum Herunterladen, Erstellen und Installieren:
cd ~/git
git clone https://gitlab.com/kzangeli/kjson.git
cd kjson
git checkout release/0.3
make install

5.2.8 khash
khash ist eine Bibliothek, die eine Hash-Tabellen-Implementierung bereitstellt. Diese
Hash-Tabelle wird für den Kontext-Cache von Orion-LD verwendet.
Zum Herunterladen, Erstellen und Installieren:
cd ~/git
git clone https://gitlab.com/kzangeli/khash.git
cd khash
git checkout release/0.3
make install

5.3 Quellcode von Orion-LD
Nun, da wir alle Abhängigkeiten installiert haben, ist es an der Zeit, das Orion-LD-
Repository zu klonen:
cd ~/git
git clone https://github.com/FIWARE/context.Orion-LD.git
cd context.Orion-LD
make install

Am Ende von make install will das Makefile die ausführbare Datei (orionld) nach
/usr/bin kopieren und weitere Dateien nach /usr. Da die Kompilierung nicht als root
(sudo) ausgeführt wurde (und auch nicht ausgeführt werden sollte), werden diese
Kopiervorgänge fehlschlagen. Sie haben hier also zwei Möglichkeiten:
1. Erstellen Sie die Dateien manuell mit sudo und machen Sie sich dann zum
Eigentümer dieser Dateien:
sudo   touch   /usr/bin/orionld
sudo   chown   $USER:$GROUP /usr/bin/orionld
sudo   touch   /etc/init.d/orionld
sudo   chown   $USER:$GROUP /etc/init.d/orionld
sudo   touch   /etc/default/orionld
sudo   chown   $USER:$GROUP /etc/default/orionld

2. Führen Sie sudo make install aus und lassen Sie die Dateien in den Besitz von root
übergehen.
Persönlich bevorzuge ich Option 1. Ich benutze sudo äußerst ungern.
Sie haben nun orionld, den NGSI-LD Kontextbroker, kompiliert, installiert und
einsatzbereit!
Außer natürlich, wenn Sie auch den MongoDB-Server installieren müssen. Bis jetzt haben
wir nur die MongoDB Client-Bibliothek installiert, so dass orionld mit dem MongoDB-
Server sprechen kann.

5.4 Installation des MongoDB-Servers
Wenn Sie ein Docker-Image verwenden, wird der MongoDB-Server als Docker-Container
bereitgestellt. Wenn Docker nicht verwendet wird, muss der MongoDB-Server installiert
werden. Lesen Sie dazu bitte die MongoDB-Dokumentation. Die Version 4.0 ist die
empfohlene, aber sowohl ältere als auch neuere Versionen sollten einwandfrei
funktionieren.
Die MongoDB-Dokumentation macht zu der Installation des MongoDB-Server 4.0 unter
Ubuntu 18.04 folgende Vorgaben:
# Öffentlichen MongoDB GPG Key importieren
wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-
key add -
# Sollte mit "OK" antworten

# list-File /etc/apt/sources.list.d/mongodb-org-4.0.list erstellen
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu
bionic/mongodb-org/4.0 multiverse" | sudo tee
/etc/apt/sources.list.d/mongodb-org-4.0.list

# Lokale Paket-Datenbank neuladen
sudo apt-get update

# MongoDB Pakete installieren
sudo apt-get install -y mongodb-org

Für weitere Details zum MongoDB-Installationsprozess oder falls etwas schief geht,
lesen Sie bitte die MongoDB-Dokumentation.
Sie können auch lesen