Как опубликовать и отладить HTTP-сервисы 1С на связке CentOS и Apache 2.2?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разработка и развертывание HTTP-сервисов в среде 1С:Предприятие часто сопряжены с инфраструктурными сложностями, особенно когда сервер приложений 1С, веб-сервер и рабочее место разработчика (Конфигуратор) разнесены по разным машинам и операционным системам. В этой статье мы подробно разберем, как выполнить ручную публикацию сервисов на CentOS с использованием Apache 2.2, и настроим отладку, чтобы точка останова срабатывала корректно.

Постановка задачи и анализ инфраструктуры

Рассмотрим типовую, но сложную ситуацию: база 1С работает на Windows-сервере, веб-сервер поднят администратором на отдельной машине под управлением CentOS, а разработка ведется на локальном компьютере. В такой конфигурации стандартная кнопка «Опубликовать» в Конфигураторе оказывается недоступной, так как 1С не имеет прямого доступа к файловой системе веб-сервера. Нам предстоит решить две основные задачи: корректно прописать настройки публикации и обеспечить «видимость» процесса отладки между всеми узлами.

Шаг 1. Публикация базы на веб-сервере под CentOS

Для начала разберем, как заставить Apache «понимать» нашу базу 1С. Поскольку мы не можем использовать графический интерфейс Конфигуратора, нам необходимо воспользоваться утилитой командной строки webinst или подготовить файл описания виртуального ресурса .vrd вручную.

На стороне сервера CentOS нам потребуется установленная серверная часть платформы 1С (клиентское приложение не обязательно). Это необходимо для наличия модуля расширения веб-сервера (файлы типа wsap22.so). Рассмотрим процесс публикации через утилиту:

  1. Найдем путь к утилите webinst. Обычно она располагается в каталоге установки платформы 1С, например: /opt/1C/v8.3/x86_64/webinst.
  2. Выполним команду регистрации публикации. Нам нужно указать имя публикации, путь к конфигурационному файлу Apache и строку соединения с базой.

Если по каким-то причинам использование 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>

Проанализируем важные параметры в этом файле:

Шаг 2. Настройка прав доступа и SELinux

Одной из самых частых причин, почему после публикации сервисы не работают, является политика безопасности CentOS. Проанализируем состояние SELinux. По умолчанию эта система блокирует исходящие сетевые запросы от Apache (процесса httpd), что мешает веб-серверу подключиться к серверу 1С.

Выполним следующую команду от имени суперпользователя, чтобы разрешить сетевые соединения:

setsebool -P httpd_can_network_connect on

Также проверим права доступа на файл default.vrd и каталог публикации. Владельцем файлов должен быть пользователь, под которым запущен Apache (обычно это apache), либо файлы должны быть доступны ему на чтение.

Шаг 3. Настройка отладки в распределенной среде

Это самый сложный этап. Выясним причину, по которой точка останова в 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С, где запущен рабочий процесс базы. Выясним, почему именно этот адрес: модуль расширения веб-сервера должен сообщить серверу приложений, куда отправлять данные отладки.

Шаг 4. Настройка Конфигуратора

Последний штрих — настройка самого Конфигуратора на компьютере разработчика. Выполним следующие действия:

  1. Зайдем в меню Сервис — Параметры, на вкладку Отладка.
  2. Выберем протокол «Отладка по протоколу TCP/IP».
  3. Перейдем в меню Отладка — Подключение.
  4. Нажмем кнопку Настройка автоматического подключения.
  5. Обязательно установим флажок «HTTP-сервисы».

Проверим доступность портов. Если между вашим компьютером и сервером 1С есть брандмауэр, убедитесь, что порты из диапазона 1560:1591 открыты в обе стороны. Отладчик 1С при использовании TCP инициализирует соединение с сервером, которое должно поддерживаться стабильно.

Типичные ошибки и способы их решения

Рассмотрим ситуацию, когда при попытке подключения возникает ошибка «не удалось соединиться с сервером отладки». Проанализируем возможные причины:

В случае, если вы используете современные версии платформы (8.3.14 и выше), 1С рекомендует переходить на использование отдельного Standalone Debug Server (dbgs). Это приложение запускается как отдельный процесс и выступает посредником между всеми участниками процесса, что снимает большинство проблем с прохождением пакетов через NAT и Firewall в сложных сетях.

Таким образом, для успешной работы HTTP-сервисов в связке 1С и CentOS достаточно корректно настроить default.vrd, разрешить сетевую активность в SELinux и синхронизировать протоколы отладки между сервером и клиентом. Использование протокола TCP часто оказывается более стабильным решением в смешанных инфраструктурах, чем попытка настройки отладки по HTTP.

← На главную