Разработка и развертывание HTTP-сервисов в среде 1С:Предприятие часто сопряжены с инфраструктурными сложностями, особенно когда сервер приложений 1С, веб-сервер и рабочее место разработчика (Конфигуратор) разнесены по разным машинам и операционным системам. В этой статье мы подробно разберем, как выполнить ручную публикацию сервисов на CentOS с использованием Apache 2.2, и настроим отладку, чтобы точка останова срабатывала корректно.
Рассмотрим типовую, но сложную ситуацию: база 1С работает на Windows-сервере, веб-сервер поднят администратором на отдельной машине под управлением CentOS, а разработка ведется на локальном компьютере. В такой конфигурации стандартная кнопка «Опубликовать» в Конфигураторе оказывается недоступной, так как 1С не имеет прямого доступа к файловой системе веб-сервера. Нам предстоит решить две основные задачи: корректно прописать настройки публикации и обеспечить «видимость» процесса отладки между всеми узлами.
Для начала разберем, как заставить Apache «понимать» нашу базу 1С. Поскольку мы не можем использовать графический интерфейс Конфигуратора, нам необходимо воспользоваться утилитой командной строки webinst или подготовить файл описания виртуального ресурса .vrd вручную.
На стороне сервера CentOS нам потребуется установленная серверная часть платформы 1С (клиентское приложение не обязательно). Это необходимо для наличия модуля расширения веб-сервера (файлы типа wsap22.so). Рассмотрим процесс публикации через утилиту:
webinst. Обычно она располагается в каталоге установки платформы 1С, например: /opt/1C/v8.3/x86_64/webinst.Если по каким-то причинам использование webinst затруднено, мы можем настроить публикацию вручную. Разберем структуру файла default.vrd, который должен располагаться в рабочем каталоге публикации на CentOS (например, /var/www/html/mybase/):
<?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.10:1541;Ref=WorkBase;">
<httpServices publishByDefault="true">
<reuseSessions>autouse</reuseSessions>
<sessionMaxAge>20</sessionMaxAge>
<poolSize>10</poolSize>
<poolTimeout>5</poolTimeout>
</httpServices>
</point>
Проанализируем важные параметры в этом файле:
base: относительный путь, по которому база будет доступна в браузере.ib: строка соединения с сервером 1С. Важно указать корректный IP и порт кластера (по умолчанию 1541).reuseSessions: значение autouse критически важно для HTTP-сервисов, так как оно позволяет переиспользовать сеансы 1С, значительно ускоряя обработку запросов.Одной из самых частых причин, почему после публикации сервисы не работают, является политика безопасности CentOS. Проанализируем состояние SELinux. По умолчанию эта система блокирует исходящие сетевые запросы от Apache (процесса httpd), что мешает веб-серверу подключиться к серверу 1С.
Выполним следующую команду от имени суперпользователя, чтобы разрешить сетевые соединения:
setsebool -P httpd_can_network_connect on
Также проверим права доступа на файл default.vrd и каталог публикации. Владельцем файлов должен быть пользователь, под которым запущен Apache (обычно это apache), либо файлы должны быть доступны ему на чтение.
Это самый сложный этап. Выясним причину, по которой точка останова в HTTP-сервисе может не срабатывать. Для успешной отладки нам нужно обеспечить связь по цепочке: Конфигуратор <--> Сервер 1С <--> Модуль расширения веб-сервера.
Рассмотрим настройки на стороне сервера 1С (Windows). Служба 1C:Enterprise 8.3 Server Agent должна быть запущена с ключом отладки. Разберем правильный формат строки запуска в реестре:
"C:\Program Files\1cv8\8.3.10.2580\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Важный момент: на некоторых версиях платформы (как в примере 8.3.10) использование дополнительного ключа -http может приводить к конфликтам в распределенной среде. Если отладка по протоколу HTTP не взлетает, рекомендуется использовать классический TCP/IP.
Теперь перейдем к настройке файла default.vrd на CentOS для включения режима отладки. Добавим секцию debug внутрь тега point:
<debug enable="true" protocol="tcp" url="192.168.1.50:1541"/>
В параметре url необходимо указать адрес сервера 1С, где запущен рабочий процесс базы. Выясним, почему именно этот адрес: модуль расширения веб-сервера должен сообщить серверу приложений, куда отправлять данные отладки.
Последний штрих — настройка самого Конфигуратора на компьютере разработчика. Выполним следующие действия:
Проверим доступность портов. Если между вашим компьютером и сервером 1С есть брандмауэр, убедитесь, что порты из диапазона 1560:1591 открыты в обе стороны. Отладчик 1С при использовании TCP инициализирует соединение с сервером, которое должно поддерживаться стабильно.
Рассмотрим ситуацию, когда при попытке подключения возникает ошибка «не удалось соединиться с сервером отладки». Проанализируем возможные причины:
default.vrd указан protocol="http", а в Конфигураторе выбран TCP/IP, отладка работать не будет.iptables или firewall-cmd, чтобы разрешить входящий трафик на порты публикации (обычно 80 или 443).default.vrd крайне желательно перезапустить веб-сервер командой service httpd restart или systemctl restart httpd.В случае, если вы используете современные версии платформы (8.3.14 и выше), 1С рекомендует переходить на использование отдельного Standalone Debug Server (dbgs). Это приложение запускается как отдельный процесс и выступает посредником между всеми участниками процесса, что снимает большинство проблем с прохождением пакетов через NAT и Firewall в сложных сетях.
Таким образом, для успешной работы HTTP-сервисов в связке 1С и CentOS достаточно корректно настроить default.vrd, разрешить сетевую активность в SELinux и синхронизировать протоколы отладки между сервером и клиентом. Использование протокола TCP часто оказывается более стабильным решением в смешанных инфраструктурах, чем попытка настройки отладки по HTTP.