Установка и настройка Pilot-TextSearch-Server на Linux

Для осуществления поиска по тексту в документах база данных должна быть проиндексирована с помощью Pilot-TextSearch-Server, который необходимо установить и настроить.

Установка Pilot-TextSearch-Server

В папку /opt/pilot-textsearch-server скачайте и распакуйте актуальную версию Pilot-TextSearch-Server, затем разрешите файлу pTextSearchServer быть исполняемым:

# mkdir /opt/pilot-textsearch-server

$ cd /opt/pilot-textsearch-server

# wget --no-check-certificate https://pilot.ascon.ru/release/Pilot-TextSearch.zip

# unzip Pilot-TextSearch.zip

# mkdir /opt/pilot-textsearch-server/Data/TMP

# chmod +x pTextSearchServer

Убедитесь в наличии библиотеки libgdiplus:

$ whereis libgdiplus

установите её, если она отсутствует. Например на Ubuntu Linux 20.04 это можно сделать так:

# apt install libgdiplus

Для работы с Pilot-TextSearch-Server необходимо установить лицензию. Для получения лицензии обратитесь к поставщику ПО АСКОН.

Настройка Pilot-TextSearch-Server

Pilot-TextSearch-Server запускается, как юнит pilot-textsearch.service подсистемы инициализации GNU/Linux systemd.

Создание специальной учётной записи pilotuser

Из соображений безопасности юнит pilot-textsearch.service целесообразно запускать и останавливать от имени специально созданного пользователя pilotuser.

Создайте учетную запись pilotuser, от которой будет запускаться и работать Pilot-TextSearch-Server:

# adduser pilotuser --no-create-home

Назначьте пользователя pilotuser владельцем каталога и файлов, созданных при распаковке:

# chown pilotuser -Rv /opt/pilot-textsearch-server

Создайте папку для лицензий и назначьте созданного пользователя её владельцем:

# mkdir /usr/share/ASCON

# chown pilotuser -Rv /usr/share/ASCON

Юнит pilot-textsearch.service

Создайте юнит pilot-textsearch.service в /etc/systemd/system:

[Unit]

Description=ASCON Pilot-TextSearch-Server

After=network.target

 

[Service]

User=pilotuser

Group=pilotuser

Type=simple

WorkingDirectory=/opt/pilot-textsearch-server

Restart=always

RestartSec=3

ExecStart=/opt/pilot-textsearch-server/pTextSearchServer --console

ExecStop=/bin/kill -s 3 $MAINPID

 

[Install]

WantedBy=multi-user.target

Подключение юнита

Подключите юнит pilot-textsearch.service:

# systemctl enable pilot-textsearch.service

Перезагрузите демон:

# systemctl daemon-reload

Запустите юнит:

# systemctl start pilot-textsearch.service

Управление юнитом осуществляется с помощью команд start, stop, restart, status. Например, systemctl status pilot-textsearch.service выведет статус юнита.

Подключение Pilot-TextSearch-Server к базе данных

Pilot-TextSearch-Server подключается к управляемой сервером Pilot-Server базе данных.

Подключение осуществляется с помощью программы pTextSearchServer (подробнее см. Утилита pTextSearchServer):

  1. Подключитесь к базе данных:
  2. $ cd /opt/pilot-textsearch-server

    # ./pTextSearchServer -c [database url]

    Вместо [database url] вставьте адрес подключения к базе данных. Например, если Pilot-Server и Pilot-TextSearch-Server расположены на одной машине:

    # ./pTextSearchServer -c http://localhost:5545/pilot-ice_ru

    Введите логин и пароль учетной записи, под которой будет работать служба.

    Так же можно использовать подключение в одну строку. Пароль и логин в этом случае будут написаны в явном виде. Например:

    # ./pTextSearchServer -c http://localhost:5545/pilot-ice_ru searchadmin 123456

    Служба работает под учётной записью администратора базы данных. Для подключения к базе данных рекомендуется использовать логин и пароль специально создаваемого для этой цели администратора searchadmin.

    Вывод команды должен быть следующим:

    Success connection to database: http://[database url]

  3. Проверьте статус сервера, открыв страницу http://<имя_сервера>:9095/status в браузере. Например, это можно сделать с помощью консольного браузера Links:
  4. $ links http://<имя_сервера>:9095/status

    При успешном подключении откроется Hangfire Dashboard — вэб-интерфейс планировщика задач Hangfire.

В случае возникновения, например на ОС AltLinux, ошибки "Error: [System.IO.Pipes] The operation has timed out." (ошибка pipe-соединения pTextSearchServer с systemd-службой pilot-textsearch-server.service) остановите службу, запустите Pilot-TextSearch-Server в консольном режиме, произведите настройку с помощью pBimAdmin, затем снова запустите службу. Например:

# systemctl stop pilot-textsearch.service

$ cd /opt/pilot-textsearch-server

# ./pTextSearchServer --console

# ./pTextSearchServer -c http://localhost:5545/pilot-ice_ru

# systemctl start pilot-textsearch.service

Индексация базы данных

Индексацию базы данных необходимо проводить:

  • после восстановления базы из резервной копии;
  • в случае удаления папки /opt/pilot-textsearch-server/Data/Database/[id_базы_данных];
  • если какие-то файлы не попали в индекс и по ним не осуществляется поиск.

Для индексации подключенной к Pilot-TextSearch-Server базы данных введите команду.

# ./pTextSearchServer -i

За ходом индексации базы данных можно следить в Hangfire Dashboard. Выберите Jobs и сможете увидеть количество задач: запланированных, в очереди, в обработке, выполненных, проваленных, удалённых и ожидающих.

Запуск Pilot-TextSearch-Server в консольном режиме

В ряде случаев может понадобится запуск Pilot-TextSearch-Server в консольном режиме. Для этого введите команду:

# ./pTextSearchServer --console

Pilot-TextSearch-Server, запущенный в режиме --console прекратит работу, если закрыть консоль.

Для управления запущенным в режиме --console Pilot-TextSearch-Server, нужно запустить ещё одну консоль.