So installieren Sie CouchDB und Futon unter Ubuntu 14.04

Einführung

Apache CouchDB ist wie Redis, Cassandra und MongoDB eine NoSQL-Datenbank. CouchDB speichert Daten als nicht relationale JSON-Dokumente. Auf diese Weise können Benutzer von CouchDB Daten so speichern, dass sie denen in der realen Welt sehr ähnlich sehen.

Sie können CouchDB über die Befehlszeile oder über eine Webschnittstelle namens Futon verwalten. Mit Futon können administrative Aufgaben wie das Erstellen und Bearbeiten von Datenbanken, Dokumenten und Benutzern für CouchDB ausgeführt werden.

Tore

Am Ende dieses Artikels werden Sie:

  • Habe CouchDB auf einem Droplet installiert, auf dem Ubuntu 14.04 läuft

  • Habe Futon auf dem selben Server installiert

  • Habe die CouchDB Installation gesichert

  • Greifen Sie mit Futon über einen sicheren Tunnel von Ihrem lokalen Computer aus auf CouchDB zu

  • Wissen, wie man einen Administrator zu CouchDB hinzufügt

  • Führen Sie CRUD-Operationen mit CouchDB unter Verwendung von Futon durch

  • Führen Sie CRUD-Operationen mit CouchDB über die Befehlszeile aus

Voraussetzungen

Bitte erfüllen Sie folgende Voraussetzungen:

Schritt 1 - Vorbereiten des Servers

Bevor wir CouchDB installieren können, müssen wir sicherstellen, dass der Server dafür eingerichtet ist.

Beginnen Sie mit der Aktualisierung des Systems:

sudo apt-get update

Installieren Sie die Software, mit der Sie die Quellrepositorys verwalten können:

sudo apt-get install software-properties-common -y

Fügen Sie die PPA hinzu, mit deren Hilfe wir die neueste CouchDB-Version aus dem entsprechenden Repository abrufen können:

sudo add-apt-repository ppa:couchdb/stable -y

Nachdem wir eine neue PPA hinzugefügt haben, aktualisieren wir das System, damit es die neuesten Paketinformationen enthält:

sudo apt-get update

Jetzt können Sie CouchDB und Futon installieren.

Schritt 2 - CouchDB installieren

Wenn Sie CouchDB zuvor auf diesem Server installiert hatten, entfernen Sie zunächst die vorhandene Version:

sudo apt-get remove couchdb couchdb-bin couchdb-common -yf

Installieren Sie jetzt CouchDB:

sudo apt-get install couchdb -y

Dadurch werden CouchDB und Futon auf Ihrem Server installiert.

Standardmäßig wird CouchDB auf * localhost * ausgeführt und verwendet den Port * 5984 *. Sie können diese grundlegenden Informationen abrufen, indem Sie "+ curl +" in der Befehlszeile ausführen:

curl localhost:5984

Sie sollten etwas Ähnliches wie das Folgende erhalten:

Output{"couchdb":"Welcome","uuid":"b9f278c743b5fc0b971c4e587d77582e","version":"1.6.1","vendor":{"name":"Ubuntu","version":"14.04"}}

Sie können jetzt eine neue Datenbank mit dem Befehl + curl -X PUT + erstellen:

curl -X PUT localhost:5984/new_database

Die Ergebnisse sollten folgendermaßen aussehen:

Output{"ok":true}

Schritt 3 - Sichern der CouchDB-Installation

Standardmäßig gehören einige der Dateien und Verzeichnisse, die bei der Installation von CouchDB erstellt werden, dem Benutzer und der Gruppe * root *. Dies ist zwar in Ordnung (wenn auch nicht ratsam) während der Entwicklung, könnte jedoch ein Sicherheitsrisiko in der Produktion darstellen.

Bei der Installation von CouchDB werden ein Benutzer und eine Gruppe mit dem Namen * couchdb * erstellt. In diesem Abschnitt ändern wir den Besitz und die Berechtigung der CouchDB-Dateien für den Benutzer und die Gruppe * couchdb *.

