Установка Reindexer

Для Reindexer доступно 3 варианта использования:

  1. Автономный сервер (Standalone) . Reindexer работает как отдельный сервер. Приложения-клиенты подключаются к нему по сети по протоколам HTTP, RPC или gRPC.
  2. Встроенный сервер (Built-in server). Встраивается в приложение как статическая библиотека. При этом другие приложения-клиенты могут подключаться к Reindexer по сети.
  3. Встроенный (Built-in, Embedded). Reindexer встраивается в приложение, которое он обслуживает, как статическая библиотека.

Установка Reindexer как автономного (Standalone) сервера

Использование официального Docker-образа

Самый простой вариант развертывания СУБД Reindexer. Перед его реализацией проверьте наличие в системе (и при необходимости установите) Docker. Для установки и запуска сервера БД этим способом выполните следующие действия:

  1. Загрузите официальный Docker-образ Reindexer из Dockerhub.

    Для этого используйте команду

    docker pull reindexer/reindexer
    
  2. Запустите контейнер из загруженного образа командой

    docker run -p9088:9088 -p6534:6534 -it reindexer/reindexer
    

После запуска сервера web-интерфейс для управления Reindexer будет доступен по адресу http://127.0.0.1:9088/face.

Интерактивная документация REST API будет доступна по адресу http://127.0.0.1:9088/swagger.

Самостоятельная сборка Docker-образа Reindexer

В некоторых редких случаях может понадобиться самостоятельная сборка образа Reindexer. Например, если нужен нативный образ для архитектуры ARM64 или требуется внести какие-то изменения в стандартный entrypoint.sh. В репозитории Reindexer присутствуют 2 докер-файла для сборки:

  1. Основной, на базе alpine: Dockerfile
  2. Альтернативный, на базе debian: Dockerfile

Команда сборки в обоих случаях должна выполняться из корневой директории проекта:

docker build -t my-reindexer-image -f cpp_src/cmd/reindexer_server/contrib/Dockerfile .

Установка на Linux

На Linux СУБД Reindexer устанавливается через менеджер пакетов YUM или программу для установки, обновления и удаления программных пакетов apt.

Ниже приведены команды для установки Reindexer для разных дистрибутивов Linux.

Centos 7

Установка происходит через YUM.

yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repohttps://repo.reindexer.io/centos-7/x86_64/
yum update
yum install reindexer-server

Redos 7

Установка происходит через YUM.

yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repo https://repo.reindexer.io/redos-7/x86_64/
yum update
yum install reindexer-server

Redos 8

Установка происходит через YUM.

yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repo https://repo.reindexer.io/redos-8/x86_64/
yum update
yum install reindexer-server

Fedora 41

Установка происходит через YUM.

yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repohttps://repo.reindexer.io/fedora-41/x86_64/
yum update
yum install reindexer-server

Fedora 42

Установка происходит через YUM.

yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repohttps://repo.reindexer.io/fedora-42/x86_64/
yum update
yum install reindexer-server

Ubuntu Jammy

Установка происходит через apt.

curl https://repo.reindexer.io/RX-KEY.GPG | apt-key add
echo "deb https://repo.reindexer.io/ubuntu-jammy /" >> /etc/apt/sources.list
apt update
apt install reindexer-server

Ubuntu Noble

Установка происходит через apt.

curl https://repo.reindexer.io/RX-KEY.GPG | apt-key add
echo "deb https://repo.reindexer.io/ubuntu-noble /" >> /etc/apt/sources.list
apt update
apt install reindexer-server

Debian 11 (bullseye)

Установка происходит через apt.

curl https://repo.reindexer.io/RX-KEY.GPG | apt-key add
echo "deb https://repo.reindexer.io/debian-bullseye /" >> /etc/apt/sources.list
apt update
apt install reindexer-server

Debian 12 (bookworm)

Установка происходит через apt.

curl https://repo.reindexer.io/RX-KEY.GPG | apt-key add
echo "deb https://repo.reindexer.io/debian-bookworm /" >> /etc/apt/sources.list
apt update
apt install reindexer-server

AltLinux P10

Установка происходит через apt-get. Требуется, чтобы предварительно были установлены пакеты ca-certificates и apt-https.

