Как установить CouchDB и Futon в Ubuntu 14.04

Вступление

Apache CouchDB, как и Redis, Cassandra и MongoDB, является базой данных NoSQL. CouchDB хранит данные в виде документов JSON, которые по своей природе не являются реляционными. Это позволяет пользователям CouchDB хранить данные способами, которые очень похожи на их реальных аналогов.

Вы можете управлять CouchDB из командной строки или из веб-интерфейса под названием Futon. Futon может использоваться для выполнения административных задач, таких как создание и управление базами данных, документами и пользователями для CouchDB.

цели

К концу этой статьи вы будете:

  • Установите CouchDB на Droplet под управлением Ubuntu 14.04

  • Установить Futon на тот же сервер

  • Обеспечили установку CouchDB

  • Получите доступ к CouchDB, используя Futon с вашего локального компьютера, используя безопасный туннель

  • Знать, как добавить пользователя с правами администратора в CouchDB

  • Выполнять операции CRUD с CouchDB, используя Futon

  • Выполните операции CRUD с CouchDB из командной строки

Предпосылки

Пожалуйста, заполните следующие условия:

Шаг 1 - Подготовка сервера

Прежде чем мы сможем установить CouchDB, мы должны убедиться, что сервер настроен для него.

Начните с обновления системы:

sudo apt-get update

Установите программное обеспечение, которое позволяет вам управлять исходными хранилищами:

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

Добавьте PPA, который поможет нам получить последнюю версию CouchDB из соответствующего репозитория:

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

Теперь, когда мы добавили новый PPA, давайте обновим систему, чтобы она имела самую последнюю информацию о пакете:

sudo apt-get update

Теперь мы готовы установить CouchDB и Futon.

Шаг 2 - Установка CouchDB

Если ранее на этом сервере была установлена ​​CouchDB, начните с удаления существующей версии:

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

Теперь установите CouchDB:

sudo apt-get install couchdb -y

Это установит CouchDB и Futon на ваш сервер.

По умолчанию CouchDB работает на * localhost * и использует порт * 5984 *. Вы можете получить эту основную информацию, запустив + curl + из командной строки:

curl localhost:5984

Вы должны получить что-то похожее на следующее:

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

Теперь вы можете создать новую базу данных с помощью команды + curl -X PUT +:

curl -X PUT localhost:5984/new_database

Результаты должны выглядеть так:

Output{"ok":true}

Шаг 3 - Защита установки CouchDB

По умолчанию некоторые файлы и каталоги, созданные при установке CouchDB, принадлежат пользователю и группе * root *. Хотя это хорошо (хотя и нежелательно) во время разработки, это может быть угрозой безопасности на производстве.

Когда CouchDB установлен, он создает пользователя и группу с именем * couchdb *. В этом разделе мы изменим владельца и права доступа к файлам CouchDB на пользователя и группу * couchdb *.

Изменение элементов управления владением what, к которому может получить доступ процесс CouchDB, и изменение элементов управления разрешениями who доступа к файлам и каталогам CouchDB.

Перед изменением владельца и разрешений остановите CouchDB:

sudo stop couchdb

Измените владельца каталогов + / usr / lib / couchdb +, + / usr / share / couchdb + и + / etc / couchdb + и исполняемого файла + / usr / bin / couchdb +, например что их владельцем является * couchdb *, и они принадлежат к группе * couchdb *.

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

Теперь измените права доступа к каталогам + / usr / lib / couchdb +, + / usr / share / couchdb + и + / etc / couchdb + и исполняемому файлу + / usr / bin / couchdb + так, что пользователь * couchdb * и группа * couchdb * имеют полный доступ (к установке CouchDB), в то время как другие пользователи не имеют доступа к этим файлам и каталогам.

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

Все, что осталось сделать, это перезапустить CouchDB:

sudo start couchdb

Теперь CouchDB должен быть запущен без каких-либо файлов или каталогов, принадлежащих либо пользователю * root *, либо группе * root *.

Шаг 4 - Доступ к Futon

CouchDB предлагает удобную веб-панель управления под названием Futon. Мы собираемся получить к нему доступ с вашей * локальной рабочей станции *, туннелируя трафик через соединение SSH с вашим сервером. Это означает, что только пользователи, имеющие SSH-логин на вашем сервере, могут получить доступ к панели управления Futon.