Ändern der Besitzsteuerelemente, auf die der CouchDB-Prozess zugreifen kann, und Ändern der Berechtigungssteuerelemente, die auf die CouchDB-Dateien und -Verzeichnisse zugreifen können.

Beenden Sie CouchDB, bevor Sie Eigentümer und Berechtigungen ändern:

sudo stop couchdb

Ändern Sie den Besitz der Verzeichnisse "+ / usr / lib / couchdb ", " / usr / share / couchdb " und " / etc / couchdb " und der ausführbaren Datei " / usr / bin / couchdb +", z dass ihr Besitzer * couchdb * ist und sie zur Gruppe * couchdb * gehören.

sudo chown -R couchdb:couchdb /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

Ändern Sie nun die Berechtigungen der Verzeichnisse "+ / usr / lib / couchdb ", " / usr / share / couchdb " und " / etc / couchdb " und der ausführbaren Datei " / usr / bin / couchdb +" , so dass der Benutzer * couchdb * und die Gruppe * couchdb * vollständigen Zugriff (auf die CouchDB-Installation) haben, während kein anderer Benutzer Zugriff auf diese Dateien und Verzeichnisse hat.

sudo chmod -R 0770 /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

Sie müssen CouchDB nur noch neu starten:

sudo start couchdb

CouchDB sollte nun ohne Dateien oder Verzeichnisse des Benutzers * root * oder der Gruppe * root * ausgeführt werden können.

Schritt 4 - Zugriff auf Futon

CouchDB bietet ein praktisches webbasiertes Control Panel namens Futon. Wir werden von Ihrer * lokalen * Workstation darauf zugreifen und den Datenverkehr über eine SSH-Verbindung zu Ihrem Server tunneln. Dies bedeutet, dass nur Benutzer mit einem SSH-Login auf Ihrem Server auf das Futon-Kontrollfeld zugreifen können.

Um eine sichere Verbindung zu CouchDB herzustellen, ohne diese öffentlich verfügbar zu machen, können Sie einen SSH-Tunnel von Ihrem lokalen Port 5984 zum Port 5984 des Remote-Servers erstellen.

Sie können den folgenden Befehl verwenden, der von Ihrem * lokalen Computer * ausgeführt wird, um den Tunnel einzurichten:

ssh -L5984:127.0.0.1:5984 @

Während die Verbindung geöffnet ist, können Sie über Port 5984 von Ihrem bevorzugten Webbrowser aus auf Futon zugreifen. Besuchen Sie diese URL, um die hilfreiche Futon-Seite anzuzeigen:

http://localhost:5984/_utils

Standardmäßig tun dies alle CouchDB-Benutzer, die auf Futon zugreifen, mit Administratorrechten. Dies wird in der unteren rechten Ecke angekündigt:

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/hD4Pmx4.png [Willkommen bei der Admin Party! Jeder ist Administrator. Repariere das]

Sie können dies ändern, indem Sie auf den kleinen Link * Fix this * klicken und neue Administratoren erstellen.

Schritt 5 - Hinzufügen eines Admin-Benutzers

Nachdem wir CouchDB eingerichtet haben, können wir es verwenden.

Bevor ein Administrator erstellt wird, können alle Benutzer mit Administratorrechten auf CouchDB zugreifen (obwohl sie zuerst einen SSH-Zugriff auf den Server benötigen).

Es wird empfohlen, ein Administratorkonto für CouchDB zu erstellen, um versehentlichen oder unbefugten Datenverlust zu vermeiden.

Klicken Sie dazu auf den Link * Fix this *, der in der unteren rechten Ecke von Futon angezeigt wird. Daraufhin wird ein Bildschirm angezeigt, in dem Sie einen CouchDB-Administrator wie folgt erstellen können:

image: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/VemRmsp.png [Admin User Creation Screen]

Geben Sie den gewünschten Benutzernamen und das Passwort ein:

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/bj6fHXw.png [Geben Sie einen Benutzernamen wie "admin" und ein Passwort ein]

Nachdem Sie Ihren neuen CouchDB-Benutzernamen und ein sicheres Passwort eingegeben haben, klicken Sie auf die Schaltfläche * Erstellen *. Dadurch wird der neue Administrator erstellt. Die Meldung in der unteren rechten Ecke von Futon bestätigt dies durch eine Meldung, die der folgenden ähnelt:

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/q91ytKn.png [Willkommen, Admin! Weitere Administratoren einrichten oder Passwort ändern oder Abmelden]

Das ist es! Unser CouchDB-Server ist jetzt vollständig konfiguriert.

Lesen Sie weiter, um mehr über die Verwendung der Datenbank zu erfahren.

CRUD-Operationen von Futon aus ausführen

Futon hat eine sehr einfache, aber nützliche Benutzeroberfläche, mit der Sie grundlegende CRUD-Operationen ausführen können (Erstellen, Lesen, Aktualisieren und Löschen).

In diesem Abschnitt erstellen wir eine neue Datenbank mit dem Namen "+ todos +", fügen ihr ein neues Dokument hinzu und rufen dieses Dokument ab, aktualisieren und löschen es.

Stellen Sie sicher, dass Ihr SSH-Tunnel noch geöffnet ist. Wenn nicht, öffnen Sie Ihre Verbindung zum Server von Ihrem * lokalen Computer * mit dem folgenden Befehl:

ssh -L5984:127.0.0.1:5984 @

Beginnen wir mit dem Besuch der Futon-Seite unter "+ http: // localhost: 5984 / _utils / +".

Erstellen Sie eine Datenbank und ein Dokument

Um eine neue Datenbank mit dem Namen "+ todos +" zu erstellen, klicken Sie auf den Link "Datenbank erstellen" auf dem Bildschirm. Dies öffnet einen Dialog wie folgt:

Bild: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/b7tzN2C.png [Neuer Datenbankdialog; Datenbankname eingeben]

Geben Sie den Namen der Datenbank ein und klicken Sie auf die Schaltfläche * Erstellen *.

Dadurch wird eine neue Datenbank mit dem Namen "+ todos +" erstellt und Sie gelangen zu einer Seite, auf der Sie Dokumente in der neu erstellten Datenbank erstellen und bearbeiten können.

  • Dokument erstellen *

Um ein neues Dokument zu erstellen, klicken Sie auf der Seite auf den Link * Neues Dokument *.

Dies öffnet einen Bildschirm mit einem neuen Dokument. Dieses Dokument enthält nur das Feld "+ _id +". Sie können den Wert dieses Feldes bei Bedarf ändern oder so lassen, wie er ist.

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/ktFDUuS.png [Klicken Sie auf den Link Feld hinzufügen. Doppelklicken Sie auf den Nullwert, um ihn zu aktualisieren.]

Klicken Sie auf den Link * Feld hinzufügen *, um diesem Dokument ein neues Feld hinzuzufügen.

Wie oben zu sehen ist, haben wir zwei Felder mit den Namen "+ todo " und " done " hinzugefügt. Standardmäßig haben neue Felder den Wert " null".

Doppelklicken Sie auf den Wert, um ihn zu ändern.

In diesem Beispiel haben wir die Wertefelder von "+ todo " und " done " doppelt angeklickt und die Werte " Task 1 " und " false +" eingegeben.

Nachdem Sie die Werte eingegeben haben, drücken Sie entweder die Taste "+ ENTER " oder klicken Sie auf das kleine grüne Häkchen neben dem Feld, um dessen Inhalt zu speichern. (Andernfalls wird der Wert des Feldes als " null +" belassen.) Dies sollte folgendermaßen aussehen:

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/yBiUNZK.png [Erstellen und Speichern von Feldern und Werten]

