Установка Apache CouchDB на CentOS 8
Этот пошаговый гид объясняет, как установить и настроить Apache CouchDB на CentOS 8. Вы научитесь добавить репозиторий, установить пакет, настроить доступ по сети, открыть порт в брандмауэре и проверить работу через веб-интерфейс и curl. В конце — рекомендации по безопасности, альтернативы и контрольный список для ролей.

Что такое CouchDB
CouchDB — это документно-ориентированная NoSQL СУБД с открытым исходным кодом, написанная на Erlang. Она хранит документы в формате JSON и предоставляет RESTful HTTP API для создания, чтения, обновления и удаления документов. JSON — это текстовый формат для структурированных данных. RESTful API позволяет работать с базой по HTTP с помощью curl или клиента.
Важно: по умолчанию CouchDB слушает порт 5984 и не создаёт учётную запись администратора при установке.
Требования
- Сервер с CentOS 8.
- Доступ root или пользователь с правами sudo.
Установка Apache CouchDB
По умолчанию CouchDB отсутствует в репозиториях CentOS 8. Нужно добавить репозиторий CouchDB и зависимый репозиторий EPEL.
Установите EPEL:
dnf install epel-release -yСоздайте файл репозитория CouchDB:
nano /etc/yum.repos.d/apache-couchdb.repoДобавьте в файл следующие строки:
[bintray--apache-couchdb-rpm]
name=bintray--apache-couchdb-rpm
baseurl=http://apache.bintray.com/couchdb-rpm/el$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1
Сохраните и закройте файл. Затем установите CouchDB:
dnf install couchdb -yКогда установка завершится, переходите к настройке.
Настройка CouchDB
В этом руководстве мы настраиваем единичный (standalone) экземпляр CouchDB. По умолчанию сервер привязан к localhost и не имеет администратора. Создадим администратора и разрешим внешние подключения.
Отредактируйте локальный конфигурационный файл:
nano /opt/couchdb/etc/local.iniИзмените bind_address на 0.0.0.0 и добавьте учётную запись администратора в секцию [admins]:
[chttpd]
port = 5984
bind_address = 0.0.0.0
[admins]
admin = password
Сохраните и закройте файл.
Далее запустите и включите сервис CouchDB:
systemctl start couchdb
systemctl enable couchdbПроверьте статус сервиса:
systemctl status couchdbОжидаемый фрагмент вывода (пример):
? couchdb.service - Apache CouchDB
Loaded: loaded (/usr/lib/systemd/system/couchdb.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2020-04-11 07:40:47 EDT; 35s ago
Main PID: 11992 (beam.smp)
Tasks: 43 (limit: 26213)
Memory: 36.4M
CGroup: /system.slice/couchdb.service
??11992 /opt/couchdb/bin/../erts-9.3.3.14/bin/beam.smp -K true -A 16 -Bd -- -root /opt/couchdb/bin/.. -progname couchdb -- -home /o>
??12004 /opt/couchdb/bin/../erts-9.3.3.14/bin/epmd -daemon
??12023 erl_child_setup 1024
??12045 sh -s disksup
??12047 /opt/couchdb/bin/../lib/os_mon-2.4.4/priv/bin/memsup
??12048 /opt/couchdb/bin/../lib/os_mon-2.4.4/priv/bin/cpu_sup
Apr 11 07:40:47 centos8 systemd[1]: Started Apache CouchDB.
Проверка прослушиваемого порта:
netstat -pnltu | grep 5984Ожидаемый вывод:
tcp 0 0 0.0.0.0:5984 0.0.0.0:* LISTEN 11992/beam.smp
Важно: команды systemctl и netstat требуют прав root или sudo.
Настройка SELinux и брандмауэра
По умолчанию в CentOS 8 включён SELinux. В боевой среде предпочтительнее настроить корректные правила SELinux, но для простоты в примере мы переводим его в режим permissive.
Отредактируйте файл конфигурации SELinux:
nano /etc/selinux/configНайдите строку:
SELINUX=enforcingЗамените её на:
SELINUX=permissiveСохраните и перезагрузите систему, чтобы изменения вступили в силу.
Разрешите порт 5984 в firewalld:
firewall-cmd --zone=public --permanent --add-port=5984/tcp
firewall-cmd --reloadПримечание: вместо полного отключения SELinux рассмотрите добавление правил безопасности для CouchDB.
Доступ к веб-интерфейсу CouchDB
Проверьте работу сервера через curl:
curl http://your-server-ip:5984/Если всё в порядке, вы увидите JSON с информацией о версии, например:
{"couchdb":"Welcome","version":"3.0.0","git_sha":"03a77db6c","uuid":"d0406ea8f0b1a3f18020ec90e627ae35","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
Откройте веб-интерфейс управления по адресу:
http://your-server-ip:5984/_utils/
Вы будете перенаправлены на страницу входа.

Введите имя администратора и пароль, затем нажмите Log in.
После входа вы увидите панель управления:

Работа с базами данных через curl
Создание базы данных testdb:
curl -u admin:password -X PUT http://your-server-ip:5984/testdbОжидаемый ответ:
{"ok":true}Создание базы userdb:
curl -u admin:password -X PUT http://your-server-ip:5984/userdbПроверка информации о базе:
curl -u admin:password -X GET http://your-server-ip:5984/testdbПример ответа:
{"db_name":"testdb","purge_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXIwNDLXMwBCwxyQVB4LkGRoAFL_gSArkQGP2kSGpHqIoiwAtOgYRA","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXIwNDLXMwBCwxyQVB4LkGRoAFL_gSArkQGP2kSGpHqIoiwAtOgYRA","sizes":{"file":16700,"external":0,"active":0},"props":{},"doc_del_count":0,"doc_count":0,"disk_format_version":8,"compact_running":false,"cluster":{"q":2,"n":1,"w":1,"r":1},"instance_start_time":"0"}
Удаление базы testdb:
curl -u admin:password -X DELETE http://your-server-ip:5984/testdbОтвет:
{"ok":true}
Контрольный список перед вводом в эксплуатацию
Администратор:
- Проверить, что создана учётная запись администратора и пароль надёжен.
- Настроить бэкапы и мониторинг (логи, использование диска, память).
- Ограничить доступ по IP или через VPN.
Разработчик:
- Тестировать CRUD через REST API и клиентские библиотеки.
- Убедиться, что модели документов устойчивы к обновлениям схемы.
Оператор:
- Настроить alerting при критических ошибках сервиса.
- Планировать обновления и миграции с минимальным временем простоя.
Рекомендации по безопасности
- Используйте HTTPS (TLS) перед открытием сервиса в интернет. Настройте обратный прокси (nginx или Apache) с TLS и ограничьте доступ к CouchDB по localhost.
- Не храните пароли в открытом виде в скриптах; используйте vault или переменные окружения.
- Отключайте или ограничивайте административные интерфейсы только доверенными сетями.
- Рассмотрите включение SELinux в режиме enforcing и настройку политик вместо полного перевода в permissive.
Когда CouchDB подходит, а когда нет
Подходит:
- Если ваша модель данных естественно представляется документами JSON.
- Если требуются простые RESTful операции и горизонтальная масштабируемость с репликацией.
Не подходит:
- Для сложных транзакций с отношениями типа «многие ко многим», где нужны ACID-транзакции между таблицами (реляционные СУБД лучше подходят).
- Для случаев, где критически важна строгая целостность ссылок между множественными сущностями.
Альтернативы и миграция
- MongoDB — ещё одна популярная документно-ориентированная БД, часто выбирается за богатую экосистему и гибкие индексы.
- PostgreSQL с JSONB — альтернатива, если нужны и реляционные возможности, и хранение JSON.
- Couchbase — похожа на CouchDB, но ориентирована на высокую производительность и встроенный кеш.
Миграция: экспортируйте документы через API или инструменты миграции, тестируйте поиски и индексы в новой системе перед полным переносом.
Ментальные модели и эвристики
- Представляйте данные как набор независимых документов. Каждый документ — автономная единица с уникальным _id.
- Индексируйте только то, что действительно требуется для запросов.
- Репликация в CouchDB — мощный инструмент для распределённых приложений и оффлайн-синхронизации.
Небольшой набор проверок (тесты приёмки)
- Сервис запущен и слушает порт 5984.
- Веб-UI доступен по /_utils/ и позволяет войти под админом.
- Создание, чтение, обновление и удаление документов работает через API.
- Файлы логов CouchDB не содержат критических ошибок при старте.
Быстрый плейбук для восстановления после сбоя
- Проверить статус systemd: systemctl status couchdb.
- Посмотреть логи: journalctl -u couchdb -n 200.
- Проверить доступность порта: netstat -pnltu | grep 5984.
- Если служба не стартует, временно вернуть SELINUX в permissive и проверить ошибки конфигурации.
- Восстановить данные из последних бэкапов при необходимости.
Краткая сводка
Вы установили и настроили CouchDB на CentOS 8, разрешили доступ по сети, открыли порт в firewalld и проверили работу через curl и веб-интерфейс. В руководстве также приведены рекомендации по безопасности, альтернативы и чек-листы для ролей.
Важно: перед открытием CouchDB в продуктивной сети настройте TLS и локальную политику безопасности.
Дополнительные ресурсы
Официальная документация Apache CouchDB: https://couchdb.apache.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента