Публикация информационных баз 1С:Предприятие на веб-сервере приобретает все большую популярность, так как позволяет легко организовать доступ с использованием стандартных протоколов HTTP/HTTPS из любого места где есть интернет. При этом вы можете работать даже там, где доступ в интернет ограничен одним лишь серфингом, если работает браузер - будет работать и 1С. Сегодня мы подробно рассмотрим настройку веб-сервера для совместной работы с 1С:Предприятие 8.3 на платформах Debian или Ubuntu.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Обычно во всех инструкциях по установке сервера 1С на платформе Linux вместе с ним устанавливают и веб-сервер Apache, что не совсем правильно с точки зрения безопасности и удобства администрирования. С учетом того, что веб-сервер обычно используется для работы с внешними пользователями, то крайне желательно использовать на нем актуальные версии ПО с последними обновлениями безопасности. Это не всегда возможно, если веб-сервер установлен на одном узле с сервером 1С, так как обновление критически важного для предприятия сервера - это весьма непростая задача.
С выносом веб-сервера на отдельную машину многие задачи автоматически снимаются, мы всегда можем использовать самые последние и актуальные версии ПО, а в случае компрометации сервера злоумышленник не получит доступ к серверу 1С, тем более что отдельно стоящий веб-сервер всегда можно вынести в отдельную подсеть или демилитаризованную зону. Кроме того, появляются новые возможности.
Например, веб-сервер можно использовать как единую точку консолидации для нескольких серверов, единственное условие - одинаковые версии технологической платформы. Это удобно, не нужно запоминать какая база расположена на каком сервере, кроме того, пробросить один сервер на внешний интерфейс или в VPN-сеть легче, чем группу серверов, для которых придется использовать нестандартные порты, что в ряде случаев может составить проблему.
Возможна также и иная схема, когда несколько веб-серверов работают с одним сервером 1С. Это оправдано, когда следует разделить набор доступных баз и обеспечить разный уровень безопасности, высокий для внешних пользователей и стандартный для внутренних, либо обеспечить балансировку нагрузки.
Также возможны и любые иные комбинации, которые ограничены только вашими возможностями и потребностями. А с учетом относительной нетребовательности веб-сервера к ресурсам, для них можно использовать виртуальные машины или контейнеры. Например, мы имеем хороший опыт по использованию контейнеров в системе виртуализации Proxmox.
Настройка сервера
В первую очередь установим веб-сервер Apache, так как 1С:Предприятие, начиная с версии платформы 8.3.8 поддерживает актуальную версию Apache 2.4, то вся установка сводится к единственной команде:
apt install apache2
Компания 1С рекомендует использовать модуль мультипроцессной обработки worker, поэтому следует выяснить с каким модулем работает ваш сервер, для этого выполним:
apachectl -V | grep -i mpm
Если это prefork или event, то их следует отключить:
a2dismod mpm_prefork
или
a2dismod mpm_event
После чего включим worker и перезапустим веб-сервер:
a2enmod mpm_worker
systemctl restart apache2
Установка модуля расширения веб-сервера для платформы 8.3.19 и ниже
Установим модуль расширения веб-сервера от 1С, для этого скачаем с официального сайта архив Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем. Сразу сделаем оговорку, мы не видим никаких причин использовать в 2019 году 32-битные версии веб-серверов для 1С, поэтому здесь и далее мы будем работать только с 64-битными системами.
Из данного архива нам понадобятся три пакета: 1c-enterprise83-ws - сам модуль веб-расширения, 1c-enterprise83-common - требуется по зависимостям и 1c-enterprise83-server, которого нет в зависимостях, но без которого веб-сервер с 1С работать не будет. Если вы используете в 1С языки отличные от русского, то вам потребуется еще добавить одноименные пакеты nls
Скопируем эти пакеты в отдельную директорию, скажем, 1С в домашнем каталоге, перейдем в него и установим пакеты:
cd ~/1C
dpkg -i 1c*.deb
После чего отключим автозагрузку сервера 1С, который для работы не нужен, в целях экономии ресурсов:
systemctl disable srv1cv83
Если все делать "по инструкции", то следующими шагами должна быть установка прав на папки и файлы, но на практике этого не требуется, так как модуль веб-сервера работает только на чтение и имеет для этого все права с настройками по умолчанию.
Установка модуля расширения веб-сервера для платформы 8.3.20 и выше
Начиная с платформы 8.3.20 компания 1С перешла на единый дистрибутив, который также следует скачать с официального сайта, он поставляется в виде архива с именем типа server64_8_3_20_1710.tar.gz, где 8_3_20_1710 - версия платформы.
Если вы используете Debain 11, то нужно добавить репозиторий от предыдущего выпуска для установки библиотеки libenchant1c2a:
echo "deb http://ftp.ru.debian.org/debian buster main" > /etc/apt/sources.list.d/buster.list
Не забудьте после этого обновить список пакетов:
apt update
Теперь перейдем в директорию с единым дистрибутивом (в нашем случае это домашняя директория) и распакуем его:
cd ~
tar -xzf server64_8_3_20_1710.tar.gz
Для установки расширения веб-сервера запустите инсталлятор с ключами:
./setup-full-8.3.20.1710-x86_64.run --mode unattended --enable-components ws
Никаких действий больше предпринимать не нужно.
Публикация клиент-серверных баз
Перед тем как публиковать базу нужно выполнить некоторые условия. Обращаться к серверу 1С можно только по имени хоста, которое веб-сервер должен разрешать в IP-адрес, в доменных сетях это решается использованием доменных DNS, но в любом случае разрешение имен следует проверить.
Для одноранговых сетей следует добавить запись в файл /etc/hosts:
192.168.16.130 SRV-1C
Где SRV-1C имя вашего сервера 1С, перед которым указываем его IP-адрес.
Затем создадим директорию для публикации информационной базы, расположение может быть любым, но хорошим тоном для Linux-систем будет использование стандартных расположений, для веб-сервера это /var/www:
mkdir /var/www/infobase
После чего можно перейти непосредственно к публикации, для этого будем использовать утилиту webinst, предварительно перейдя в каталог с ее расположением. Обратите внимание, что на платформах 8.3.17 и ниже использовался следующий путь:
cd /opt/1C/v8.3/x86_64
Начиная с платформы 8.3.18 стало возможным устанавливать сразу несколько версий и поэтому путь к расположению файлов платформы изменился и содержит номер ее версии:
cd /opt/1cv8/x86_64/8.3.20.1710
Для публикации баз используйте команду:
./webinst -publish -apache24 -wsdir InfoBase -dir /var/www/infobase -connstr "Srvr=SRV-1C;Ref=Infobase;" -confpath /etc/apache2/apache2.conf
Коротко поясним используемые параметры:
- publish - указывает необходимое действие, в данном случае публикацию, может быть опущен, так как это действие по умолчанию
- apache24 - задает тип веб-сервера, для Apache 2.2 следует указывать apache22.
- wsdir - имя публикации, по которому к базе следует обращаться из браузера, обратите внимание, что оно регистрозависимое
- dir - путь публикации, ранее созданная нами директория
- connstr - строка соединения, состоит из нескольких частей: Srvr - имя сервера, Ref - имя базы на сервере, каждая часть должна заканчиваться служебным символом ";"
- confpath - путь к конфигурационному файлу веб-сервера
После чего следует перезапустить веб-сервер:
systemctl restart apache2
Теперь можно подключаться к базе. Есть два варианта: использовать веб-клиент, работающий через браузер или тонкий клиент, установив нужную версию платформы. Мы не рекомендуем использовать веб-клиент, потому как его возможности не позволяют использовать весь функционал платформы, например, у нас он стабильно падал при попытке использовать Планировщик в 1С.
Также веб-клиент не умеет использовать лицензии 1С текущего узла, а сначала пытается найти локальную лицензию на веб-сервере, а затем ищет их на сервере 1С, если их там нет, то вы не сможете запустить информационную базу даже при наличии на компьютере активной лицензии 1С.
Поэтому мы рекомендуем использовать тонкий клиент везде, где это возможно. Для подключения следует использовать строку http://SRV-WEB-1C/InfoBase или http://192.168.16.136/InfoBase, для подключения можно использовать FQDN, плоское имя или IP-адрес, с условием, что имена разрешаются на клиенте в адрес сервера. Предпочтительно использовать FQDN, но работать будет любой вариант.
При настройке тонкого клиента просто укажите адрес в диалоге добавления новой информационной базы:
Здесь мы еще раз напомним, что адрес регистрозависимый и если вы ранее указали в параметре wsdir имя InfoBase, то в дальнейшем его следует использовать в строке подключения, потому как http://SRV-WEB-1C/InfoBase - работать будет, а http://SRV-WEB-1C/infobase вызовет ошибку 404.
Публикация файловых баз
Возможно, вы удивитесь, но модуль расширения веб-сервера позволяет публиковать файловые базы на сервере без графического интерфейса и без установки клиента 1С, единственное условие - база физически должна располагаться на веб-сервере.
Также нам потребуется установить все необходимые для работы 1С библиотеки и шрифты. Для этого потребуется подключить несвободные репозитории, откройте файл /etc/apt/sources.list и в Debian добавьте в конце каждой строки:
contrib
а в Ubuntu раскомментируйте строки содержащие в конце
multiverse
В Debain 11 нужно также добавить репозиторий от предыдущего выпуска для установки библиотеки libenchant1c2a:
echo "deb http://ftp.ru.debian.org/debian buster main" > /etc/apt/sources.list.d/buster.list
Затем выполните:
apt update
apt install ttf-mscorefonts-installer
apt install libfontconfig1
apt install libgsf-1-114
apt install libglib2.0-0
apt install libodbc1
В зависимости от используемого вами дистрибутива часть библиотек может быть уже установлена, о чем вы получите сообщение, так в Debian 9/10 по умолчанию установлены libfontconfig1 и libglib2.0-0.
Затем установим библиотеки ImageMagick, в разных дистрибутивах они могут иметь разные версии, поэтому выполним:
apt search libmagickwand-6
В выводе найдем нужную версию с окончанием на q16-x и установим ее.
В нашем случае это библиотека libmagickwand-6.q16-6:
apt install libmagickwand-6.q16-6
Теперь создадим директорию для расположения файловой базы, например:
mkdir /opt/1C_bases/InfoBase2
И поместим в нее любым доступным способом, скажем, через SFTP, файл базы данных 1Cv8.1CD, имейте ввиду, что клиента 1С на веб-сервере нет и загрузить на нем DT-файл мы не можем, поэтому его нужно развернуть в другом месте и передать на сервер именно 1CD.
Затем обязательно изменим владельца директории на пользователя веб-сервера:
chown -R www-data:www-data /opt/1C_bases
Создадим каталог публикации:
mkdir /var/www/infobase2
Затем перейдем с каталог с установленной платформой, для версии 8.3.17 и ниже выполните:
cd /opt/1C/v8.3/x86_64
Для 8.3.18 и выше (учитывайте, что путь содержит номер платформы):
cd /opt/1cv8/x86_64/8.3.20.1710
Теперь можно публиковать базу:
./webinst -publish -apache24 -wsdir InfoBase2 -dir /var/www/infobase2 -connstr "File=/opt/1C_bases/InfoBase2;" -confpath /etc/apache2/apache2.conf
Перезапустим веб-сервер и базой можно работать:
systemctl restart apache2
Но для работы следует использовать исключительно тонкий клиент, так как веб-клиент не сможет получить лицензию.
Для корректной работы с файловыми базами следует ограничить Apache одним рабочим процессом, в противном случае вы можете столкнуться с ошибкой Объект заблокирован. Чтобы избежать этого, откроем /etc/apache2/mods-available/mpm_worker.conf и установим следующие значения:
StartServers 1
MinSpareThreads 1
MaxSpareThreads 1
Если вы используете иные модули мультипроцессной обработки, то нужно внести изменения в их конфигурационные файлы, для event это /etc/apache2/mods-available/mpm_event.conf, настройки выполняются аналогично модулю worker (приведены выше).
В случае использования prefork откройте /etc/apache2/mods-available/mpm_prefork.conf и установите следующие значение опциям:
StartServers 1
MinSpareServers 1
MaxSpareServers 1
После чего не забудьте перезапустить веб-сервер.
Данная настройка может существенно снизить производительность и поэтому мы не рекомендуем совмещать на одном сервере публикацию файловых и клиент-серверных баз, особенно при большом количестве обслуживаемых клиентов.
Особенности обновления платформы 8.3.18 и выше
Несмотря на то, что начиная с этой версии можно устанавливать сразу несколько платформ расширение веб-сервера может работать только с одной версией платформы, поэтому предыдущие версии при обновлении нужно удалить, автоматической замены версии пакета, как это было в 8.3.17 и ниже не произойдет.
Для платформ 8.3.18 - 8.3.19 выполните:
apt remove 1c-ent*
Для 8.3.20 и выше:
/opt/1cv8/x86_64/8.3.20.1549/uninstaller-full
Затем установите новую версию платформы, как это сделать - смотрите в соответствующем разделе нашей статьи.
После чего откройте файл /etc/apache2/apache2.conf и найдите в нем строку:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.20.1549/wsap24.so"
И исправьте в ней путь согласно установленной вами версии платформы, после чего перезапустите веб-сервер:
systemctl restart apache2
Как видим, никаких особых сложностей при обновлении платформы нет, но следует учитывать особенности и изменения в последних выпусках 1С.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии