Данная статья является дополнением (продолжением) к первой статье по 1C и systemd
Не смотря на то, что фирма 1С совершает поступательные движения на встречу пользователям ее продукции, все равно остаются "белые пятна", которые приходится восполнять самостоятельно! К таким "недоработкам", как мне кажется, относятся механизмы запуска сервисов 1С Предприятия на платформе GNU/Linux. В частности, речь идет о сервере хранилища конфигураций (он же crserver) и сервере удаленного управления (он же ras)
Платформа версий 8.3.18 и старше принесла нам возможность "из коробки" устанавливать одновременно более одной версии 1С Предприятия на Linux-сервера. В Платформе 8.3.21 и старше "в коробке" даже появился мультисервисный файл systemd для сервера 1С Предприятия. Однако, при этом для сервера удаленного управления "в коробку" почему-то положили обычный (не мультисервисный) файл systemd. Что же касается сервера хранилища конфигураций, то там вообще никаких инструментов запуска "в коробку" не поместили.
Сохраняя "концепцию" первой статьи, в данном материале представлены мультисервисные файлы systemd для запуска серверов хранилища конфигураций и удаленного управления.
ВАЖНО: Изложенная ниже информация относится к 64-х разрядной версии Платформы, если у вас 32-х разрядная, придется внести некоторые коррективы в приведенные здесь файлы!
Сервер удаленного управления (RAS)
Необходим в среде GNU/Linux для управления кластером серверов 1С Предприятия. Чтобы его запустить можно воспользоваться следующим файлом сервиса
[Unit]
Description=1C:Enterprise Remote Administration Service (%i)
After=network.target
[Service]
Type=simple
# Name of the cluster host
Environment=SRV1CV8_HOST=localhost
# Number of the cluster port
Environment=SRV1CV8_PORT=1540
# Nubler of the RAS port
Environment=RAS1CV8_PORT=1542
ExecStart=/bin/sh -c "/opt/1cv8/x86_64/%i/ras cluster --port ${RAS1CV8_PORT} ${SRV1CV8_HOST}:${SRV1CV8_PORT}"
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8
[Install]
DefaultInstance=default
WantedBy=multi-user.target
Который вы можете поместить в каталог /etc/systemd/system с именем ras1cv83@.service
Если вы установили пакеты, например, версии 8.3.22.2239, то для запуска сервера удаленного администрирования потребуется выполнить следующую команду
$ sudo systemctl start ras1cv83@8.3.22.2239
Чтобы прописать данный сервис в автозапуск необходимо выполнить команду
$ sudo systemctl enable ras1cv83@8.3.22.2239
Если вы хотите запустить второй экземпляр сервера удаленного администрирования для второго кластера, например версии платформы 8.3.18.1959, который работает на порту 2540, то вам необходимо сделать следующее
Выполнить команду
$ sudo systemctl edit ras1cv83@8.3.18.1959
В открывшемся редакторе ввести следующее
[Service]
Environment=SRV1CV8_PORT=2540
Environment=RAS1CV8_PORT=2545
Выйти из редактора с сохранением изменений и выполнить команду
$ sudo systemctl daemon-reload
После чего можно запустить сервер удаленного администрирования для кластера версии 8.3.18.1959 командой
$ sudo systemctl enable --now ras1cv83@8.3.18.1959
Сервере удаленного управления будет слушать порт 2545, а управлять кластером, агент которого работает на порту 2540
Если вы мечтаете управлять с одного сервера кластерами, центральные сервера которых находятся на других машинах, то для этого можно воспользоваться коррекцией переменной SRV1CV8_HOST, указав в ней имя необходимого вам сервера (с портами действуете по аналогии с приведенным выше примером)
Сервер хранилища конфигураций
Чтобы запустить сервер хранилища можно воспользоваться следующим файлом сервиса
[Unit]
Description=1C:Enterprise Configuration Repository Server (%i)
After=network.target
[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
# Path to directory with crs data
Environment=CRS1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8
# Number of the crs port
Environment=CRS1CV8_PORT=1542
ExecStart=/bin/sh -c "/opt/1cv8/x86_64/%i/crserver -port ${CRS1CV8_PORT} -d ${CRS1CV8_DATA}"
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
[Install]
DefaultInstance=default
WantedBy=multi-user.target
Который вы можете поместить в каталог /etc/systemd/system с именем crs1cv83@.service
Если вы установили пакеты, например, версии 8.3.22.2239, то для запуска сервера хранилища конфигураций потребуется выполнить следующую команду
$ sudo systemctl start crs1cv83@8.3.22.2239
Чтобы прописать данный сервис в автозапуск необходимо выполнить команду
$ sudo systemctl enable crs1cv83@8.3.22.2239
Если вы хотите запустить второй экземпляр сервера хранилища, который будет работать на порту 1642 и носить имя crs1cv83@second, а данные будет хранить в каталоге /crc/second, то вам необходимо сделать следующее
Выполнить команды
$ sudo ln -s /opt/1cv8/x86_64/8.3.22.2239 /opt/1cv8/x86_64/second
$ sudo systemctl edit crs1cv83@second
В открывшемся редакторе ввести следующее
[Service]
Environment=CRS1CV8_DATA=/crs/second
Environment=CRS1CV8_PORT=2642
Выйти из редактора с сохранением изменений и выполнить команду
$ sudo systemctl daemon-reload
После чего можно запустить сервер хранилища конфигураций командой
$ sudo systemctl enable --now crs1cv83@second
Примечания
Допускаю, что не всем подойдет выбранная схема "шаблонизации" сервисов (по версии платформы), но тут каждый может скорректировать файлы сервиса под свой сценарий использования
В случаях, когда у вас используется один сервер 1С Предприятия и рядом сервер удаленного управления, то при обновлении версии Платфомры 1С вам достаточно будет выполнить серию команд (например, у вас была 8.3.18.1959, установили 8.3.22.1923)
$ sudo systemctl disable --now srv1cv83@8.3.18.1959
$ sudo systemctl disable --now ras1cv83@8.3.18.1959
$ sudo systemctl enable --now srv1cv83@8.3.22.1923
$ sudo systemctl enable --now ras1cv83@8.3.22.1923
У вас не будет необходимости удалять старый файл сервиса и добавлять новый, как это предполагает "решение из коробки", достаточно просто остановить сервисы старой версии и запустить сервисы новой!
Файлы сервисов вы так же сможете найти на Gihub