Wie installiere ich Apache CouchDB NoSQL Datenbank Server auf Debian 11

Apache CouchDB ist eine Open-Source NoSQL-Datenbank, die von der Apache Software Foundation entwickelt wurde. Jede Datenbank ist eine Sammlung von Dokumenten im JSON-Format. Jedes Dokument besteht aus einer Reihe von Feldern und Anhängen. Sie verfügt über eine Restful API, mit der du Datenbankdokumente erstellen, bearbeiten und löschen kannst. Sie unterstützt zwei Modi – Standalone und Clustering. Wenn du es auf einem einzelnen Server verwendest, kannst du den Einzelplatzmodus nutzen. Der Clustermodus ist hilfreich, wenn du mehr als einen Server verwendest.

In diesem Lernprogramm lernst du, wie du den Apache CouchDB Database Server auf einem Debian 11 Server installierst. Außerdem lernst du, wie du einige grundlegende Datenbankoperationen durchführst und mit dem Caddy Webserver über eine öffentliche URL auf CouchDB zugreifst.

Voraussetzungen

  • Ein Server, auf dem Debian 11 läuft.
  • DasSudo-Paket ist installiert.
    $ apt install sudo
    
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Alles ist auf dem neuesten Stand.
    $ sudo apt update && sudo apt upgrade
    
  • Ein vollqualifizierter Domainname (FQDN), z.B. couchdb.example.com, um auf CouchDB über eine öffentliche URL mit HTTPS zuzugreifen.

Schritt 1 – Dienstprogramme installieren

Bevor wir mit der Installation fortfahren, müssen wir einige Tools installieren, die wir für das Tutorial benötigen. Führe den folgenden Befehl aus, um sie zu installieren.

$ sudo apt install -y curl apt-transport-https gnupg nano lsb-release 

Schritt 2 – CouchDB Repository hinzufügen

Der erste Schritt besteht darin, den GPG-Schlüssel von CouchDB zu importieren. Führe den folgenden Befehl aus, um den Schlüssel zu importieren.

$ curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1

Füge das CouchDB-Repository zur Liste der System-Repositories hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ `lsb_release -cs` main" \
    | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null

Aktualisiere die Liste der System-Repositories.

$ sudo apt update

Schritt 3 – Installiere CouchDB

Führe den folgenden Befehl aus, um CouchDB zu installieren.

$ sudo apt install couchdb -y

Der CouchDB-Installer fordert dich automatisch auf, grundlegende Einstellungen vorzunehmen. Im ersten Schritt wirst du gefragt, ob du CouchDB auf einem einzelnen Server oder auf mehreren Nodes installieren möchtest. Da wir es auf einem einzelnen Server installieren, solltest du die Option ausgewählt lassen und die Eingabetaste drücken, um fortzufahren.

CouchDB Server Konfigurationstyp

Als nächstes wirst du aufgefordert, einen Cookie-Namen festzulegen. Wähle einen Namen deiner Wahl.

CouchDB Erlang Cookie Einrichtung

Als Nächstes wirst du aufgefordert, eine Bindungsadresse für den CouchDB-Dienst einzurichten. Da wir ihn auf einem Server installieren und über ein UI-Kontrollfeld darauf zugreifen müssen, solltest du 0.0.0.0 als Bindungsadresse festlegen. Wenn du den Zugriff auf den CouchDB-Server auf eine IP-Adresse beschränken willst, dann verwende diese.

Einrichtung der CouchDB-Bindungsadresse

Als Nächstes wirst du aufgefordert, ein Administrator-Passwort für den Standard-Admin-Account zu erstellen.

CouchDB Admin Passwort einrichten

Du wirst aufgefordert, das Passwort erneut zu bestätigen.

CouchDB Aufforderung zur Passwortüberprüfung

Drücke die Eingabetaste, um den Installationsvorgang abzuschließen.

Schritt 4 – Überprüfe die CouchDB-Installation

Um zu überprüfen, ob die Installation erfolgreich war, führe den folgenden Befehl aus.

$ curl http://127.0.0.1:5984/

Er gibt eine JSON-formatierte Ausgabe mit Informationen über CouchDB zurück.

{"couchdb":"Welcome","version":"3.2.2","git_sha":"d5b746b7c","uuid":"7a20b1eadd803f1c0d77fb9617c7f3de","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}

Die Shell-Ausgabe ist unformatiert. Hier siehst du, wie sie bei der Formatierung aussieht.

{
   "couchdb":"Welcome",
   "version":"3.2.2",
   "git_sha":"d5b746b7c",
   "uuid":"7a20b1eadd803f1c0d77fb9617c7f3de",
   "features":[
      "access-ready",
      "partitioned",
      "pluggable-storage-engines",
      "reshard",
      "scheduler"
   ],
   "vendor":{
      "name":"The Apache Software Foundation"
   }
}

Du kannst sie auch über das Web aufrufen, indem du die URL http://<yourserverIP>:5984/ besuchst. Aber bevor wir das tun, müssen wir den Port in unserer Firewall öffnen. Angenommen, du verwendest die Uncomplicated Firewall(ufw), dann führe den folgenden Befehl aus, um den Port zu öffnen.

$ sudo ufw allow 5984/tcp

Öffne die URL http://<yourserverIP>:5984 in deinem Browser. Du wirst den folgenden Bildschirm sehen. Die folgende Ausgabe wurde mit Firefox aufgezeichnet. In anderen Browsern siehst du einfach die Rohausgabe, die du in deinem Terminal erhalten hast.

CouchDB WebPage in Firefox

Schritt 5 – Zugriff auf CouchDB

CouchDB wird mit einer webbasierten Benutzeroberfläche namens Fauxton geliefert, mit der du Datenbanken verwalten und erstellen kannst. Du kannst es über die URL http://<yourserverIP>:5984/_utils/ aufrufen. Rufe die URL in deinem Lieblingsbrowser auf und du siehst den folgenden Anmeldebildschirm.

CouchDB Login Screen

Gib admin als Benutzernamen und das zuvor erstellte Passwort ein. Klicke auf die Schaltfläche Anmelden, um fortzufahren. Als Nächstes wirst du zum CouchDB Dashboard weitergeleitet.

CouchDB Dashboard

Hier siehst du zwei Datenbanken, die während der Installation angelegt wurden. Die Datenbank _users enthält erwartungsgemäß Informationen über die Nutzer der CouchDB-Plattform und die Datenbank _replicator enthält Informationen über alle Replikationsdatenbanken und -vorgänge.

Außerdem siehst du eine Seitenleiste mit allen möglichen Optionen, die du mit CouchDB nutzen kannst.

Schritt 6 – Grundlegende Datenbankoperationen mit der CouchDB Schnittstelle

Mit der Fauxton-Schnittstelle von CouchDB können wir grundlegende CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) durchführen. Beginnen wir mit dem Anlegen einer neuen Datenbank.

Datenbank erstellen

Um eine neue Datenbank zu erstellen, klickst du auf den Link Datenbank erstellen auf dem Hauptbildschirm. Daraufhin öffnet sich das folgende Pop-up-Fenster.

CouchDB Datenbank erstellen Popup

Gib den Namen der Datenbank ein, die du erstellen möchtest, und klicke auf die Schaltfläche Erstellen.

Dadurch wird eine neue Datenbank erstellt und das folgende Fenster geöffnet.

CouchDB Datenbank Dashboard

Dokument erstellen

Jetzt, wo wir eine Datenbank haben, wollen wir ein Dokument darin erstellen. Klicke auf die Schaltfläche Dokument erstellen, um zu beginnen. Der folgende Bildschirm für ein neues Dokument ist bereits mit einem JSON-Objekt und einem _id mit einem Globally Unique Identifier (GUID) ausgefüllt.

CouchDB Fenster Neues Dokument

Fügen wir nun einige Daten hinzu, indem wir weitere Felder auf die folgende Weise hinzufügen. Wenn du den Wert des Feldes _id ändern möchtest, kannst du das tun, aber nur bevor du das Dokument erstellst. Du kannst den Wert nicht mehr ändern, nachdem das Dokument erstellt wurde. Die anderen Felder kannst du jedoch jederzeit bearbeiten.

{
  "_id": "0b4ad0d607479c09bb9121b146007363",
  "Name": "Navjot Singh",
  "role": "writer",
  "skills": "linux"
}

CouchDB New Document Data

Klicke auf die Schaltfläche Dokument erstellen, wenn du die Felder hinzugefügt hast, um das neue Dokument zu speichern. Du gelangst wieder auf die folgende Seite Alle Dokumente.

CouchDB Alle Dokumente

Um den Inhalt der Dokumente anzuzeigen, kannst du auf den Link {} JSON klicken.

CouchDB Dokument ansehen

Um das Dokument zu bearbeiten, kannst du auf das Stiftsymbol auf der rechten Seite klicken oder zurück zur Metadatenansicht wechseln und auf den Dokumentenlink klicken. Ändere die Werte eines der Elemente und klicke auf Dokument speichern, um es fertigzustellen.

Dokument löschen

