Публикация баз данных 1С:Предприятие 8.3 на веб-сервере Apache в Debian или Ubuntu

  • Автор:

1cv83-web-access-linux-000.png

Публикация информационных баз 1С:Предприятие на веб-сервере приобретает все большую популярность, так как позволяет легко организовать доступ с использованием стандартных протоколов HTTP/HTTPS из любого места где есть интернет. При этом вы можете работать даже там, где доступ в интернет ограничен одним лишь серфингом, если работает браузер - будет работать и 1С. Сегодня мы подробно рассмотрим настройку веб-сервера для совместной работы с 1С:Предприятие 8.3 на платформах Debian или Ubuntu.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Обычно во всех инструкциях по установке сервера 1С на платформе Linux вместе с ним устанавливают и веб-сервер Apache, что не совсем правильно с точки зрения безопасности и удобства администрирования. С учетом того, что веб-сервер обычно используется для работы с внешними пользователями, то крайне желательно использовать на нем актуальные версии ПО с последними обновлениями безопасности. Это не всегда возможно, если веб-сервер установлен на одном узле с сервером 1С, так как обновление критически важного для предприятия сервера - это весьма непростая задача.

С выносом веб-сервера на отдельную машину многие задачи автоматически снимаются, мы всегда можем использовать самые последние и актуальные версии ПО, а в случае компрометации сервера злоумышленник не получит доступ к серверу 1С, тем более что отдельно стоящий веб-сервер всегда можно вынести в отдельную подсеть или демилитаризованную зону. Кроме того, появляются новые возможности.

Например, веб-сервер можно использовать как единую точку консолидации для нескольких серверов, единственное условие - одинаковые версии технологической платформы. Это удобно, не нужно запоминать какая база расположена на каком сервере, кроме того, пробросить один сервер на внешний интерфейс или в VPN-сеть легче, чем группу серверов, для которых придется использовать нестандартные порты, что в ряде случаев может составить проблему.

1cv83-web-access-linux-001.pngВозможна также и иная схема, когда несколько веб-серверов работают с одним сервером 1С. Это оправдано, когда следует разделить набор доступных баз и обеспечить разный уровень безопасности, высокий для внешних пользователей и стандартный для внутренних, либо обеспечить балансировку нагрузки.

1cv83-web-access-linux-002.png

Также возможны и любые иные комбинации, которые ограничены только вашими возможностями и потребностями. А с учетом относительной нетребовательности веб-сервера к ресурсам, для них можно использовать виртуальные машины или контейнеры. Например, мы имеем хороший опыт по использованию контейнеров в системе виртуализации 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

Скопируем эти пакеты в отдельную директорию, скажем, в домашнем каталоге, перейдем в него и установим пакеты:

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С.

1cv83-web-access-linux-003.pngТакже веб-клиент не умеет использовать лицензии 1С текущего узла, а сначала пытается найти локальную лицензию на веб-сервере, а затем ищет их на сервере 1С, если их там нет, то вы не сможете запустить информационную базу даже при наличии на компьютере активной лицензии 1С.

1cv83-web-access-linux-004.pngПоэтому мы рекомендуем использовать тонкий клиент везде, где это возможно. Для подключения следует использовать строку http://SRV-WEB-1C/InfoBase или http://192.168.16.136/InfoBase, для подключения можно использовать FQDN, плоское имя или IP-адрес, с условием, что имена разрешаются на клиенте в адрес сервера. Предпочтительно использовать FQDN, но работать будет любой вариант.

При настройке тонкого клиента просто укажите адрес в диалоге добавления новой информационной базы:

1cv83-web-access-linux-005.pngЗдесь мы еще раз напомним, что адрес регистрозависимый и если вы ранее указали в параметре 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 и установим ее.

1cv83-web-access-linux-006.pngВ нашем случае это библиотека 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.

Дополнительные материалы:


  1. Настраиваем веб-доступ для 1С:Предприятия в файловом режиме
  2. Настраиваем веб-доступ для 1С:Предприятия в файловом режиме на платформе Linux
  3. Публикация баз данных 1С:Предприятие 8.3 на веб-сервере Apache в Debian или Ubuntu

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments