Настройка запуска 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 можно прочитать здесь.