Чтобы безопасно подключиться к CouchDB, не делая его общедоступным, вы можете создать SSH-туннель от локального порта 5984 до порта 5984 удаленного сервера.

Вы можете использовать следующую команду, запущенную с вашего * локального компьютера *, для настройки туннеля:

ssh -L5984:127.0.0.1:5984 @

Пока соединение открыто, вы можете получить доступ к Futon из вашего любимого веб-браузера, используя порт 5984. Посетите этот URL, чтобы отобразить полезную страницу Futon:

http://localhost:5984/_utils

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/CYxH1GC.png [Скриншот домашней страницы Futon]

По умолчанию все пользователи CouchDB, имеющие доступ к Futon, делают это с правами администратора. Это объявлено в правом нижнем углу:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/hD4Pmx4.png [Добро пожаловать на вечеринку администратора! Каждый админ. Почини это]

Вы можете изменить это, нажав на небольшую ссылку * Fix this * и создав новых администраторов.

Шаг 5 - Добавление администратора

Теперь, когда у нас есть CouchDB, давайте начнем его использовать.

Перед созданием пользователя с правами администратора все пользователи могут получить доступ к CouchDB с правами администратора (хотя им сначала требуется SSH-доступ к серверу).

Рекомендуется создать учетную запись администратора для CouchDB, чтобы предотвратить случайную или несанкционированную потерю данных.

Для этого нажмите на ссылку * Fix this *, которая появляется в правом нижнем углу Futon. Откроется экран, который позволяет вам создать пользователя-администратора CouchDB, как показано ниже:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/VemRmsp.png [Экран создания пользователя администратора]

Введите желаемое имя пользователя и пароль:

image: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/bj6fHXw.png [Введите имя пользователя, например «admin», и пароль]

После ввода нового имени пользователя и безопасного пароля в CouchDB нажмите кнопку * Создать *. Это создаст нового администратора. Сообщение в правом нижнем углу Futon подтвердит это, показывая сообщение, подобное следующему:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/q91ytKn.png [Добро пожаловать, администратор! Настроить больше администраторов или Сменить пароль или Выйти]

Это оно! Наш сервер CouchDB полностью настроен.

Чтобы узнать больше об использовании базы данных, продолжайте читать.

Выполнение операций CRUD от Futon

Futon имеет очень простой, но полезный пользовательский интерфейс, который позволяет выполнять основные операции CRUD (создавать, читать, обновлять и удалять).

В этом разделе мы создадим новую базу данных с именем + todos +, добавим в нее новый документ, а затем получим, обновим и удалим этот документ.

Убедитесь, что у вас все еще открыт туннель SSH. Если нет, откройте ваше подключение к серверу с вашего * локального компьютера * с помощью этой команды:

ssh -L5984:127.0.0.1:5984 @

Давайте начнем с посещения страницы Futon по адресу + http: // localhost: 5984 / _utils / +.

Создать базу данных и документ

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/a2mVsjd.png [Futon Homepage]

Чтобы создать новую базу данных с именем + todos +, нажмите на ссылку * Create Database * на экране. Это вызовет диалог следующим образом:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/b7tzN2C.png [Новый диалог базы данных; введите имя базы данных]

Введите имя базы данных и нажмите кнопку * Создать *.

Это создаст новую базу данных с именем + todos + и перенаправит вас на страницу, где вы можете начать создавать и изменять документы во вновь созданной базе данных.

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/CJQo6up.png [страница базы данных "todos"]

  • Создать документ *

Чтобы создать новый документ, нажмите ссылку «Новый документ» на странице.

Это откроет экран с новым документом. Этот документ будет иметь только поле + _id +. Вы можете изменить значение этого поля, если вам нужно, или вы можете оставить его как есть.

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/ktFDUuS.png [Нажмите ссылку Добавить поле; дважды щелкните нулевое значение, чтобы обновить его]

Нажмите на ссылку * Добавить поле *, чтобы добавить новое поле в этот документ.

Как видно выше, мы добавили два поля с именами + todo + и + done +. По умолчанию новые поля имеют значение + null.

Дважды щелкните значение, чтобы изменить его.

В этом примере мы дважды щелкнули поля значений + todo + и + done + и ввели значения + Task 1 + и + false + соответственно.