echo "rpm https://repo.reindexer.io/altlinux p10/x86_64 reindexer" > /etc/apt/sources.list.d/reindexer.list
apt-get update
apt-get install reindexer-server

Установка на macOS

Для утановки Reindexer на macOS можно воспользоваться менеджером пакетов Homebrew.

Команды для установки:

brew tap restream/reindexer
brew install reindexer

Установка на Windows

Для Windows Reindexer доступен в виде скомпилированного бинарного файла (.exe) для 32-разрядных и 64-разрядных систем. Скачайте и запустите его.

Самостоятельная сборка из исходного кода

Это гибкий и универсальный способ, который подходит для разных архитектур и платформ. Разработчиками Reindexer протестированы: ARM32, AArch64, AMD64, i386.

Перед инсталляцией Reindexer этим способом проверьте наличие в системе или установите:

  • Утилиту автоматической сборки программ из исходного кода Cmake;
  • Тулчейн C++20. Для сборки Reindexer требуется g++ 10+, clang 15+, mingw64 или MSVC 2019+.

Следующий шаг — установка зависимостей. Для установки зависимостей воспользуйтесь скриптом:

curl -L https://github.com/Restream/reindexer/raw/master/dependencies.sh | bash -s

Затем соберите и установите Reindexer:

git clone https://github.com/Restream/reindexer
cd reindexer
mkdir -p build && cd build
cmake ..
make -j4
# установка в систему
sudo make install

Сборка с использованием MSVC или MinGW потребует дополнительных флагов при вызове cmake в скрипте выше:

# MinGW 64
cmake -G "MinGW Makefiles" ..
# MSVC 2022, 64 бита
cmake -G "Visual Studio 17 2022" -Ax64 ..

Подключение Go-модуля

Для Standalone-режима Go-байндинг не требует каких-то дополнительных библиотек и может быть добавлен в Go-приложение следующим образом:

go get -a github.com/restream/reindexer@master

Установка Reindexer для режимов Built-in и Built-in server

Embeded-варианты использования Reindexer, требуют наличия в системе static-библиотек (libreindexer, libreindexer_server и libreindexer_server_resources). Установить их можно либо из предсобранных пакетов, либо собрав Reindexer из исходных кодов (описано выше).

Подключение Go-модуля

В случае с Built-in и Built-in server для Go есть несколько вариантов использования:

  1. В виде модуля в go.mod

    В директории Go-приложения, содержащего go.mod:

    go get -a github.com/restream/reindexer@master
    

    В этом варианте static-библиотеки Reindexer будут подключаться через pkg-config, поэтому требуется, чтобы они были заранее установлены в системе.

  2. С использованием директивы replace

    Если требуется возможность модифицировать С++ часть Reindexer в процессе работы с Go-приложением, то можно использовать в go.mod директиву replace. Сам модуль Reindexer должен быть загружен в GOPATH. В этом случае также есть возможность провести сборку через go generate и отдельная установка static-библиотек Reindexer в систему не потребуется. При таком варианте сборки пути к библиотекам будут напрямую сохранены в go-файлы байндинга, а pkg-config задействован не будет.

    # Получение исходных кодов Reindexer
    go get -a github.com/restream/reindexer@master
    # Сборка для built-in
    go generate $GOPATH/src/reindexer/bindings/builtin
    # Сборка для built-in server (опционально)
    go generate $GOPATH/src/reindexer/bindings/builtinserver
    

    После загрузки и сборки Reindexer его требуется добавить в go.mod приложения

    # Переход в директорию приложения
    cd /your/app/path
    # Добавление Reindexer в go.mod
    go get -a github.com/restream/reindexer@master
    # Добавление replace-директивы для использования локальной версии Reindexer из GOPATH
    go mod edit -replace github.com/restream/reindexer=$GOPATH/src/github.com/restream/reindexer
    
  3. Вендоринг

    Штатный Go-вендоринг полноценно не работает с CGO. Из коробки такой подход позволяет вендорить только Go-часть Reindexer’a. В качестве альтернативы можно использовать утилиту vend. С ней после вендоринга будет возможность вызвать go generate -mod=vendor для сборки CGO-части.