Klicken Sie zum Speichern des Dokuments auf den Link * Dokument speichern *. Nachdem das Dokument gespeichert wurde, sehen Sie, dass ein "+ _rev +" - Feld wie folgt hinzugefügt wurde:

Lesen Sie ein Dokument

Klicken Sie auf den Link "+ Aufgaben " (in der oberen Leiste neben dem Link " Übersicht "), um das neu erstellte Dokument als einziges Dokument in der Datenbank " Aufgaben +" anzuzeigen.

Klicken Sie in der Tabelle auf den Schlüssel des Dokuments (die ID), um auf die Seite mit den Dokumentdetails zuzugreifen.

Bearbeiten Sie ein Dokument

Auf dieser Seite können Sie die Dokumentfelder wie folgt bearbeiten und aktualisieren:

Um einen Feldwert zu bearbeiten, doppelklicken Sie darauf und beginnen Sie mit der Bearbeitung.

Sie können jedes Feld (mit Ausnahme der Felder "+ _id " und " _rev ") löschen, neue Felder hinzufügen oder die Werte vorhandener Felder ändern. In diesem Beispiel haben wir den Wert des Feldes " done " wie folgt von " false " in " true +" geändert:

image: https://assets.digitalocean.com/articles/couchdb-ubuntu1404/hrQk7aj.png [Feldwert ändern: Feld "erledigt" von "falsch" in "wahr"]

Wenn Sie mit den Änderungen zufrieden sind, klicken Sie auf den Link * Save Document * (Dokument speichern), um das Dokument zu aktualisieren. Sobald Sie dies tun, werden Sie feststellen, dass der Wert des Felds "+ _rev +" ebenfalls aktualisiert wurde.

Ein Dokument löschen

Um ein Dokument zu löschen, klicken Sie auf den Link * Dokument löschen *, um zur Bestätigung aufzufordern:

image: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/EHbvpVj.png [Möchten Sie dieses Dokument wirklich löschen?]

Bestätigen Sie mit der Taste * Löschen *.

Futon löscht das Dokument und führt Sie zur Datenbankseite "+ todos +", die jetzt leer sein sollte, um zu bestätigen, dass das Dokument tatsächlich gelöscht wurde.

CRUD-Operationen über die Befehlszeile ausführen

In diesem Abschnitt wird erläutert, wie Sie grundlegende CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) für eine CouchDB-Datenbank über die Befehlszeile mit "+ curl +" ausführen können.

Stellen Sie sicher, dass Ihr SSH-Tunnel noch geöffnet ist. Wenn nicht, öffnen Sie Ihre Verbindung zum Server von Ihrem * lokalen Computer * mit dem folgenden Befehl:

ssh -L5984:127.0.0.1:5984 @

Erstellen Sie eine Datenbank

Wenn Sie die Datenbank "+ new_database +" noch nicht erstellt haben, tun Sie dies jetzt. Dieser Befehl sollte von Ihrer * lokalen Arbeitsstation * ausgeführt werden:

curl -X PUT http://localhost:5984/new_database -u "admin:password"
{"ok":true}

Da wir CouchDB einen Administrator hinzugefügt haben, müssen wir jetzt den Administrator-Benutzernamen und das Kennwort senden, wenn wir eine neue Datenbank erstellen.

Die Ergebnisse sollten folgendermaßen aussehen:

Output{"ok":true}

Erstellen Sie ein Dokument

Beginnen wir mit der Erstellung eines neuen Dokuments.

curl -X POST -d '{"todo":"task 1", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

Dieser Befehl erstellt ein neues Dokument in der Datenbank + new_database +.

Das "+ -X " - Flag zeigt an, dass eine HTTP-POST-Operation ausgeführt wird. Das ` -H ` Flag, gefolgt vom Header, setzt den Inhaltstyp dieser Anfrage auf ` application / json `, da wir ein JSON-Dokument veröffentlichen. Schließlich ist das JSON-Dokument selbst enthalten, zusammen mit dem Flag " -d +".

Die Antwort dieser Operation lautet wie folgt:

Output{"ok":true,"id":"803da996e1524591ce773d24400004ff","rev":"1-2fc1d70532433c39c9f61480607e3681"}

Der Teil "" ok ": true +" dieser Antwort zeigt an, dass die Operation erfolgreich war. Die Antwort enthält die Felder " id " und " rev +", die die Dokument-ID bzw. die Dokument-Revision darstellen. Beide Felder sind erforderlich, wenn dieses Dokument geändert oder gelöscht werden muss.

In diesem Beispiel wurde die Dokument-ID von CouchDB generiert, da wir sie nicht mit dem Befehl geliefert haben. Bei Bedarf können wir ein Dokument mit einer eindeutigen ID erstellen, die wir generiert haben.

  • Mit angegebener ID erstellen *

Erstellen Sie ein Dokument mit der ID + random_task +:

curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

Dieser Befehl erstellt ein neues Dokument mit der ID "+ random_task +". Die Antwort auf diesen Befehl lautet wie folgt:

Output{"ok":true,"id":"random_task","rev":""}
  • Mehrere Dokumente erstellen *

Neben der Erstellung einzelner Dokumente können wir auch Dokumente in großen Mengen erstellen.

curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' http://localhost:5984/new_database/_bulk_docs -H "Content-Type:application/json"

