Запуск сервера 1С, RAS сервиса и CRS сервиса на Linux: различия между версиями

Материал из iSphinx Home Wiki

 
(не показано 12 промежуточных версий этого же участника)
Строка 1: Строка 1:
== О том, как сделать запуск сервера 1С на GNU/Linux для версии платформы 8.3.18 и выше, которая позволяет устанавливать одновременно пакеты нескольких версий, а также сделать запуск серверов хранилища конфигураций (вдруг еще кто-то до сих пор пользуется) и удаленного администрирования под GNU/Linux с использованием systemd ==
== Запуск сервера 1С на GNU/Linux, запуск серверов хранилища конфигураций, запуск удаленного администрирования с использованием systemd ==
В этой статье речь пойдет про механизм запуска сервера 1С, который вендор до сих пор ни как не решится включить в "коробку", не смотря на явные его преимущества.
В этой статье речь пойдет про механизм запуска сервера 1С, который вендор до сих пор ни как не решится включить в "коробку", не смотря на явные его преимущества.


Строка 7: Строка 7:


Первым делом помещаем в каталог /etc/systemd/system файл шаблона сервиса [email protected] следующего содержания:<pre>
Первым делом помещаем в каталог /etc/systemd/system файл шаблона сервиса [email protected] следующего содержания:<pre>
[Unit]
[Unit]
Description=1C:Enterprise Server 8.3 (%i)
Description=1C:Enterprise Server 8.3 (%i)
Requires=network.target
Requires=network.target
 
[Service]
[Service]
Type=simple
Type=simple
User=usr1cv8
User=usr1cv8
Group=grp1cv8
Group=grp1cv8
# Path to directory with claster data
# Path to directory with claster data
Environment=SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8/
Environment=SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8/
# Number of the cluster port created by default during first
# launch of ragent
# Number of the cluster port created by default during first
Environment=SRV1CV8_PORT=1540
# launch of ragent
# Number of cluster agent main port. This port is used by the
Environment=SRV1CV8_PORT=1540
# cluster console to address the central server. Cluster agent
# port is also specified as the IP port of the working server.
# Number of cluster agent main port. This port is used by the
Environment=SRV1CV8_REGPORT=1541
# cluster console to address the central server. Cluster agent
# Port range for connection pool
# port is also specified as the IP port of the working server.
Environment=SRV1CV8_RANGE=1560:1591
Environment=SRV1CV8_REGPORT=1541
# Security level:
# 0 - unprotected connections
# Port range for connection pool
# 1 - protected connections only for the time of user
Environment=SRV1CV8_RANGE=1560:1591
#    authentication
# 2 - permanently protected connections
# Security level:
Environment=SRV1CV8_SECLEV=0
# 0 - unprotected connections
# 1C:Enterprise server configuration debug mode
# 1 - protected connections only for the time of user
# blank - default - debug mode is off
#    authentication
# -debug - debug mode is on
# 2 - permanently protected connections
Environment=SRV1CV8_DEBUG=
Environment=SRV1CV8_SECLEV=0
# Check period for connection loss detector, milliseconds
Environment=SRV1CV8_PING_PERIOD=1000
# 1C:Enterprise server configuration debug mode
# Response timeout for connection loss detector, milliseconds
# blank - default - debug mode is off
Environment=SRV1CV8_PING_TIMEOUT=5000
# -debug - debug mode is on
# 1C:Enterprise server keytab file.
#
# default - usr1cv83.keytab file in 1C:Enterprise server
Environment=SRV1CV8_DEBUG=
#          installation directory
Environment=KRB5_KTNAME=/opt/1cv8/x86_64/%i/usr1cv8.keytab
# Check period for connection loss detector, milliseconds
 
Environment=SRV1CV8_PING_PERIOD=1000
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}"
# Response timeout for connection loss detector, milliseconds
Restart=always
Environment=SRV1CV8_PING_TIMEOUT=5000
RestartSec=5
 
# 1C:Enterprise server keytab file.
[Install]
# default - usr1cv83.keytab file in 1C:Enterprise server
DefaultInstance=default
#          installation directory
WantedBy=multi-user.target</pre>
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</pre>
Если вы установили пакеты, например, версии 8.3.18.1208, то для запуска сервера 1С потребуется выполнить следующую команду
Если вы установили пакеты, например, версии 8.3.18.1208, то для запуска сервера 1С потребуется выполнить следующую команду
<pre>sudo systemctl start [email protected]</pre>
<pre>sudo systemctl start [email protected]</pre>
Строка 91: Строка 81:
  Environment=SRV1CV8_PING_PERIOD=3000
  Environment=SRV1CV8_PING_PERIOD=3000
  Environment=SRV1CV8_PING_TIMEOUT=15000
  Environment=SRV1CV8_PING_TIMEOUT=15000


