Meilisearch – поисковый сервер с открытым исходным кодом, написанный на Rust. Движок отличается компактным потреблением памяти и стабильно высокой скоростью работы даже под нагрузкой. Для подключения к сервису используется REST API, через который приложение может как загружать документы в индекс, так и выполнять полнотекстовый поиск по ним.
На практике Meilisearch чаще всего устанавливается там, где пользователь непосредственно взаимодействует со строкой поиска, то есть в каталогах товаров, справочных системах, CMS и внутренних корпоративных инструментах. Проект поддерживает официальные клиентские библиотеки для большинства популярных языков и фреймворков, что упрощает его встраивание в уже существующую инфраструктуру.
В статье разберём, как установить Meilisearch на виртуальный сервер под управлением CentOS Stream 10.
Как установить Meilisearch на CentOS Stream 10
В CentOS пакетный менеджер dnf не поддерживает репозиторий Fury, который представляет собой инфраструктуру доставки билдов Meilisearch. Поэтому Meilisearch на CentOS устанавливается путём загрузки готового бинарного файла с официального сервера. При этом разработчики Meilisearch рекомендуют устанавливать свой продукт на систему с библиотекой glibc (GNU C Library) версии не ниже 2.35. Чтобы проверить версию glibc, выполните команду:
$ ldd --version
На образе CentOS Stream 10 вывод команды показывает версию библиотеки 2.39, что полностью соответствует требованиям Meilisearch.

Установка Meilisearch на CentOS Stream 10
Чтобы проинсталлировать Meilisearch в систему, загрузите в текущий каталог бинарный файл Meilisearch с официального сервера установки:
$ curl -L https://install.meilisearch.com | sh
Установите полученному файлу права на запуск:
$ chmod +x meilisearch
После чего переместите в системную директорию, чтобы его можно было запускать из любого места в системе:
$ sudo mv meilisearch /usr/local/bin/
Затем проверьте версию Meilisearch, чтобы убедиться, что инсталляция прошла успешно:
$ meilisearch --version
В нашем примере вывод команды показывает версию 1.45.2.

Создание пользователя и настройка каталогов Meilisearch
Чтобы повысить безопасность, создайте для сервиса отдельного пользователя. Таким образом служба не будет запускаться от имени учётной записи root:
$ sudo useradd -r -m -d /var/lib/meilisearch -s /sbin/nologin meilisearch
В данном случае команда оперирует следующими параметрами:
-r– создание системной учётной записи;-m– создание домашнего каталога пользователя;-d /var/lib/meilisearch– каталог, который будет использоваться пользователем в качестве домашнего;-s /sbin/nologin– запрет на интерактивный вход в систему;meilisearch– имя создаваемого пользователя.
После чего создайте основной каталог данных Meilisearch, в котором будет храниться «состояние» поискового движка:
$ sudo mkdir -p /var/lib/meilisearch/data
Затем рекурсивно измените владельца и группу каталога /var/lib/meilisearch и всех файлов и подкаталогов внутри него на пользователя meilisearch и группу meilisearch. Это позволит ранее созданному пользователю получить права на чтение, запись и создание файлов в данном каталоге:
$ sudo chown -R meilisearch:meilisearch /var/lib/meilisearch
Далее создайте каталог конфигурации Meilisearch. В нём будут храниться настройки, которые управляют тем, как запускается и работает сервис:
$ sudo mkdir -p /etc/meilisearch
Настройка Meilisearch для работы в качестве системного сервиса
Для автоматического запуска Meilisearch после загрузки операционной системы и повышения стабильности его работы рекомендуется настроить запуск сервиса через systemd. В такой конфигурации поисковый сервер будет функционировать в фоновом режиме, автоматически перезапускаться при сбоях и им можно будет управлять стандартными средствами Linux.
На этом этапе создайте файл конфигурации Meilisearch, написанный в формате TOML (Tom’s Obvious Minimal Language), который будет использоваться для задания основных параметров работы сервера:
$ sudo vi /etc/meilisearch/config.toml
В файл вставьте следующее содержимое:
db_path = "/var/lib/meilisearch/data"
env = "production"
http_addr = "127.0.0.1:7700"
master_key = "YOUR_MASTER_KEY"
В качестве значения для параметра --master-key необходимо указать секретный ключ администратора Meilisearch, то есть случайную строку, которая будет использоваться для доступа к API. Самый простой способ его получить – сгенерировать при помощи утилиты openssl. По умолчанию в CentOS Stream 10 данная утилита не установлена. Поэтому для установки выполните команду:
$ sudo dnf install openssl
По окончании установки сгенерируйте секретный ключ администратора:
$ openssl rand -hex 32
Скопируйте вывод команды, после чего ещё раз откройте файл /etc/meilisearch/config.toml и вставьте скопированную строку вместо YOUR_MASTER_KEY.

На следующем шаге создайте юнит-файл для нового сервиса:
$ sudo vi /etc/systemd/system/meilisearch.service
Вставьте в него следующее содержимое:
[Unit]
Description=Meilisearch
After=network.target
[Service]
User=meilisearch
Group=meilisearch
WorkingDirectory=/var/lib/meilisearch
ExecStart=/usr/local/bin/meilisearch --config-file-path /etc/meilisearch/config.toml
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Закройте файл с сохранением изменений и перечитайте описания юнитов, чтобы обновить внутреннюю конфигурацию systemd:
$ sudo systemctl daemon-reload
Затем установите новый сервис в автозагрузку с одновременным его запуском:
$ sudo systemctl enable --now meilisearch
Чтобы убедиться в корректности запуска сервиса, проверьте его текущее состояние:
$ systemctl status meilisearch
Вывод команды не должен содержать сообщений о каких-либо ошибках.

Проверка работоспособности Meilisearch
В качестве теста выполните проверку работоспособности сервиса Meilisearch через его HTTP API:
$ curl http://127.0.0.1:7700/health
Утилита curl отправляет HTTP-запрос на адрес http://127.0.0.1:7700/health, который является специальной служебной точкой для контроля состояния сервера. Если Meilisearch запущен и функционирует корректно, в ответ должно вернуться сообщение:
{"status":"available"}
Получение такого ответа означает, что сервис успешно стартовал, принимает соединения и готов обрабатывать поисковые запросы.
Если вы планируете использовать Meilisearch для сайта, дополнительно стоит закрыть прямой доступ к порту 7700 и проксировать его через Nginx или Angie с HTTPS. Такой подход является стандарным для использования в реальной рабочей среде.
