Разнесение веб-сервера Apache и сервера приложений 1С на разные физические или виртуальные машины — это стандартная практика для высоконагруженных систем или систем, требующих повышенной безопасности. В такой схеме Apache выступает в роли "входных ворот" для пользователей, а сервер приложений 1С:Предприятие обрабатывает основную бизнес-логику. Однако при такой настройке часто возникают сложности: 1С "не видит" веб-сервер, или веб-сервер не может соединиться с кластером. Рассмотрим подробно, как правильно настроить эту связку.
Прежде всего, разберем базовый принцип: для того чтобы Apache мог работать с 1С, на сервере, где установлен Apache, обязательно должен быть установлен компонент 1С "Модуль расширения веб-сервера". Многие ошибочно полагают, что если база данных и сервер 1С находятся на другой машине, то на сервере с веб-сервером ничего от 1С устанавливать не нужно. Это не так. Веб-сервер Apache сам по себе не умеет "общаться" с протоколами 1С. Ему нужен посредник — библиотека (модуль), которая будет принимать HTTP-запросы и перенаправлять их в кластер 1С.
Проанализируем основные требования к установке:
Поскольку наши компоненты разнесены по разным серверам, выясним, какие порты должны быть открыты, чтобы Apache смог достучаться до 1С. Посмотрим на стандартный список портов кластера 1С:
1540 — Агент сервера;1541 — Менеджер кластера;1560-1591 — Диапазон портов рабочих процессов.Если между сервером Apache и сервером 1С стоит брандмауэр (Firewall), необходимо разрешить входящие соединения на эти порты со стороны IP-адреса веб-сервера. Также убедимся, что сервер Apache может разрешить (resolve) сетевое имя сервера 1С. Если DNS настроен некорректно, можно временно добавить запись в файл hosts.
Запустим программу установки 1С:Предприятие на сервере, где находится Apache. В списке компонентов выберем:
После установки у нас в каталоге bin платформы появятся файлы модулей: wsap24.dll (для Windows) или wsap24.so (для Linux). Эти файлы — сердце нашей интеграции.
Теперь рассмотрим, как выполнить публикацию. Самый надежный способ при разнесенных серверах — использование утилиты командной строки webinst. Она позволяет четко прописать строку соединения с удаленным сервером. Разберем синтаксис команды для Apache 2.4 на примере клиент-серверной базы.
Рассмотрим пример команды для Windows:
webinst -publish -apache24 -wsdir "MyBase" -dir "C:\inetpub\wwwroot\MyBase" -connstr "Srvr=192.168.1.50;Ref=MyBaseName;" -confpath "C:\Program Files\Apache24\conf\httpd.conf"
Разберем параметры подробнее:
-publish — команда на публикацию;-apache24 — тип используемого веб-сервера;-wsdir — имя виртуального каталога, который будет виден в браузере (например, http://web-server/MyBase);-dir — физический путь на диске сервера Apache, где будет создан файл настроек публикации default.vrd;-connstr — самый важный параметр. Здесь мы указываем адрес удаленного сервера 1С (параметр Srvr) и имя базы в кластере (параметр Ref);-confpath — путь к конфигурационному файлу Apache, в который утилита внесет изменения.Если автоматическая публикация через webinst выдает ошибку, проанализируем, как внести правки вручную. Откроем файл httpd.conf веб-сервера Apache и убедимся, что в конце файла добавлены строки загрузки модуля 1С.
Для 64-битной платформы на Windows это выглядит примерно так:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.23.1865/bin/wsap24.dll"
Alias "/MyBase" "C:/inetpub/wwwroot/MyBase/"
<Directory "C:/inetpub/wwwroot/MyBase/">
AllowOverride None
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/MyBase/default.vrd"
</Directory>
Важно помнить: пути в конфигурационном файле Apache должны использовать прямой слэш /, даже в Windows. Если вы используете Linux, путь к модулю будет выглядеть как /opt/1cv8/x86_64/8.3.23.1865/wsap24.so.
При разнесении серверов файл 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="/MyBase"
ib="Srvr="192.168.1.50";Ref="MyBaseName";">
<standardOdata enable="true"
publishExtensionsByDefault="true"/>
</point>
Обратите внимание на использование " для кавычек внутри атрибута ib. Если вы используете 1С:Документооборот, убедитесь, что в этом файле также прописаны публикации для веб-сервисов, так как 1С:ДО активно использует их для интеграции.
Выясним причину, по которой база может не открываться даже после правильной настройки конфигов. Часто это права доступа. Пользователь, от имени которого запущен Apache (в Windows это обычно SYSTEM или LocalService, в Linux — www-data или apache), должен иметь полные права на папку, в которой лежит файл default.vrd.
Если вы работаете в среде Linux, проанализируем влияние SELinux. Эта система безопасности может блокировать сетевые соединения для веб-сервера. Выполним команду для проверки:
setsebool -P httpd_can_network_connect 1
Эта команда разрешает процессу httpd инициировать сетевые соединения, что критически важно, так как наш Apache должен подключиться к серверу 1С по портам 1540, 1541 и другим.
Если вы настраиваете доступ через HTTPS (что крайне рекомендуется для 1С:ДО), убедитесь, что сертификаты установлены корректно в Apache. При разнесенных серверах шифрование обычно происходит между браузером пользователя и Apache. Внутренний трафик между Apache и кластером 1С может идти без шифрования (по локальной сети), но если требуется полная защита, необходимо настраивать сертификаты и на стороне сервера приложений 1С.
Подведем итог нашей совместной работы. Для успешной работы Apache и 1С на разных серверах мы выполнили:
webinst с указанием параметра -connstr, указывающего на удаленный сервер.Теперь ваша система готова к работе. Помните, что при каждом обновлении платформы на основном сервере 1С вам необходимо будет обновлять и модули расширения на сервере Apache, иначе возникнет конфликт версий, и пользователи не смогут войти в систему.