Установка и настройка 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):
- Подключитесь к базе данных:
- Проверьте статус сервера, открыв страницу http://<имя_сервера>:9095/status в браузере. Например, это можно сделать с помощью консольного браузера Links:
$ 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]
$ 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, нужно запустить ещё одну консоль. |