Поиск по сайту:

Как установить сервер базы данных Apache CouchDB NoSQL на Debian 11


На этой странице

  1. Предпосылки
  2. Шаг 1. Установите утилиты
  3. Шаг 2. Добавьте репозиторий CouchDB
  4. Шаг 3. Установите CouchDB
  5. Шаг 4. Проверка установки CouchDB
  6. Шаг 5. Доступ к CouchDB
  7. Шаг 6. Основные операции с базой данных с использованием интерфейса CouchDB
    1. Создать базу данных
    2. Создать документ
    3. Удалить документ

    1. Создать базу данных
    2. Создать документ
    3. Групповое создание документов
    4. Читать документ
    5. Редактировать документ
    6. Удалить документ
    7. Просмотр данных

    Apache CouchDB — это база данных NoSQL с открытым исходным кодом, разработанная Apache Software Foundation. Каждая база данных представляет собой набор документов в формате JSON. Каждый документ состоит из ряда полей и вложений. Он поставляется с спокойным API, который позволяет создавать, редактировать и удалять документы базы данных. Он поддерживает два режима — автономный и кластерный. Если вы используете его на одном сервере, вы можете использовать автономный режим. Кластерный режим помогает, если вы используете более одного сервера.

    В этом руководстве вы узнаете, как установить сервер базы данных Apache CouchDB на сервер Debian 11. Вы также узнаете, как выполнять некоторые основные операции с базой данных и получать доступ к CouchDB через общедоступный URL-адрес с помощью веб-сервера Caddy.

    Предпосылки

    • A server running Debian 11.

    • Sudo package is installed.

      $ apt install sudo
      
    • A non-root user with sudo privileges.

    • Everything is updated.

      $ sudo apt update && sudo apt upgrade
      
    • A fully qualified domain name (FQDN), like, couchdb.example.com to access CouchDB over a public URL with HTTPS.

    Шаг 1 - Установите утилиты

    Прежде чем приступить к установке, нам нужно установить некоторые инструменты, которые потребуются для обучения. Выполните следующую команду, чтобы установить их.

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

    Шаг 2 — Добавьте репозиторий CouchDB

    Первый шаг — импортировать GPG-ключ CouchDB. Выполните следующую команду, чтобы импортировать ключ.

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

    Добавьте репозиторий CouchDBs в список системных репозиториев.

    $ 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
    

    Обновите список системных репозиториев.

    $ sudo apt update
    

    Шаг 3 — Установите CouchDB

    Выполните следующую команду, чтобы установить CouchDB.

    $ sudo apt install couchdb -y
    

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

    Далее вам будет предложено установить имя файла cookie. Выберите любое имя, которое вы хотите.

    Далее вам будет предложено настроить адрес привязки для службы CouchDB. Поскольку мы устанавливаем его на сервер и нам потребуется доступ к нему через панель управления пользовательского интерфейса, установите 0.0.0.0 в качестве адреса привязки. Если вы планируете ограничить доступ к серверу CouchDB IP-адресом, используйте его.

    Далее вам будет предложено создать пароль администратора для своей учетной записи администратора по умолчанию.

    Вам будет предложено подтвердить пароль еще раз.

    Нажмите Enter, чтобы завершить процесс установки.

    Шаг 4 — Проверка установки CouchDB

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

    $ curl http://127.0.0.1:5984/
    

    Он вернет выходные данные в формате JSON с информацией о CouchDB.

    {"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"}}
    

    Вывод оболочки неформатирован. Вот как это выглядит при форматировании.

    {
       "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"
       }
    }
    

    Вы также можете получить к нему доступ через Интернет, посетив URL-адрес http://:5984/. Но прежде чем мы это сделаем, нам нужно открыть порт в нашем брандмауэре. Предполагая, что вы используете Uncomplicated Firewall (ufw), выполните следующую команду, чтобы открыть порт.

    $ sudo ufw allow 5984/tcp
    

    Откройте URL-адрес http://:5984 в браузере. Вы увидите следующий экран. Следующий вывод был получен в Firefox. В других браузерах вы просто увидите необработанный вывод, который вы получили в своем терминале.

    Шаг 5 — Доступ к CouchDB

    CouchDB поставляется с графическим веб-интерфейсом под названием Fauxton для управления и создания баз данных. Вы можете получить к нему доступ через URL-адрес http://:5984/_utils/. Запустите URL-адрес в своем любимом браузере, и вы увидите следующий экран входа в систему.

    Введите admin в качестве имени пользователя и пароль, созданный ранее. Нажмите кнопку Войти, чтобы продолжить. Далее вы попадете на панель инструментов CouchDB.

    Здесь вы увидите две базы данных, которые были созданы во время установки. База данных _users, как и ожидалось, обрабатывает информацию о пользователях платформы CouchDB, а база данных _replicator содержит информацию о любых базах данных или операциях репликации.

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

    Шаг 6 — Основные операции с базой данных с использованием интерфейса CouchDB

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

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

    Чтобы создать новую базу данных, щелкните ссылку «Создать базу данных» на главном экране. Откроется следующее всплывающее окно.

    Введите имя базы данных, которую вы хотите создать, и нажмите кнопку «Создать».

    Это создаст новую базу данных и откроет следующий экран.

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

    Теперь, когда у нас есть база данных, давайте создадим в ней документ. Нажмите кнопку «Создать документ», чтобы начать. Вы получите следующий новый экран документа, предварительно заполненный объектом JSON и _id с глобальным уникальным идентификатором (GUID).

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

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

    Нажмите кнопку «Создать документ», когда закончите добавлять поля, чтобы сохранить новый документ. Вы вернетесь на следующую страницу «Все документы».

    Чтобы просмотреть содержимое документов, вы можете щелкнуть ссылку {} JSON.

    Чтобы отредактировать документ, вы можете щелкнуть значок карандаша, показанный справа, или вернуться к представлению «Метаданные» и щелкнуть ссылку документа. Измените значения любого из элементов и нажмите «Сохранить документ», чтобы завершить его.

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

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

    Шаг 7. Основные операции с базой данных с использованием командной строки

    Хотя использование веб-интерфейса является более простым способом использования CouchDB, большей эффективности можно добиться, выполняя те же операции через командную строку.

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

    Прежде чем мы приступим к созданию нашей базы данных, давайте определим переменную для URL-адреса для подключения. В наших примерах мы будем использовать простую текстовую аутентификацию. Поскольку нам нужно будет аутентифицировать каждую команду, лучше использовать для нее предопределенную переменную. Вы можете использовать localhost или 127.0.0.1 для подключения к установке CouchDB.

    $ HOST="http://admin::5984"
    

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

    Теперь, когда мы определили URL-адрес хоста, давайте попробуем создать другую базу данных, используя следующую команду.

    $ curl -X PUT $HOST/another_db
    

    Имя базы данных — another_db. И нам нужно указать пароль администратора для команды.

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

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

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

    Флаг -X указывает, что мы выполняем операцию HTTP POST. Флаг -H указывает, какой тип контента мы отправляем, который здесь является JSON. И флаг -d указывает фактическое содержимое JSON, которое мы добавляем.

    Приведенная выше команда автоматически сгенерирует идентификатор для документа. Он сгенерирует следующий вывод, говорящий об успешном выполнении команды.

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

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

    $ 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"}
    

    Массовое создание документов

    Вы также можете добавлять документы оптом.

    $ 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"
    

    Как видите, когда мы вставляем несколько документов, тело POST содержит объект с полем docs. Это поле содержит массив документов для вставки в базу данных. При вставке одного документа запрос POST был отправлен в базу данных ($HOST/another_db). Но когда нам нужно вставить несколько документов, запрос должен быть отправлен по URL-адресу $HOST/another_db/_bulk_docs.

    Вы получите аналогичный результат.

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

    Здесь вы можете видеть, что выходные данные содержат идентификаторы двух новых документов.

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

    Для чтения документа из базы данных необходимо указать его ID. Выполните следующую команду, чтобы получить документ random_task. Поскольку мы использовали запрос HTTP POST для добавления данных, имеет смысл, что для их извлечения вам нужно будет использовать запрос GET.

    $ curl -X GET $HOST/another_db/random_task
    

    Вы получите следующий вывод.

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

    Здесь запишите поле _rev документа. Это поле полезно, когда вам нужно отредактировать или удалить документ.

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

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

    Давайте обновим документ random_task с помощью следующей команды.

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

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

    Вы получите вывод, аналогичный приведенному ниже.

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

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

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

    Чтобы удалить документ, вам нужно будет указать идентификатор и обновленное значение rev. Давайте удалим документ random-task.

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

    Убедитесь, что значение поля rev в команде соответствует значению в вашем фактическом документе. Вы получите аналогичный результат, как показано ниже.

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

    Просмотр данных

    Давайте проверим список всех баз данных на сервере.

    $  curl -X GET $HOST/_all_dbs
    

    Список всех документов в определенной базе данных.

    $ curl -X GET $HOST/another_db/_all_docs
    

    Шаг 8 - Установите Caddy Server

    До сих пор мы обращались к CouchDB, используя IP-адрес сервера. Существует простой способ, если вы хотите заменить его своим доменным именем и использовать SSL перед ним, чтобы сделать его более безопасным. В нашем руководстве мы будем использовать Caddy Server, так как он легкий и работает с минимальной конфигурацией, а также поставляется со встроенным созданием SSL.

    Выполните следующую команду, чтобы установить некоторые пакеты, необходимые для Caddy. Возможно, они уже установлены на вашем сервере.

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

    Установите ключ Caddys GPG и добавьте официальный репозиторий в список репозиториев Debian.

    $ 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
    

    Установите Caddy-сервер.

    $ sudo apt update
    $ sudo apt install caddy
    

    Выполните следующую команду, чтобы проверить установку.

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

    Шаг 9 - Настройте Кэдди

    Чтобы настроить Caddy для работы в качестве обратного прокси-сервера, вам необходимо настроить файл Caddyfile. Откройте Caddyfile для редактирования.

    $ sudo nano /etc/caddy/Caddyfile
    

    Замените код в нем следующим кодом.

    couchdb.example.com {
            reverse_proxy localhost:5984
    
            tls 
    
            log {
                    output file /var/log/caddy/couchdb.log
            }
    }
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Запустите валидатор Caddy, чтобы проверить наличие проблем.

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

    Если вы получаете какие-либо ошибки относительно форматирования, выполните следующую команду, чтобы исправить это.

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

    Запустите валидатор еще раз.

    Перезапустите сервер Caddy, чтобы изменения вступили в силу.

    $ sudo systemctl restart caddy
    

    Теперь вы можете получить доступ к CouchDB через URL-адрес https://couchdb.example.com/_utils/ в своем браузере.

    Заключение

    Вы узнали, как установить сервер базы данных Apache CouchDB на компьютер с Debian 11. Вы также узнали, как выполнять основные операции с базой данных с помощью командной строки и пользовательского интерфейса Fauxton. И последнее, но не менее важное: вы также узнали, как выставить пользовательский интерфейс Fauxton в Интернете, используя Caddy в качестве обратного прокси-сервера. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.