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 mit curl herunter zu laden und dann 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.
Als nächstes wirst du aufgefordert, einen Cookie-Namen festzulegen. Wähle einen Namen deiner Wahl.
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.
Als Nächstes wirst du aufgefordert, ein Administrator-Passwort für den Standard-Admin-Account zu erstellen.
Du wirst aufgefordert, das Passwort erneut zu bestätigen.
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.
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.
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.
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.
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.
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.
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" }
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.
Um den Inhalt der Dokumente anzuzeigen, kannst du auf den Link {} JSON klicken.
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).
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:password@127.0.0.1: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 name@example.com 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.