На Инфостарте не единожды поднималась тема запуска нескольких экземпляров сервера 1С под GNU/Linux и даже я на этом поприще успел отметится здесь
Однако в настоящем опусе речь пойдет про механизм запуска сервера 1С, который вендор до сих пор ни как не решится включить в "коробку", не смотря на явные его преимущества
Так как при установке пакетов сервера версии 8.3.18 скрипты инициализации (запуска/остановки сервера 1С) автоматически не устанавливаются и их требуется копировать вручную (о чем писано на ИТС), то предлагаемый ниже способ не будет конфликтовать с решением от 1С
ВАЖНО: Изложенная ниже информация относится к серверу 1С 64-х разрядной версии, если у вас 32-х разрядный, придется внести некоторые коррективы в приведенные здесь файлы!
Первым делом помещаем в каталог /etc/systemd/system файл шаблона сервиса srv1cv83@.service следующего содержания
[Unit]
Description=1C:Enterprise Server 8.3 (%i)
Requires=network.target
[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
# Path to directory with claster data
Environment=SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8/
# Number of the cluster port created by default during first
# launch of ragent
Environment=SRV1CV8_PORT=1540
# Number of cluster agent main port. This port is used by the
# cluster console to address the central server. Cluster agent
# port is also specified as the IP port of the working server.
Environment=SRV1CV8_REGPORT=1541
# Port range for connection pool
Environment=SRV1CV8_RANGE=1560:1591
# Security level:
# 0 - unprotected connections
# 1 - protected connections only for the time of user
# authentication
# 2 - permanently protected connections
Environment=SRV1CV8_SECLEV=0
# 1C:Enterprise server configuration debug mode
# blank - default - debug mode is off
# -debug - debug mode is on
#
Environment=SRV1CV8_DEBUG=
# Check period for connection loss detector, milliseconds
Environment=SRV1CV8_PING_PERIOD=1000
# Response timeout for connection loss detector, milliseconds
Environment=SRV1CV8_PING_TIMEOUT=5000
# 1C:Enterprise server keytab file.
# default - usr1cv83.keytab file in 1C:Enterprise server
# installation directory
Environment=KRB5_KTNAME=/opt/1cv8/x86_64/%i/usr1cv8.keytab
ExecStart=/bin/sh -c "/opt/1cv8/x86_64/%i/ragent -d ${SRV1CV8_DATA} -port ${SRV1CV8_PORT} -regport ${SRV1CV8_REGPORT} \
-range ${SRV1CV8_RANGE} -seclev ${SRV1CV8_SECLEV} -pingPeriod ${SRV1CV8_PING_PERIOD} -pingTimeout ${SRV1CV8_PING_TIMEOUT} ${SRV1CV8_DEBUG}"
Restart=always
RestartSec=5
[Install]
DefaultInstance=default
WantedBy=multi-user.target
Если вы установили пакеты, например, версии 8.3.18.1208, то для запуска сервера 1С потребуется выполнить следующую команду
$ sudo systemctl start srv1cv83@8.3.18.1208
Чтобы прописать данный сервис в автозапуск необходимо выполнить команду
$ sudo systemctl enable srv1cv83@8.3.18.1208
В случае, если у вас нет нужды запускать несколько экземпляров сервиса с разной версией платформы, а вы просто хотите управлять запуском и остановкой сервиса через systemd, то это можно осуществить следующим образом:
установив нужную версию платформы (например 8.3.18.1208), сделать следующую символьную ссылку
$ sudo ln -s /opt/1cv8/x86_64/8.3.18.1208 /opt/1cv8/x86_64/default
в таком случае управлять сервисом можно с помощью экземпляра srv1cv83@default командами вида
$ sudo systemctl enable srv1cv83@default # Включить автозапуск сервиса
$ sudo systemctl start srv1cv83@default # Запустить сервис
$ sudo systemctl stop srv1cv83@default # Остановить сервис
$ sudo systemctl status srv1cv83@default # Посмотреть статус сервиса
$ sudo journalctl -ex -u srv1cv83@default # Посмотреть журнал событий сервиса
После установки новой версии (если вы обновили пакеты сервера) вам потребуется изменить ссылку /opt/1cv8/x86_64/current, так чтобы она ссылалась на каталог с новой версией платформы, что позволит и дальше работать с экземпляром srv1cv83@current не меняя более никаких настроек
Если в каком-то экземпляре сервиса необходимо изменить параметры запуска, то для этого можно создать каталог для "drop-in" файлов настроек
Так, например, чтобы включить режим отладки для экземпляра сервиса srv1cv83@8.3.18.1208 требуется создать файл /etc/systemd/system/srv1cv83@8.3.18.1208.service.d/debug.conf (имя файла может быть любым, главное чтобы расширение было .conf) следующего содержания
[Service]
Environment=SRV1CV8_DEBUG=-debug
Если, например, нам для экземпляра srv1cv83@default необходимо поменять номера портов запуска процессов сервера 1С (увеличив все значения на 1000), тогда мы создаем файл /etc/systemd/system/srv1cv83@default.service.d/ports.conf (имя файла может быть любым, главное чтобы расширение было .conf) и помещаем туда следующий текст
[Service]
Environment=SRV1CV8_PORT=2540
Environment=SRV1CV8_REGPORT=2541
Environment=SRV1CV8_RANGE=2560:2591
Если же вы хотите изменить параметры опроса агентом сервера процессов кластера для всех экземпляров сервиса, тогда достаточно создать файл /etc/systemd/system/srv1cv83@.service.d/pings.conf (каталог srv1v83@.service.d носит имя файла шаблона сервиса, а не его экземпляра, имя файла настроек может быть любым, главное чтобы расширение было .conf) следующего содержания
[Service]
Environment=SRV1CV8_PING_PERIOD=3000
Environment=SRV1CV8_PING_TIMEOUT=15000
На этом, пожалуй, все!
Дальше, выбор за вами, какой механизм запуска сервера 1С использовать у себя ...
Надеюсь, данный материал будет полезен для сообщества!
Исходная тема есть на Партнерском форме 1С, так что у кого есть доступ и кто разделяет подход, описанный в статье, давайте вместе "двигать" 1С в правильном направлении ;)
P.S. "Прикрутить" данный механизм запуска к платформе версий ниже 8.3.18 не составляет особого труда, для этого необходимо изменить в параметре ExecStart каталог из которого осуществляется запуск ragent
ExecStart=/bin/sh -c "/opt/1C/%I/x86_64/ragent -d ${SRV1CV8_DATA} -port ${SRV1CV8_PORT} -regport ${SRV1CV8_REGPORT} \
-range ${SRV1CV8_RANGE} -seclev ${SRV1CV8_SECLEV} -pingPeriod ${SRV1CV8_PING_PERIOD} -pingTimeout ${SRV1CV8_PING_TIMEOUT} ${SRV1CV8_DEBUG}"
и сделать символьную ссылку
$ sudo ln -s /opt/1C/v8.3 /opt/1C/default