Публикация баз данных 1С версий 8.3.21.xxxx на сервере под управлением Centos 8
Как обычно бывает появилась задача: Организация решила опуститься с «облаков» на землю и организовать свою собственную инфраструктуру для собственного «зоопарка» из макбуков, ноутбуков и системных блоков как под Windows, так и под Linux. Общее во всем этом работа в 1С-Торговля.
Решение: установить сервер 1С-Предприятие на Centos 8 c Postgres от 1С и перенести данные с «облаков» на этот сервер.
И вот тут обанаружилось наличие на складах ТСД, которые работали с 1С по http/ …
Что-ж приступаем:
- Устанавливаем web-сервер apache
# dnf install httpd - Запускаем web-сервер systemctl start httpd
- Включаем автозапуск сервиса systemctl enable —now httpd
- Настраиваем межсетевой экран. В моем случае подключение было необходимо в домашней зоне. firewall-cmd —permanent —zone=external —add-port=80/tcp —add-port=443/tcp firewall-cmd —reload
- перезагружаем сервер reboot
- Создаем каталог где будет храниться публикация базы mkdir -p /var/www/html/<my_public_base1c>
- Публикуем базу 1С Строка инициализации сервера /opt/1cv8/x86_64/8.3.21.xxxx/webinst -publish -apache24 -wsdir <my_alias_public_base1c> -dir /var/www/html/<my_public_base1c> -connstr «Srvr=<name server1c>;Ref=<name base1c>;» -confpath /etc/httpd/conf/httpd.conf Строка инициализации для файловой базы /opt/1cv8/x86_64/8.3.21.xxxx/webinst -publish -apache24 -wsdir <my_alias_public_base1c> -dir /var/www/html/<my_public_base1c> -connstr «File=/opt/1Cbase;» -confpath /etc/httpd/conf/httpd.conf где
<my_alias_public_base1c> | алиас, который нужно будет добавить к адресу сервера для доступа к этой базе |
/var/www/html/<my_public_base1c> | путь к публикации базы, где будет располагаться .vrd файл с описанием подключения к базе через web |
File=/opt/1Cbase; | строка подключения файловой базы |
Srvr=<name server1c>;Ref=<name base1c>; | строка подключения серверной базы |
Например:
имя сервера server1c.itmedik.local (возможно указание IP-адреса)
имя базы = it2022
версия 1С 8.3.21.1484
алиасом к базе выбрали itmedik2022
каталог к публикации it22
тогда строка инициализации будет следующей:
/opt/1cv8/x86_64/8.3.21.1484/webinst -publish -apache24 -wsdir itmedik2022 -dir /var/www/html/it22 -connstr «Srvr=server1c.itmedik.local;Ref=it2022;» -confpath /etc/httpd/conf/httpd.conf
Обращаю внимание, что имя сервера должно быть полным как в hostname
- Перезагружаем сервер и проверяем работу сервиса по адресу: http://<name server1c>/<my_alias_public_base1c> Для строки инициализации из примера будет выглядеть так: http://server1c.itmedik.local/itmedik2022
С публикацией базы проблем как бы и нет. Есть описание и на сайте 1С и на других сайтах, а вот что делать еслив конфигурации есть дополнительные web — сервисы?
Мне достался ТСД в настройках которого было прописано:
http://<адрес обрачного сервера>/<алиас базы>/ws/datawobileexch
смотрим содержимое /etc/httpd/conf/httpd.conf и видим добавленные там строки
# 1c publication
Alias «/itmedik2022» «/var/www/html/it22/»
<Directory «/var/www/html/it22/»>
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor «/var/www/html/it22/default.vrd»
</Directory>
Смотрим файл /var/www/html/it22/default.vrd
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»
xmlns:xs=»http://www.w3.org/2001/XMLSchema»
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»
base=»/itmedik2022″
ib=»Srvr=server1c.itmedik.local;Ref=it2022;»>
<standardOdata enable=»true»
reuseSessions=»autouse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
<analytics enable=»true»/>
</point>
Тоже как бы все понятно, но нет ни какого ws
Специалист 1C сказал, что в конфигурации базы есть сервис DataMobileExch с алиасом wsDMExch.
В результате поисков файл default.vrd привели к следующему виду:
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»
xmlns:xs=»http://www.w3.org/2001/XMLSchema»
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»
base=»/itmedik2022″
ib=»Srvr=server1c.itmedik.local;Ref=it2022;»>
<ws>
<point name=»DataMobileExch»
alias=»wsDMExch.1cws»
enable=»true»
reuseSessions=»dontuse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
</ws>
<standardOdata enable=»true»
reuseSessions=»autouse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
<analytics enable=»true»/>
</point>
После перезапуска сервера и замены в настройках ТСД облачного сервера на локальный сервис ТСД заработал