Dieser Befehl erstellt zwei Dokumente, wie im POST-Body angegeben. Im Vergleich zu den Einzelbeilagen gibt es zwei geringfügige Unterschiede:

  1. Beim Einfügen eines einzelnen Dokuments war der POST-Body nur ein Standard-JSON-Objekt. Bei Bulk-Einfügungen besteht der POST-Body aus einem Objekt mit einem Feld "+ docs +". Dieses Feld enthält das Array der Dokumente, die eingefügt werden sollen.

  2. Beim Einfügen eines einzelnen Dokuments wurde die POST-Anforderung an die URL gesendet, die auf die Datenbank verweist (+ http: // localhost: 5984 / new_database +). Die Anforderung für Masseneinfügungen sendet jedoch POSTs an die URL + http: // localhost: 5984 / new_database / _bulk_docs +.

Die Reaktion der Masseneinfügungsoperation lautet wie folgt:

Output[{"ok":true,"id":"803da996e1524591ce773d24400007df","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"803da996e1524591ce773d2440001723","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]

Lesen Sie ein Dokument

Das Abrufen eines Dokuments aus einer CouchDB-Datenbank ist ein einfacher Vorgang, bei dem ein HTTP-GET-Befehl ausgegeben wird. Versuchen wir, eines der oben erstellten Dokumente abzurufen: das mit dem Namen "+ random_task +".

curl -X GET http://localhost:5984/new_database/random_task

Beachten Sie, dass die URL die ID (+ random_task +) des Dokuments enthält, das abgerufen wird. Die Antwort auf diese GET-Anforderung enthält, wie unten gezeigt, das gesamte Dokument sowie die Felder "+ _id " und " _rev +", mit denen dieses Dokument aktualisiert oder gelöscht werden kann.

Output{"_id":"random_task","_rev":"","todo":"task 2","done":false}

Bearbeiten Sie ein Dokument

Beim Versuch, ein Dokument zu aktualisieren, ist es wichtig, das Feld "+ _rev " einzuschließen. CouchDB lehnt jede Aktualisierungsanforderung ab, die kein " _rev +" - Feld enthält. Da CouchDB das gesamte Dokument und nicht nur Teile davon aktualisiert, muss das gesamte Dokument während eines Aktualisierungsvorgangs im Anforderungshauptteil gesendet werden.

Um das mit der ID "+ random_task +" erstellte Dokument zu aktualisieren, müssen Sie eine HTTP-PUT-Anforderung wie folgt absetzen:

curl -X PUT -d '{"_rev":"", "todo":"task 2", "done":true}' http://localhost:5984/new_database/random_task

Achten Sie darauf, den Wert "+ _rev +" durch die Zeichenfolge zu ersetzen, die Sie in der vorherigen Ausgabe erhalten haben.

Dadurch wird das Dokument geändert und das Feld "+ erledigt " in " wahr +" aktualisiert. Die Antwort auf diese Anfrage lautet wie folgt:

Output{"ok":true,"id":"random_task","rev":""}

Wie in der Antwort zu sehen ist, ändert sich das Feld "+ rev " für dieses bestimmte Dokument, nachdem es aktualisiert wurde. Bei zukünftigen Anfragen zur Aktualisierung oder Löschung dieses Dokuments muss jetzt der neueste Wert " rev +" verwendet werden.

Ein Dokument löschen

Verwenden Sie diesen neuen "+ rev +" - Wert, um dieses Dokument mithilfe einer HTTP-DELETE-Anforderung wie folgt zu löschen:

curl -X DELETE http://localhost:5984/new_database/random_task?rev=

Genau wie die obigen GET & PUT-Anforderungen verwendet die DELETE-Anforderung die URL, die auf das Dokument verweist. Es enthält jedoch auch einen zusätzlichen Abfrageparameter in der URL. Dieser Parameter "+ rev " sollte den neuesten " _rev +" - Wert haben, damit der Löschvorgang erfolgreich ist.

In diesem speziellen Fall verwenden wir den Wert, der nach dem Aktualisierungsvorgang im vorherigen Schritt zurückgegeben wurde. Die Antwort auf die obige Anfrage ist unten gezeigt.

Output{"ok":true,"id":"random_task","rev":""}

Neustarten, Beenden und Starten des CouchDB-Dienstes

Das Starten, Stoppen und Neustarten des CouchDB-Dienstes ist ganz einfach. Führen Sie diese Schritte vom * Server * aus.

Neustart

Führen Sie den folgenden Befehl aus, um eine laufende CouchDB-Instanz neu zu starten:

sudo restart couchdb

Dieser Befehl startet eine laufende CouchDB-Instanz neu und zeigt die Prozess-ID der neuen Instanz an. Falls keine Instanz von CouchDB ausgeführt wird, wird bei Ausführung dieses Befehls eine Meldung wie folgt ausgegeben

Outputrestart: Unknown instance:

Stop

Führen Sie den folgenden Befehl aus, um eine laufende CouchDB-Instanz zu stoppen:

sudo stop couchdb

Wenn Sie diesen Befehl ausführen, werden alle laufenden CouchDB-Instanzen gestoppt und eine Bestätigungsmeldung wie die folgende angezeigt:

Outputcouchdb stop/waiting

Anfang

Führen Sie den folgenden Befehl aus, um CouchDB zu starten:

sudo start couchdb

Wenn CouchDB noch nicht ausgeführt wurde, wird durch Ausführen dieses Befehls CouchDB gestartet und eine Bestätigungsmeldung wie die folgende angezeigt:

Outputcouchdb start/running, process 12345

Wenn andererseits bereits eine CouchDB-Instanz ausgeführt wurde, führt die Ausführung des obigen Befehls zu einer Meldung wie der folgenden:

Outputstart: Job is already running: couchdb

Status

Wenn Sie den Status von CouchDB überprüfen möchten, können Sie dies mit dem folgenden Befehl tun:

sudo status couchdb

Wenn CouchDB ausgeführt wird, wird eine Meldung angezeigt, die der folgenden ähnelt:

Outputcouchdb start/running, process 12345

Wenn CouchDB nicht ausgeführt wird, führt die Überprüfung des Status zu folgenden Ergebnissen:

Outputcouchdb stop/waiting

Fazit

Sie haben jetzt ein voll funktionsfähiges Setup von CouchDB auf Ihrem Droplet, das Sie sicher von Ihrem lokalen Computer aus mit Futon oder der Befehlszeile verwalten können.