Установка RavenDB на Ubuntu 20.04

О чём эта инструкция
Этот материал поможет быстро развернуть RavenDB — документно-ориентированную NoSQL базу данных, оптимизированную для .NET/Windows, на сервере Ubuntu 20.04. Примеры команд и конфигурации проверены на типичном сервере. Ключевые этапы: подготовка зависимостей, загрузка RavenDB, настройка доступа по сети, автозапуск через systemd и первичная настройка через веб-интерфейс.
Важно: инструкция предполагает доступ с правами root или эквивалентом sudo и что на сервере уже настроен пароль root.
Предварительные требования
- Сервер с Ubuntu 20.04 LTS.
- Доступ root (или sudo) на сервере.
- Базовые знания работы с терминалом и редактором nano.
Установка необходимых зависимостей
RavenDB на Linux требует установленного .NET Core runtime (aspnetcore-runtime-3.1 в примере). Сначала добавим репозиторий Microsoft и установим зависимости:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.debОжидаемый фрагмент вывода (пример):
Selecting previously unselected package packages-microsoft-prod.
(Reading database ... 91134 files and directories currently installed.)
Preparing to unpack packages-microsoft-prod.deb ...
Unpacking packages-microsoft-prod (1.0-ubuntu20.04.1) ...
Setting up packages-microsoft-prod (1.0-ubuntu20.04.1) ...Далее обновим индекс пакетов и установим runtime:
apt-get install apt-transport-https -y
apt-get update -y
apt-get install aspnetcore-runtime-3.1 -yПосле успешной установки .NET можно переходить к загрузке RavenDB.
Загрузка и запуск RavenDB
Скачиваем последнюю сборку RavenDB для Linux x64 и распаковываем её:
wget -O ravendb.tar.bz2 https://hibernatingrhinos.com/downloads/RavenDB%20for%20Linux%20x64/latest
tar xvjf ravendb.tar.bz2Установим корректные права на папку RavenDB (в примере каталог в домашнем каталоге root):
chmod -R 755 ~/RavenDBПерейдём в директорию и запустим стартовый скрипт:
cd ~/RavenDB
./run.shПримерный вывод на консоли (фрагмент):
./run.sh: line 24: xdg-open: command not found
_____ _____ ____
| __ \ | __ \| _ \
| |__) |__ ___ _____ _ __ | | | | |_) |
| _ // _` \ \ / / _ \ '_ \| | | | _ <
| | \ \ (_| |\ V / __/ | | | |__| | |_) |
|_| \_\__,_| \_/ \___|_| |_|_____/|____/
Safe by default, optimized for efficiency
Build 50005, Version 5.0, SemVer 5.0.0, Commit a8d3f94
PID 23883, 64 bits, 2 Cores, Phys Mem 1.941 GBytes, Arch: X64
Source Code (git repo): https://github.com/ravendb/ravendb
Built with love by Hibernating Rhinos and awesome contributors!
+---------------------------------------------------------------+
Using GC in server concurrent mode retaining memory from the OS.
Could not start browser: System.ComponentModel.Win32Exception (2): No such file or directory
at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName, String arguments)
at Raven.Server.Utils.Cli.BrowserHelper.OpenStudioInBrowser(String url, Action`1 onError) in C:\Builds\RavenDB-Stable-5.0\50005\src\Raven.Server\Utils\Cli\BrowserHelper.cs:line 26
Server available on: http://127.0.0.1:43241
Server started, listening to requests...
TIP: type 'help' to list the available commands.
Running non-interactive.Если появилось сообщение про xdg-open, это нормально на минимальных серверах — браузер не откроется автоматически, но сервер продолжит работать.
Примечание: при запуске сервер изначально слушает на локальном адресе (127.0.0.1) и порту вида 43241.
Нажмите Ctrl+C для остановки процесса перед изменением конфигурации.
Настройка доступа по сети
По умолчанию RavenDB доступен только с localhost. Чтобы открыть доступ извне, отредактируйте файл настроек:
nano ~/RavenDB/Server/settings.jsonИзмените или добавьте следующие параметры (укажите IP вашего сервера вместо your-server-ip):
{
"ServerUrl": "http://your-server-ip:8080",
"Setup.Mode": "Initial",
"DataDir": "RavenData",
"Security.UnsecuredAccessAllowed": "PrivateNetwork"
}Сохраните изменения и закройте редактор (Ctrl+O, Enter, Ctrl+X в nano).
Создание systemd-сервиса для RavenDB
Для автоматического управления сервисом создадим unit-файл systemd:
nano /etc/systemd/system/ravendb.serviceВставьте конфигурацию (при необходимости скорректируйте путь ExecStart):
[Unit]
Description=RavenDB v4.0
After=network.target
[Service]
LimitCORE=infinity
LimitNOFILE=65536
LimitRSS=infinity
LimitAS=infinity
User=root
Restart=on-failure
Type=simple
ExecStart=/root/RavenDB/run.sh
[Install]
WantedBy=multi-user.targetЗагрузите изменения systemd и включите автозапуск:
systemctl daemon-reload
systemctl start ravendb
systemctl enable ravendbПроверить статус сервиса:
systemctl status ravendbПример фрагмента корректного статуса:
? ravendb.service - RavenDB v4.0
Loaded: loaded (/etc/systemd/system/ravendb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-08-01 11:25:12 UTC; 7min ago
Main PID: 30833 (run.sh)
Tasks: 32 (limit: 2353)
Memory: 157.0M
CGroup: /system.slice/ravendb.service
??30833 /bin/bash /root/RavenDB/run.sh
??30871 ./Raven.Server --browserКогда сервис запущен, сервер должен слушать указанный в settings.json порт (в примере 8080).
Доступ к веб-интерфейсу RavenDB
Откройте в браузере http://your-server-ip:8080. Примеры экранов и последовательность действий:

Нажмите кнопку Accept для принятия лицензионного соглашения.

Выберите опцию Unsecured, если разворачиваете в приватной сети для тестирования. Для продакшена всегда выбирайте защищённые варианты.

Укажите HTTP Port и IP-адрес сервера, затем Next.

Нажмите Restart для перезапуска сервера. После перезапуска вы попадёте на панель управления RavenDB:

Нажмите CREATE DATABASE и создайте базу данных через интерфейс:

Укажите имя базы и нажмите Create. После этого база появится в списке:

Что делать если что-то пошло не так — отладка
- Сервер не запускается: проверьте журналы systemd
journalctl -u ravendbи выводsystemctl status ravendb. - Порт не слушается: убедитесь, что в settings.json указан правильный ServerUrl и сервер перезапущен.
- Ошибка xdg-open: на headless-системах это нормально; для устранения можно установить xdg-utils:
apt-get install -y xdg-utils. - .NET runtime не найден или несовместимая версия: перепроверьте версию aspnetcore-runtime.
- Брандмауэр блокирует подключение: откройте порт в UFW/iptables, например
ufw allow 8080/tcp.
Безопасность и рекомендации для продакшена
- Никогда не используйте режим Unsecured в общедоступной сети. Используйте TLS и включите аутентификацию.
- Размещайте RavenDB за обратным прокси (nginx) с TLS для публичного доступа.
- Запускайте процесс под непривилегированным пользователем, а не под root. Измените User в unit-файле systemd и убедитесь, что у пользователя есть права на директории.
- Резервное копирование DataDir по расписанию.
Альтернативные способы развертывания
- Docker: официальный образ RavenDB может ускорить развёртывание и облегчить изоляцию.
- Менеджер конфигурации/Ansible: автоматизация установки на группу серверов.
- Hibernating Rhinos Cloud / управляемые сервисы: подход для минимизации операционной нагрузки.
Методология установки (мини-процесс)
- Подготовить сервер и доступы (root/sudo).
- Установить .NET runtime и зависимости.
- Скачать и распаковать RavenDB в выбранную директорию.
- Запустить
./run.shлокально, убедиться в старте. - Настроить settings.json для сетевого доступа.
- Создать systemd unit, включить автозапуск.
- Настроить безопасность, создать базы через UI.
Рольовые чек-листы
Системный администратор:
- Проверить наличие .NET runtime.
- Настроить systemd unit и права на каталоги.
- Открыть порты в брандмауэре.
- Настроить резервное копирование.
Разработчик:
- Убедиться, что приложение подключается к указанному ServerUrl.
- Создать индексы и тестовые данные.
- Протестировать CRUD-операции и производительность в тестовой среде.
Критерии приёмки
- systemctl status ravendb показывает Active: active (running).
- Веб-интерфейс доступен по http://your-server-ip:8080 и открывается страница RavenDB.
- Можно создать базу данных через UI и выполнять запросы.
- Процесс запущен не от root (рекомендуемо) или есть обоснование для root в инфраструктуре.
Краткий глоссарий
- RavenDB: документная NoSQL СУБД, хранит документы в формате JSON.
- ServerUrl: URL, на котором сервер принимает HTTP-запросы.
- DataDir: каталог, где RavenDB хранит данные.
Короткое резюме
- Установите aspnetcore-runtime, скачайте RavenDB, запустите ./run.sh.
- Настройте settings.json для сетевого доступа и создайте systemd unit для автозапуска.
- Проверьте доступность через веб-интерфейс и примените меры безопасности для продакшена.
Если нужны примеры автоматизации (Ansible playbook, systemd unit для непривилегированного пользователя) или конфигурация через Docker — напишите, подготовлю шаблоны.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента