Installationsanleitung für Apache CouchDB auf Ubuntu 20.04
Überblick
Apache CouchDB ist ein Open-Source-NoSQL-Datenbanksystem, das Informationen im JSON-Dokumentenformat speichert. Die Verwaltung der Daten erfolgt über JavaScript MapReduce-Syntax und eine HTTP-API als Hauptabfragemethoden.
Entwickelt in Erlang, bietet CouchDB Funktionen für Echtzeitskalierbarkeit und Replikation und ist ideal für verteilte Datenbanksysteme, die eine Synchronisation über Netzwerke mit geringer Bandbreite benötigen. Diese Eigenschaften machen CouchDB zu einer ausgezeichneten Wahl für den Aufbau stabiler Anwendungen in Bereichen wie Banking, Telekommunikation, E-Commerce und Instant Messaging.
In dieser Anleitung erfahren Sie, wie Sie den CouchDB-Datenbankserver auf Ubuntu 20.04 installieren und in Betrieb nehmen.
Voraussetzungen
Stellen Sie vor Beginn sicher, dass Sie Folgendes besitzen:
- Ein Ubuntu 20.04-Server.
- Ein Benutzerkonto mit sudo-Rechten, ohne Root-Zugriff.
Schritt 1: Installation benötigter Pakete und Herunterladen des CouchDB-Pakets
Da das Apache CouchDB-Paket nicht in den Standard-Ubuntu-Repositories enthalten ist, müssen Sie ein externes Repository hinzufügen, indem Sie die folgenden Schritte ausführen.
Verbindung zum Server herstellen
Stellen Sie per SSH eine Verbindung zu Ihrem Server her, indem Sie ein Benutzerkonto mit sudo-Rechten verwenden.
Aktualisieren der Paketlisten
Aktualisieren Sie die Paketdatenbank, um sicherzustellen, dass alle Repositories auf dem neuesten Stand sind:
$ sudo apt update
Installation notwendiger Abhängigkeiten
Installieren Sie curl
, apt-transport-https
und gnupg
mit folgendem Befehl:
$ sudo apt install -y curl apt-transport-https gnupg
Abrufen des CouchDB GPG-Schlüssels
Laden Sie den CouchDB GPG-Schlüssel herunter, damit der apt-Paketmanager die Echtheit des externen Repositories überprüfen kann:
$ curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1 source /etc/os-release
Freischalten des CouchDB-Repositories
Fügen Sie das CouchDB-Repository zu Ihrer Liste verfügbarer Paketquellen hinzu:
$ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ focal main" | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null
Schritt 2: Repository aktualisieren und CouchDB installieren
Aktualisieren der Paketliste
Aktualisieren Sie Ihre Paketquellen, um das neu hinzugefügte CouchDB-Repository zu erkennen:
$ sudo apt update
Installation des CouchDB-Pakets
Installieren Sie CouchDB, indem Sie den folgenden Befehl ausführen:
$ sudo apt install -y couchdb
Drücken Sie die Taste Tab und anschließend Enter, um mit der Installation fortzufahren.
Auswahl des CouchDB-Installationsmodus
Wählen Sie im nächsten Schritt die Option standalone aus. Danach drücken Sie Tab und Enter, um fortzufahren.
Allgemeiner Typ der CouchDB-Konfiguration:
- standalone
- clustered
- none
Konfiguration der Schnittstellen-Bindung
Belassen Sie die voreingestellte Bind-Adresse bei 127.0.0.1. Drücken Sie dann Tab und Enter, um weiterzumachen.
CouchDB-Schnittstellen-Bindungsadresse:
- 127.0.0.1
Festlegen eines Administratorpassworts
Geben Sie ein Passwort Ihrer Wahl für das CouchDB-admin
-Konto ein und drücken Sie Tab und anschließend Enter.
Passwort für den CouchDB-„admin“-Benutzer:
- EXAMPLE_PASSWORD
Bestätigung des Administratorpassworts
Wiederholen Sie Ihr gewähltes Administratorpasswort und drücken Sie erneut Tab und Enter, um fortzufahren.
Wiederholung des Passworts für den CouchDB-„admin“-Benutzer:
- EXAMPLE_PASSWORD
Die Installation von CouchDB ist nun abgeschlossen. Im nächsten Schritt lernen Sie, wie Sie den CouchDB-Dienst verwalten können.
Schritt 3: Verwaltung des CouchDB-Dienstes
CouchDB starten
Verwenden Sie den folgenden Befehl, um den CouchDB-Dienst zu starten:
$ sudo systemctl start couchdb
CouchDB stoppen
Um den CouchDB-Dienst zu beenden, führen Sie folgenden Befehl aus:
$ sudo systemctl stop couchdb
CouchDB beim Systemstart aktivieren
Aktivieren Sie den CouchDB-Dienst, damit dieser automatisch beim Hochfahren des Systems gestartet wird:
$ sudo systemctl enable couchdb
CouchDB neu starten
Verwenden Sie folgenden Befehl, um den CouchDB-Dienst neu zu starten:
$ sudo systemctl restart couchdb
Schritt 4: Erstellen und Verwalten einer CouchDB-Datenbank
Sie können Datenbankabfragen auf Ihrem CouchDB-Server auf zwei Hauptwegen durchführen:
- Die CouchDB HTTP API: CouchDB stellt eine JSON REST API bereit, über die Sie mit der Datenbank via HTTP-Anfragen kommunizieren können.
- Die CouchDB Fauxton-Oberfläche: Eine webbasierte Verwaltungssoftware, mit der Sie Ihre CouchDB-Datenbanken bequem über den Browser verwalten.
4.1. Verwendung der CouchDB HTTP API
Sie können die CouchDB API mit verschiedenen HTTP-Clients ansprechen. Dieses Beispiel nutzt das Kommandozeilenprogramm curl
unter Linux, um grundlegende Datenbankoperationen durchzuführen.
Serverinformationen abrufen
Führen Sie den folgenden Befehl aus, um Basisinformationen über Ihre CouchDB-Installation abzurufen. Ersetzen Sie EXAMPLE_PASSWORD
durch Ihr tatsächliches Admin-Passwort:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984
Beispielausgabe:
{
"couchdb":"Welcome",
"version":"3.2.1",
"git_sha":"244d428af",
"uuid":"5e48b8f6a943805d36e7cf0534041d22",
"features":[
"access-ready",
"partitioned",
"pluggable-storage-engines",
"reshard",
"scheduler"
],
"vendor":{
"name":"The Apache Software Foundation"
}
}
Eine neue Datenbank erstellen
Um eine neue Datenbank namens demo
zu erstellen, verwenden Sie diesen Befehl:
$ curl -X PUT http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo
Beispielausgabe:
{"ok":true}
Alle Datenbanken auflisten
Um alle bestehenden Datenbanken auf Ihrem CouchDB-Server anzuzeigen, führen Sie folgenden Befehl aus:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/_all_dbs
Erwartete Ausgabe:
["_replicator","_users","demo"]
4.2. Einfügen von Dokumenten in die Demo-Datenbank
Nun fügen Sie drei Dokumente in die Datenbank demo
ein. Jedes Dokument wird im JSON-Format definiert und über eine eindeutige ID in der URL angesprochen (../demo/"1"
, ../demo/"2"
und ../demo/"3"
).
Erstellen des ersten Dokuments
Führen Sie folgenden Befehl aus, um ein Dokument mit der ID „1“ anzulegen:
$ curl -H 'Content-Type: application/json' -X PUT http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/"1" -d '{"product_name":"LED BULB" , "retail_price" : 23.55}'
Erstellen des zweiten Dokuments
Erstellen Sie ein weiteres Dokument mit der ID „2“ durch folgenden Befehl:
$ curl -H 'Content-Type: application/json' -X PUT http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/"2" -d '{"product_name":"WIRELESS MOUSE" , "retail_price" : 45.20}'
Erstellen des dritten Dokuments
Fügen Sie nun ein drittes Dokument mit der ID „3“ hinzu:
$ curl -H 'Content-Type: application/json' -X PUT http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/"3" -d '{"product_name":"4G ROUTER" , "retail_price" : 89.50}'
Erwartete Antwort nach erfolgreichem Einfügen:
{"ok":true,"id":"1","rev":"1-b626670af2e7ee1ae13ffba7ffe83819"}
{"ok":true,"id":"2","rev":"1-d995adf7c62c3f1931f817f7a3f2685c"}
{"ok":true,"id":"3","rev":"1-1ebf435bdc37cf3c5dd32aebdd377d46"}
Alle Dokumente anzeigen
Um alle in der demo
-Datenbank gespeicherten Dokumente anzuzeigen, verwenden Sie folgenden Befehl:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/_all_docs?include_docs=true
Beispielausgabe:
{
"total_rows":3,
"offset":0,
"rows":[
{
"id":"1",
"key":"1",
"value":{
"rev":"1-b626670af2e7ee1ae13ffba7ffe83819"
},
"doc":{
"_id":"1",
"_rev":"1-b626670af2e7ee1ae13ffba7ffe83819",
"product_name":"LED BULB",
"retail_price":23.55
}
},
{
"id":"2",
"key":"2",
"value":{
"rev":"1-d995adf7c62c3f1931f817f7a3f2685c"
},
"doc":{
"_id":"2",
"_rev":"1-d995adf7c62c3f1931f817f7a3f2685c",
"product_name":"WIRELESS MOUSE",
"retail_price":45.2
}
},
{
"id":"3",
"key":"3",
"value":{
"rev":"1-1ebf435bdc37cf3c5dd32aebdd377d46"
},
"doc":{
"_id":"3",
"_rev":"1-1ebf435bdc37cf3c5dd32aebdd377d46",
"product_name":"4G ROUTER",
"retail_price":89.5
}
}
]
}
Ein bestimmtes Dokument abrufen
Um den Inhalt eines spezifischen Dokuments anhand seiner ID, zum Beispiel ID „1“, abzurufen, verwenden Sie folgenden Befehl:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/1
Beispielausgabe:
{"_id":"1","_rev":"1-b626670af2e7ee1ae13ffba7ffe83819","product_name":"LED BULB","retail_price":23.55}
4.3. Dokumente in CouchDB aktualisieren und löschen
Ein Dokument aktualisieren
Um ein bestehendes Dokument zu aktualisieren, geben Sie die eindeutige Dokumenten-ID in der URL an (/demo/1/
) und fügen Sie die aktuelle _rev
-ID in den JSON-Body ein. Verwenden Sie dazu folgenden Befehl, um das Dokument „1“ zu aktualisieren:
$ curl -H 'Content-Type: application/json' -X PUT http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/1/ -d '{"product_name":"15 WATTS LED BULB" , "retail_price" : 40.89, "_rev":"1-b626670af2e7ee1ae13ffba7ffe83819"}'
Nach der Aktualisierung erzeugt CouchDB eine neue Revisions-ID:
{"ok":true,"id":"1","rev":"2-387ee2644327cda7a202ed3ad1a9cad0"}
Aktualisiertes Dokument überprüfen
Holen Sie sich das aktualisierte Dokument erneut, um die vorgenommenen Änderungen zu überprüfen:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/1
Aktualisierte Produktdetails:
{"_id":"1","_rev":"2-387ee2644327cda7a202ed3ad1a9cad0","product_name":"15 WATTS LED BULB","retail_price":40.89}
Hinweis: CouchDB unterstützt keine Teilaktualisierungen von Dokumenten. Jede Änderung erzeugt eine neue Version des Dokuments. Neue Felder können daher nur durch erneutes Übermitteln des gesamten modifizierten Inhalts hinzugefügt werden.
Ein Dokument löschen
Um ein Dokument zu löschen, müssen Sie sowohl die Dokumenten-ID als auch die zugehörige Revisions-ID in der URL angeben.
Revisions-ID abrufen
Ermitteln Sie die Revisions-ID des Dokuments mit der ID „3“ mit folgendem Befehl:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/3
Beispielausgabe:
{"_id":"3","_rev":"1-1ebf435bdc37cf3c5dd32aebdd377d46","product_name":"4G ROUTER","retail_price":89.5}
Dokument löschen
Verwenden Sie folgenden Befehl, um das Dokument mit der ID „3“ und der ermittelten Revisions-ID zu löschen:
$ curl -X DELETE http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/3?rev=1-1ebf435bdc37cf3c5dd32aebdd377d46
Erfolgreiche Löschbestätigung:
{"ok":true,"id":"3","rev":"2-37f9841ca9055574b880fdbf0278b170"}
Löschung überprüfen
Versuchen Sie, das gelöschte Dokument abzurufen, um sicherzustellen, dass es entfernt wurde:
$ curl -X GET http://admin:EXAMPLE_PASSWORD@127.0.0.1:5984/demo/3
Erwarteter Fehlerausgabe:
{"error":"not_found","reason":"deleted"}
4.4. Verwaltung von CouchDB über die Fauxton-Oberfläche
Um Ihren CouchDB-Server über die webbasierte Fauxton-Oberfläche zu verwalten, sind einige Konfigurationsänderungen erforderlich. Befolgen Sie dazu die folgenden Schritte.
Bearbeiten der CouchDB-Konfigurationsdatei
Öffnen Sie die Datei /opt/couchdb/etc/local.ini
mit einem Texteditor:
$ sudo nano /opt/couchdb/etc/local.ini
Suchen Sie die folgende Zeile in der Datei:
... [chttpd]
;port = 5984
;bind_address = 127.0.0.1
...
Entfernen Sie das führende Semikolon (;
), um die Einstellung bind_address
zu aktivieren, und ändern Sie den Wert von 127.0.0.1
auf 0.0.0.0
. Dadurch lauscht CouchDB auf allen Netzwerkinterfaces:
... [chttpd]
;port = 5984
bind_address = 0.0.0.0
...
Neustarten des CouchDB-Dienstes
Starten Sie CouchDB neu, um die aktualisierten Konfigurationseinstellungen zu übernehmen:
$ sudo systemctl restart couchdb
Zugriff auf die Fauxton-Weboberfläche
Öffnen Sie einen Webbrowser und rufen Sie folgende URL auf. Ersetzen Sie dabei 192.0.2.1
durch die öffentliche IP-Adresse Ihres Servers:
http://192.0.2.1:5984/_utils/
Die Anmeldeseite von Fauxton sollte erscheinen.
In Fauxton anmelden
Geben Sie Ihren Benutzernamen (admin
) sowie Ihr Passwort (zum Beispiel EXAMPLE_PASSWORD
) ein. Klicken Sie anschließend auf Log In, um sich anzumelden. Danach werden Sie zum Dashboard von Fauxton weitergeleitet.
Verwaltung von CouchDB mit Fauxton
Mit der Fauxton-Oberfläche können Sie grundlegende Verwaltungsaufgaben durchführen, wie das Erstellen, Abrufen, Aktualisieren und Löschen von Datenbanken und Dokumenten.
Fazit
Diese Anleitung zeigte Ihnen Schritt für Schritt, wie Sie Apache CouchDB auf einem Ubuntu 20.04-Server installieren und einrichten. Weitere Informationen zu den Funktionen und Möglichkeiten von CouchDB finden Sie auf der offiziellen Website der Apache CouchDB.