Несмотря на то, что фирма 1С совершает поступательные движения навстречу пользователям ее продукции, все равно остаются "белые пятна", которые приходится восполнять самостоятельно! К таким "недоработкам", как мне кажется, относятся механизмы запуска сервисов 1С Предприятия на платформе GNU/Linux. В частности, речь идет о сервере хранилища конфигураций (он же crserver) и сервере удаленного управления (он же ras)
Несмотря на то, что фирма 1С совершает поступательные движения навстречу пользователям ее продукции, все равно остаются "белые пятна", которые приходится восполнять самостоятельно! К таким "недоработкам", как мне кажется, относятся механизмы запуска сервисов 1С Предприятия на платформе GNU/Linux. В частности, речь идет о сервере хранилища конфигураций (он же crserver) и сервере удаленного управления (он же ras)
Строка 156: Строка 144:


Сервер хранилища конфигураций
Сервер хранилища конфигураций


Чтобы запустить сервер хранилища можно воспользоваться следующим файлом сервиса:<pre>
Чтобы запустить сервер хранилища можно воспользоваться следующим файлом сервиса:<pre>

Текущая версия от 03:23, 18 июня 2024

Запуск сервера 1С на GNU/Linux, запуск серверов хранилища конфигураций, запуск удаленного администрирования с использованием systemd

В этой статье речь пойдет про механизм запуска сервера 1С, который вендор до сих пор ни как не решится включить в "коробку", не смотря на явные его преимущества.

Так как при установке пакетов сервера версии 8.3.18 скрипты инициализации (запуска/остановки сервера 1С) автоматически не устанавливаются и их требуется копировать вручную (о чем писано на ИТС), то предлагаемый ниже способ не будет конфликтовать с решением от 1С.

ВАЖНО: Изложенная ниже информация относится к серверу 1С 64-х разрядной версии. Если у вас 32-х разрядный, придется внести некоторые коррективы в приведенные здесь файлы, но это уже сами, я 32-х разрядными версиями не занимаюсь.

Первым делом помещаем в каталог /etc/systemd/system файл шаблона сервиса [email protected] следующего содержания:

[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 [email protected]

Чтобы прописать данный сервис в автозапуск необходимо выполнить команду

sudo systemctl enable [email protected]

В случае, если у вас нет нужды запускать несколько экземпляров сервиса с разной версией платформы, а вы просто хотите управлять запуском и остановкой сервиса через 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" файлов настроек

Так, например, чтобы включить режим отладки для экземпляра сервиса [email protected] требуется создать файл /etc/systemd/system/[email protected]/debug.conf (имя файла может быть любым, главное чтобы расширение было .conf) следующего содержания

[Service]
Environment=SRV1CV8_DEBUG=-debug

Если, например, нам для экземпляра srv1cv83@default необходимо поменять номера портов запуска процессов сервера 1С (увеличив все значения на 1000), тогда мы создаем файл /etc/systemd/system/[email protected]/ports.conf (имя файла может быть любым, главное чтобы расширение было .conf) и помещаем туда следующий текст

[Service]
Environment=SRV1CV8_PORT=2540
Environment=SRV1CV8_REGPORT=2541
Environment=SRV1CV8_RANGE=2560:2591

Если же вы хотите изменить параметры опроса агентом сервера процессов кластера для всех экземпляров сервиса, тогда достаточно создать файл /etc/systemd/system/[email protected]/pings.conf (каталог [email protected] носит имя файла шаблона сервиса, а не его экземпляра, имя файла настроек может быть любым, главное чтобы расширение было .conf) следующего содержания

[Service]
Environment=SRV1CV8_PING_PERIOD=3000
Environment=SRV1CV8_PING_TIMEOUT=15000

Несмотря на то, что фирма 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
# Number 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 с именем [email protected] Который вы можете поместить в каталог /etc/systemd/system с именем [email protected]

Если вы установили пакеты, например, версии 8.3.22.2239, то для запуска сервера удаленного администрирования потребуется выполнить следующую команду:

sudo systemctl start [email protected]

Чтобы прописать данный сервис в автозапуск необходимо выполнить команду:

sudo systemctl enable [email protected]

Если вы хотите запустить второй экземпляр сервера удаленного администрирования для второго кластера, например версии платформы 8.3.18.1959, который работает на порту 2540, то вам необходимо сделать следующее:

Выполнить команду‎:‎

sudo systemctl edit [email protected]

В открывшемся редакторе ввести следующее‎:

[Service]
Environment=SRV1CV8_PORT=2540
Environment=RAS1CV8_PORT=2545

Выйти из редактора с сохранением изменений и выполнить команду:

sudo systemctl daemon-reload

После чего можно запустить сервер удаленного администрирования для кластера версии 8.3.18.1959 командой:

sudo systemctl enable --now [email protected]

Сервер удаленного управления будет слушать порт 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 с именем [email protected]

Если вы установили пакеты, например, версии 8.3.22.2239, то для запуска сервера хранилища конфигураций потребуется выполнить следующую команду:

sudo systemctl start [email protected]

Чтобы прописать данный сервис в автозапуск необходимо выполнить команду:

sudo systemctl enable [email protected]

Если вы хотите запустить второй экземпляр сервера хранилища, который будет работать на порту 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 [email protected]
sudo systemctl disable --now [email protected]
sudo systemctl enable --now [email protected]
sudo systemctl enable --now [email protected]

У вас не будет необходимости удалять старый файл сервиса и добавлять новый, как это предполагает "решение из коробки", достаточно просто остановить сервисы старой версии и запустить сервисы новой!

Файлы сервисов вы так же сможете найти на Gihub