Um das Dokument zu löschen, klickst du auf das Häkchen vor dem Dokument und wählst die Schaltfläche Löschen oben aus (siehe unten).

CouchDB Dokument löschen

Schritt 7 – Grundlegende Datenbankoperationen über die Kommandozeile

Auch wenn die Verwendung der Weboberfläche eine einfachere Art ist, CouchDB zu nutzen, kannst du die gleichen Vorgänge auch über die Kommandozeile ausführen.

Datenbank erstellen

Bevor wir mit dem Anlegen unserer Datenbank beginnen, müssen wir eine Variable für die URL der Verbindung definieren. Für unsere Beispiele werden wir eine einfache Klartext-Authentifizierung verwenden. Da wir uns bei jedem Befehl authentifizieren müssen, ist es besser, dafür eine vordefinierte Variable zu verwenden. Du kannst localhost oder 127.0.0.1 verwenden, um dich mit der CouchDB-Installation zu verbinden.

$ HOST="http://admin:[email protected]:5984"

Hinweis: Die Verwendung eines Klartextpassworts ist nicht die beste Methode und sollte in Produktionsumgebungen nicht verwendet werden. In der offiziellen Dokumentation von CouchDB findest du sicherere Authentifizierungsmethoden.

Nachdem wir nun die Host-URL festgelegt haben, versuchen wir, mit dem folgenden Befehl eine weitere Datenbank zu erstellen.

$ curl -X PUT $HOST/another_db

Der Name der Datenbank ist another_db. Und wir müssen das Administrator-Passwort für den Befehl angeben.

Dokument erstellen

Um ein Dokument zu erstellen, führe den folgenden Befehl aus.

$ curl -X POST -d '{"todo":"task 1", "done":false}' $HOST/another_db -H "Content-Type:application/json"

Das Flag -X zeigt an, dass wir eine HTTP-POST-Operation durchführen. Das Flag -H gibt an, welche Art von Inhalt wir übermitteln, in diesem Fall JSON. Das Flag -d gibt den eigentlichen JSON-Inhalt an, den wir hinzufügen.

Der obige Befehl erzeugt automatisch eine ID für das Dokument. Er erzeugt die folgende Ausgabe, die zeigt, dass der Befehl erfolgreich war.

{"ok":true,"id":"0b4ad0d607479c09bb9121b14600c6ee","rev":"1-2fc1d70532433c39c9f61480607e3681"}

Wie du sehen kannst, wurde automatisch eine ID für das Dokument erzeugt. Wenn du eine benutzerdefinierte ID angeben möchtest, kannst du das auf folgende Weise tun.

$ curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' $HOST/another_db -H "Content-Type:application/json"
{"ok":true,"id":"random_task","rev":"1-bceeae3c4a9154c87db1649473316e44"}

Dokumente in großen Mengen erstellen

Du kannst auch Dokumente in großen Mengen hinzufügen.

$ curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' $HOST/another_db/_bulk_docs -H "Content-Type:application/json"

Wie du siehst, enthält der POST-Body beim Einfügen mehrerer Dokumente ein Objekt mit einem docs Feld. Dieses Feld enthält eine Reihe von Dokumenten, die in die Datenbank eingefügt werden sollen. Beim Einfügen eines einzelnen Dokuments wurde die POST-Anfrage an die Datenbank gesendet ($HOST/another_db). Wenn wir aber mehrere Dokumente einfügen wollen, muss die Anfrage an die URL $HOST/another_db/_bulk_docs gesendet werden.

Du wirst eine ähnliche Ausgabe erhalten.