После ввода значений либо нажмите клавишу + ENTER +, либо щелкните маленькую зеленую галочку рядом с полем, чтобы сохранить его содержимое. (Если этого не сделать, значение поля будет равно + null +.) Это должно выглядеть следующим образом:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/yBiUNZK.png [Создать и сохранить поле и значения]

Чтобы сохранить документ, нажмите ссылку * Сохранить документ *. После сохранения документа вы увидите, что поле + _rev + было добавлено к нему следующим образом:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/820r4Jb.png [поле _rev]

Читать документ

Нажмите на ссылку + todos + (в верхней панели рядом со ссылкой + Overview +), чтобы просмотреть только что созданный документ, как единственный документ в базе данных + todos +.

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/Bzq3136.png [Страница базы данных Todos]

Нажмите на ключ документа (идентификатор) в таблице, чтобы перейти на страницу сведений о документе.

Редактировать документ

На этой странице вы можете редактировать и обновлять поля документа следующим образом:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/9itT5Dt.png [Страница сведений о документе]

Чтобы изменить значение поля, дважды щелкните его и начните редактирование.

Вы можете удалить любое поле (кроме полей + _id + и + _rev +), добавить новые поля или изменить значения существующих полей. В этом примере мы изменили значение поля + done + с + false + на + true + следующим образом:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/hrQk7aj.png [Изменить значение поля: поле «done» с «false» на «true»]

После того, как вы будете удовлетворены изменениями, нажмите на ссылку * Сохранить документ *, чтобы обновить документ. Как только вы это сделаете, вы заметите, что значение поля + _rev + также было обновлено.

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/A95Xce2.png [Сохранить изменения]

Удалить документ

Чтобы удалить документ, вы можете щелкнуть ссылку * Удалить документ *, которая запросит подтверждение:

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/EHbvpVj.png [Вы уверены, что хотите удалить этот документ?]

Подтвердите нажатием кнопки * Удалить *.

Futon удалит документ и переместит вас на страницу базы данных + todos +, которая теперь должна быть пустой, подтверждая, что документ действительно был удален.

изображение: https: //assets.digitalocean.com/articles/couchdb-ubuntu1404/CJQo6up.png [Страница базы данных Todos]

Выполнение операций CRUD из командной строки

В этом разделе будет показано, как мы можем выполнять базовые операции CRUD (создание, чтение, обновление и удаление) над базой данных CouchDB из командной строки, используя + curl +.

Убедитесь, что у вас все еще открыт туннель SSH. Если нет, откройте ваше подключение к серверу с вашего * локального компьютера * с помощью этой команды:

ssh -L5984:127.0.0.1:5984 @

Создать базу данных

Если вы еще не создали базу данных + new_database +, сделайте это сейчас. Эта команда должна быть выполнена с вашей * локальной рабочей станции *:

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

Поскольку мы добавили пользователя-администратора в CouchDB, теперь мы должны отправить имя пользователя и пароль администратора при создании новой базы данных.

Результаты должны выглядеть так:

Output{"ok":true}

Создать документ

Давайте начнем с создания нового документа.

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

Эта команда создает новый документ в базе данных + new_database +.

Флаг + -X + указывает, что мы выполняем операцию HTTP POST. Флаг + -H +, за которым следует заголовок, устанавливает тип содержимого этого запроса как + application / json +, поскольку мы размещаем документ JSON. Наконец, сам документ JSON включен вместе с флагом + -d +.

Ответ этой операции следующий:

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

+" Ok ": true + часть этого ответа указывает на то, что операция прошла успешно. Ответ включает в себя поля + id + и + rev +, которые представляют идентификатор документа и редакцию документа соответственно. Оба эти поля будут обязательны в случае, если этот документ необходимо изменить или удалить.

В этом примере идентификатор документа был сгенерирован CouchDB, потому что мы не предоставили его команде. При необходимости мы можем создать документ с уникальным идентификатором, который мы сгенерировали.

  • Создать с указанным идентификатором *

Создайте документ с идентификатором + random_task +:

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

Эта команда создает новый документ с идентификатором, установленным в + random_task +. Ответ на эту команду следующий:

Output{"ok":true,"id":"random_task","rev":""}
  • Создание нескольких документов *

Помимо создания отдельных документов, мы также можем создавать документы оптом.

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"

