В современных ИТ-инфраструктурах часто возникает задача разделения ролей серверов. Рассмотрим ситуацию, когда у нас есть два сервера на базе Debian: первый выполняет роль шлюза с установленным веб-сервером Apache, а на втором развернуты сервер 1С:Предприятие и база данных PostgreSQL. Наша цель — опубликовать базы (например, БП или ЗУП) на первом сервере, не перенося на него сам сервер приложений 1С. Разберем пошагово, как это реализовать, какие пакеты потребуются и как решить вопрос с лицензированием.
Для начала проанализируем, как будет происходить взаимодействие. Веб-сервер (Apache) не является самостоятельным узлом обработки данных 1С; он служит посредником (шлюзом) между браузером пользователя и сервером приложений 1С. Когда пользователь открывает базу через браузер, Apache загружает специальный модуль расширения 1С, который перенаправляет запросы на основной сервер 1С.
Для успешной работы этой схемы нам необходимо обеспечить беспрепятственную связь между серверами по следующим портам:
Важный момент: Сервер со шлюзом должен уметь разрешать DNS-имя сервера 1С. Если в вашей сети не настроен DNS-сервер, обязательно пропишите соответствие IP-адреса и имени сервера в файле /etc/hosts на обоих машинах.
Выясним, какие именно компоненты 1С должны быть установлены на шлюзе (Сервер 1). Нам не нужно запускать там службу сервера 1С (1c-enterprise-srv), но нам необходимы бинарные файлы модулей расширения веб-сервера. Проанализируем состав пакетов:
1c-enterprise83-common — общие компоненты системы.1c-enterprise83-server — компоненты сервера (необходимы для наличия библиотек, даже если служба не запускается).1c-enterprise83-ws — модули расширения веб-сервера, включая файл mod_wad24.so для Apache 2.4.Посмотрим на пример установки пакетов в Debian/Ubuntu:
sudo dpkg -i 1c-enterprise83-common_8.3.xx-xxxx_amd64.deb
sudo dpkg -i 1c-enterprise83-server_8.3.xx-xxxx_amd64.deb
sudo dpkg -i 1c-enterprise83-ws_8.3.xx-xxxx_amd64.deb
Также не забудем установить зависимости, без которых модули 1С могут не загрузиться в Apache:
sudo apt-get install libenchant-2-2 libharfbuzz0b libicu-dev
Поскольку на Linux-серверах часто отсутствует графическая оболочка, рассмотрим способ публикации через командную строку. Для этого воспользуемся утилитой webinst. Основная хитрость здесь заключается в параметре -connstr, который указывает путь к информационной базе на удаленном сервере.
Разберем пример команды для публикации:
/opt/1cv8/current/webinst -publish -apache24 \
-wsdir MyAccounting \
-dir /var/www/mybase \
-connstr "Srvr=192.168.1.10;Ref=buh_production;" \
-confpath /etc/apache2/apache2.conf
В данном примере:
-wsdir — имя виртуального каталога, по которому база будет доступна в браузере (например, http://gateway/MyAccounting).-dir — физический путь на диске шлюза, где будет создан файл дескриптора публикации .vrd.-connstr — строка соединения. Srvr — это IP или имя вашего второго сервера (где стоит 1С и Postgres), Ref — имя базы в кластере 1С.-confpath — путь к основному конфигурационному файлу Apache в Debian.После выполнения команды в каталоге /var/www/mybase появится файл default.vrd. Проанализируем его структуру. Нам важно убедиться, что секция point содержит правильную строку соединения. Если вы планируете работу большого количества пользователей, рассмотрим добавление параметров управления пулом соединений:
<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="/MyAccounting"
ib="Srvr=192.168.1.10;Ref=buh_production;">
<ws>
<point name="WebServices" alias="ws.1cws"/>
</ws>
</point>
Важно: Убедитесь, что у пользователя, под которым работает Apache (обычно www-data), есть права на чтение этого файла и каталога.
Выясним ситуацию с лицензиями, так как это был один из ключевых вопросов автора. При работе через браузер (веб-клиент) действуют следующие правила:
Поскольку наш первый сервер является шлюзом и, возможно, смотрит в интернет, проанализируем аспекты безопасности:
apache2.conf, но саму публикацию лучше выносить в отдельные файлы sites-available.Таким образом, мы выяснили, что схема с выносом веб-публикации на отдельный Linux-сервер полностью работоспособна. Главное — правильно установить компоненты ws и common, верно указать строку соединения connstr с адресом удаленного сервера и активировать лицензии на стороне сервера приложений 1С.