[{"ok":true,"id":"0b4ad0d607479c09bb9121b14600cb04","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"0b4ad0d607479c09bb9121b14600d9ef","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]

Hier kannst du sehen, dass die Ausgabe die ID für die beiden neuen Dokumente enthält.

Dokument lesen

Um ein Dokument aus der Datenbank zu lesen, musst du seine ID angeben. Führe den folgenden Befehl aus, um das Dokument random_task abzurufen. Da wir eine HTTP-POST-Anfrage verwendet haben, um Daten hinzuzufügen, ist es logisch, dass du eine GET-Anfrage verwenden musst, um sie abzurufen.

$ curl -X GET $HOST/another_db/random_task

Du wirst die folgende Ausgabe erhalten.

{"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}

Notiere dir hier das Feld _rev des Dokuments. Dieses Feld ist nützlich, wenn du ein Dokument bearbeiten oder löschen willst.

Dokument bearbeiten

Um ein Dokument zu bearbeiten, musst du das Feld _rev verwenden. Jede Anfrage, die das Feld _rev nicht enthält, wird von CouchDB beim Bearbeiten automatisch abgelehnt. Da CouchDB das gesamte Dokument aktualisiert, muss das gesamte Dokument während des Bearbeitungsvorgangs im Request Body gesendet werden.

Wir aktualisieren das Dokument random_task mit dem folgenden Befehl.

$ curl -X PUT -d '{"_rev":"1-bceeae3c4a9154c87db1649473316e44", "todo":"task 2", "done":true}' $HOST/another_db/random_task

Achte darauf, dass du den Wert des Feldes _rev durch den Wert ersetzt, den du beim Lesen des Dokuments erhalten hast. Er sollte mit dem Wert im aktuellen Dokument übereinstimmen.

Du erhältst eine Ausgabe ähnlich der untenstehenden.

{"ok":true,"id":"random_task","rev":"2-4cc3dfb6e76befd665faf124b36b7f1c"}

Wie du siehst, haben sich die Daten des Feldes rev geändert. Bei jeder weiteren Änderung des Dokuments musst du diesen neuen rev Wert verwenden.

Dokument löschen

Um ein Dokument zu löschen, musst du die ID und den aktualisierten rev Wert angeben. Lass uns das Dokument random-task löschen.

$ curl -X DELETE $HOST/another_db/random_task?rev=2-4cc3dfb6e76befd665faf124b36b7f1c

Achte darauf, dass der Wert des Feldes rev im Befehl mit dem Wert in deinem aktuellen Dokument übereinstimmt. Du wirst eine ähnliche Ausgabe wie die folgende erhalten.

{"ok":true,"id":"random_task","rev":"3-07d6cde68be2a559497ec263045edc9d"}

Daten anzeigen

Lass uns die Liste aller Datenbanken auf dem Server überprüfen.

$  curl -X GET $HOST/_all_dbs

Liste alle Dokumente unter einer bestimmten Datenbank auf.

$ curl -X GET $HOST/another_db/_all_docs

Schritt 8 – Caddy Server installieren

Bisher haben wir auf CouchDB über die IP-Adresse des Servers zugegriffen. Es gibt eine einfache Methode, um sie durch deinen Domainnamen zu ersetzen und SSL davor zu setzen, um sie sicherer zu machen. Für unser Tutorial werden wir Caddy Server verwenden, da er leichtgewichtig ist, mit minimaler Konfiguration funktioniert und eine integrierte SSL-Erstellung mitbringt.

Führe den folgenden Befehl aus, um einige für Caddy erforderliche Pakete zu installieren. Möglicherweise sind sie bereits auf deinem Server installiert.

$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

Installiere den GPG-Schlüssel von Caddy und füge das offizielle Repository zur Repository-Liste von Debian hinzu.

$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Installiere den Caddy-Server.

$ sudo apt update
$ sudo apt install caddy

Führe den folgenden Befehl aus, um die Installation zu überprüfen.

$ caddy version
v2.5.1 h1:bAWwslD1jNeCzDa+jDCNwb8M3UJ2tPa8UZFFzPVmGKs=

Schritt 9 – Caddy konfigurieren

Um Caddy so zu konfigurieren, dass er als Reverse Proxy Server funktioniert, musst du die Caddydatei konfigurieren. Öffne das Caddyfile zum Bearbeiten.

$ sudo nano /etc/caddy/Caddyfile

Ersetze den Code in der Datei durch den folgenden Code.

couchdb.example.com {
        reverse_proxy localhost:5984

        tls [email protected]

        log {
                output file /var/log/caddy/couchdb.log
        }
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Führe den Caddy-Validator aus, um zu prüfen, ob es Probleme gibt.

$ caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile

Wenn du Fehler bei der Formatierung feststellst, führe den folgenden Befehl aus, um sie zu beheben.

$ sudo caddy fmt --overwrite /etc/caddy/Caddyfile

Führe den Validator erneut aus.

Starte den Caddy-Server neu, um die Änderungen zu übernehmen.

$ sudo systemctl restart caddy

Du kannst jetzt über die URL https://couchdb.example.com/_utils/ in deinem Browser auf CouchDB zugreifen.

Fazit

Du hast gelernt, wie du den Apache CouchDB Datenbankserver auf einem Debian 11 Rechner installierst. Du hast auch gelernt, wie du grundlegende Datenbankoperationen über die Kommandozeile und die Fauxton UI durchführst. Und nicht zuletzt hast du gelernt, wie du die Fauxton UI im Internet zugänglich machst, indem du Caddy als Reverse Proxy Server verwendest. Wenn du Fragen hast, kannst du sie unten in den Kommentaren stellen.

Das könnte dich auch interessieren …