Настройка запуска Pilot-Server как службы Supervisor

Если операционная система не предусматривает наличие службы инициализации systemd, то для её замены можно воспользоваться программой Supervisor.

В данном разделе приведена инструкция по установке и настройке supervisor на дистрибутивах Linux, использующих систему dpkg для управления deb-пакетами (Debian, Ubuntu, Astra Linux и т.д.). Для установки и настройки supervisor на дистрибутивах, использующих rpm- и другие пакеты (CentOS, AltLinux, РедОС и т.д.), следует действовать по иструкции официального сайта supervisord.org.

Установите пакет supervisor и активируйте его автозапуск:

# apt-get install supervisor
# systemctl enable supervisor.service

Скорректируйте файл конфигурации /etc/supervisor/supervisord.conf.

В секции [unix_http_server] измените значение chmod на 0770 и добавьте к существующему описанию строку chown=pilotuser:pilotuser, как показано ниже:

[unix_http_server]

file=/var/run/supervisor.sock ; (the path to the socket file)

chmod=0770 ; socket file mode

chown=pilotuser:pilotuser

Создайте конфигурационный файл для Pilot-Server:

# printf "%s\n" [program:pilot-server] 'command=/opt/pilot-server/Ascon.Pilot.Daemon /opt/pilot-server/settings.xml' user=pilotuser | sudo tee /etc/supervisor/conf.d/pilot.conf

В папке /opt/pilot-server/bin создайте скрипт startUpdateProcess.sh:

#!/bin/bash

updatePath=$1

currentPath=$2

serviceName="pilot-server"

echo "=========Script starts here=========" >> update.log

date >> update.log

echo "Start update... Try to stop $serviceName" >> update.log

sudo supervisorctl stop $serviceName

rm -rf $updatePath/*.msi >> update.log 2>> update.log

rm -rf $updatePath/Source >> update.log 2>> update.log

echo "Unzip whole package" >> update.log

unzip -j -o $updatePath/Pilot-update*.zip -d $updatePath >> update.log 2>> update.log

rm $updatePath/Pilot-update*.zip >> update.log 2>> update.log

echo "Unzip update package" >> update.log

unzip $updatePath/*.zip -d $updatePath/pilot-server/ >> update.log 2>> update.log

if [ -e "settings.xml" ]

then

    rm -f $updatePath/pilot-server/settings.xml >> update.log 2>> update.log

    echo "Settings were removed!" >> update.log

fi

echo "Copy files" >> update.log

cp $updatePath/pilot-server/* "$currentPath" -R >> update.log 2>> update.log

rm $updatePath/*.zip >> update.log 2>> update.log

rm -rf $updatePath/pilot-server >> update.log 2>> update.log

echo "Try to start $serviceName" >> update.log

sudo supervisorctl start $serviceName

echo "=========Script ends here=========" >> update.log

Пользователю pilotuser необходимо предоставить права запускать и останавливать сервис Pilot-Server. Для этого добавьте в конфигурационный файл sudoers пользовательские команды /usr/bin/supervisorctl start pilot-server.service и /usr/bin/supervisorctl stop pilot-server.service.

Перезапустите supervisor, чтобы обновить настройки и запустить Pilot-Server.

# service supervisor restart

Перезагрузите систему, чтобы убедиться, что Pilot-Server запускается автоматически.

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

# service supervisor stop

# service supervisor start

# service supervisor status

Подробнее о возможностях пакета supervisor можно прочитать здесь.