Эта команда создаст два документа, как указано в теле POST. Есть два небольших различия по сравнению со вставками с одним документом:

  1. При вставке одного документа тело POST было просто стандартным объектом JSON. В случае массовых вставок тело POST содержит объект с полем + docs +. Это поле содержит массив документов, которые должны быть вставлены.

  2. При вставке одного документа запрос POST был отправлен на URL-адрес, указывающий на базу данных (+ http: // localhost: 5984 / new_database +). Однако запрос на массовую вставку отправляет POST по URL-адресу + http: // localhost: 5984 / new_database / _bulk_docs +.

Ответ операции массовой вставки выглядит следующим образом:

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

Читать документ

Извлечение документа из базы данных CouchDB - это простой вызов команды HTTP GET. Давайте попробуем получить один из документов, который мы создали выше: тот, который называется + random_task +.

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

Обратите внимание, что URL содержит идентификатор (+ random_task +) документа, который извлекается. Ответ на этот запрос GET, как показано ниже, содержит весь документ вместе с полями + _id + и + _rev +, которые можно использовать для обновления или удаления этого документа.

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

Редактировать документ

При попытке обновить документ важно включить поле + _rev +. CouchDB отклонит любой запрос на обновление, который не содержит поля + _rev +. Поскольку CouchDB обновляет весь документ, а не только его части, весь документ должен быть отправлен в теле запроса во время операции обновления.

Чтобы обновить документ, который был создан с идентификатором + random_task +, нам нужно выполнить запрос HTTP PUT следующим образом:

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

Обязательно замените значение + _rev + на строку, полученную в предыдущем выводе.

Это изменяет документ и обновляет поле + done + до + true +. Ответ на этот запрос следующий:

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

Как видно из ответа, поле + rev + для этого конкретного документа изменяется после его обновления. Любой будущий запрос на обновление или удаление этого документа теперь должен будет использовать новейшее значение + rev +.

Удалить документ

Давайте используем это новое значение + rev +, чтобы удалить этот документ, используя HTTP-запрос DELETE, следующим образом:

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

Как и запросы GET & PUT выше, запрос DELETE использует URL-адрес, указывающий на документ. Тем не менее, он также включает в себя дополнительный параметр запроса в URL. Этот параметр + rev + должен иметь самое последнее значение + _rev +, чтобы операция удаления была успешной.

В этом конкретном случае мы используем значение, которое было возвращено после операции обновления на предыдущем шаге. Ответ на вышеуказанный запрос показан ниже.

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

Перезапуск, остановка и запуск службы CouchDB

Запуск, остановка и перезапуск сервиса CouchDB довольно прост. Выполните эти шаги с * сервера *.

Запустить снова

Чтобы перезапустить работающий экземпляр CouchDB, выполните следующую команду:

sudo restart couchdb

Эта команда перезапустит работающий экземпляр CouchDB и отобразит идентификатор процесса нового экземпляра. Если экземпляр CouchDB не запущен, выполнение этой команды выдаст сообщение

Outputrestart: Unknown instance:

Stop

Чтобы остановить работающий экземпляр CouchDB, выполните следующую команду:

sudo stop couchdb

Выполнение этой команды остановит любой работающий экземпляр CouchDB и предоставит подтверждающее сообщение, подобное этому:

Outputcouchdb stop/waiting

Начните

Чтобы запустить CouchDB, выполните следующую команду:

sudo start couchdb

Если CouchDB еще не запущен, выполнение этой команды запустит CouchDB и выдаст подтверждающее сообщение, например:

Outputcouchdb start/running, process 12345

С другой стороны, если уже был запущен экземпляр CouchDB, то выполнение вышеуказанной команды приведет к появлению такого сообщения:

Outputstart: Job is already running: couchdb

Статус

Если вы хотите проверить состояние CouchDB, вы можете сделать это с помощью следующей команды:

sudo status couchdb

Если CouchDB работает, это выдаст сообщение, подобное следующему:

Outputcouchdb start/running, process 12345

Если CouchDB не запущен, проверка состояния приведет к чему-то вроде:

Outputcouchdb stop/waiting

Заключение

Теперь у вас есть полностью функциональная настройка CouchDB на вашей Droplet, которую вы можете безопасно администрировать с локального компьютера, используя Futon или командную строку.

Related