Как настроить серверную отладку 1С на CentOS 7 при удаленном подключении?

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

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

Почему предметы отладки видны, но точки останова не срабатывают?

Выясним причину такого поведения. При использовании стандартной TCP/IP-отладки (которая активируется параметром -debug по умолчанию) процесс взаимодействия между Конфигуратором и сервером 1С происходит в два этапа:

  1. Инициация подключения: Ваш Конфигуратор на Windows-машине успешно отправляет запрос на сервер 1С (используя стандартные порты кластера 1540 и 1541). Именно поэтому список предметов отладки успешно получается, и они выглядят подключенными в окне Конфигуратора.
  2. Обратное соединение (суть проблемы): Чтобы остановить выполнение кода на точке останова, сервер 1С должен самостоятельно инициировать TCP-соединение обратно к вашему клиентскому компьютеру. Для этого используются сетевые порты из диапазона 1560–1591.

Если ваш рабочий компьютер находится за NAT (офисным или домашним роутером) или защищен брандмауэром Windows, удаленный сервер Linux физически не может "достучаться" до вашего Конфигуратора извне по этим портам. В результате сервер просто продолжает выполнять код, молчаливо игнорируя точки останова. Если быстро наладить сетевой доступ нет возможности, в качестве временного решения можно использовать расширение для отладки СКД и запросов под пользователем при недоступной серверной отладке.

Базовое включение отладки на сервере Linux

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

Посмотрим на пример включения параметра SRV1CV8_DEBUG для CentOS 7. Вам необходимо отредактировать файл настроек службы (обычно это /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83):


# Открываем файл конфигурации в текстовом редакторе, например nano:
nano /etc/sysconfig/srv1cv83

# Находим или добавляем строку:
SRV1CV8_DEBUG=1

После внесения изменений службу необходимо перезапустить. Однако, как мы выяснили ранее, простого включения флага -debug недостаточно для работы через интернет или NAT. Рассмотрим два пути решения проблемы.

Решение 1: Переход на HTTP-отладку (Рекомендуемый способ)

Начиная с версии платформы 8.3.7, фирма "1С" реализовала режим отладки по протоколу HTTP. В этом режиме все соединения (и запросы, и обратные ответы) инициируются исключительно со стороны клиента к специальной службе отладки (модулю dbgs), которая запускается на сервере. Это полностью решает проблему обратной маршрутизации через NAT.

Разберем по шагам, как настроить HTTP-отладку на сервере CentOS 7:

  1. Остановите службу сервера 1С: systemctl stop srv1cv83
  2. Измените параметры запуска: Откройте конфигурационный файл службы (как было показано выше) и найдите строку формирования параметров запуска. К параметру отладки необходимо добавить ключ -http. Если вы используете старый формат скриптов инициализации, строка может выглядеть так: [ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug -http" Примечание: Если вы используете современные версии платформы (начиная с 8.3.20/8.3.22), где управление идет через systemd-шаблоны, необходимо отредактировать юнит-файл службы через команду systemctl edit srv1cv8-8.3.XX.XXXX@ и добавить параметр в блок Environment: Environment="SRV1CV8_DEBUG=-debug -http"
  3. Обновите конфигурацию демонов и запустите сервер:
    
    systemctl daemon-reload
    systemctl start srv1cv83
    
  4. Проверьте запуск службы отладки: Выполните команду поиска процесса. Вы должны увидеть запущенный процесс dbgs, который по умолчанию прослушивает порт 1550. ps aux | grep dbgs
  5. Откройте порт в Firewall: В CentOS 7 за сетевой экран отвечает служба firewalld. Разрешим входящий TCP-порт 1550:
    
    firewall-cmd --zone=public --add-port=1550/tcp --permanent
    firewall-cmd --reload
    
  6. Настройка Конфигуратора (на Windows-клиенте): Откройте Конфигуратор, перейдите в меню Сервис — Параметры — Отладка. Выберите сетевой протокол HTTP. В поле "Адрес локального debug-сервера" укажите IP-адрес вашего сервера CentOS и порт 1550. Пример: http://192.168.1.100:1550.

Решение 2: Настройка TCP-отладки (если HTTP не подходит)

Если по каким-либо причинам вы вынуждены использовать старый протокол TCP/IP, вам придется обеспечить сетевую доступность вашего рабочего компьютера со стороны сервера Linux. Проанализируем, что для этого нужно сделать:

  1. Настройка брандмауэра Windows: На компьютере разработчика порты 1560–1591 должны быть открыты для входящих соединений. Создайте соответствующее правило в Брандмауэре Windows (TCP-порты) или полностью разрешите входящие подключения для исполняемого файла платформы 1cv8.exe.
  2. Проброс портов (Port Forwarding): Если вы находитесь за роутером (NAT), в его настройках необходимо пробросить диапазон портов 1560–1591 на локальный IP-адрес вашего компьютера.
  3. Настройка файла hosts (DNS-разрешение): TCP-отладчик 1С крайне чувствителен к разрешению сетевых имен. Сервер 1С пытается подключиться к клиенту по его сетевому NetBIOS/DNS имени.
    • На сервере CentOS в файл /etc/hosts необходимо прописать связку IP-адреса и имени вашего компьютера: 192.168.1.50 workstation-developer.
    • На Windows-клиенте в файл C:\Windows\System32\drivers\etc\hosts аналогично пропишите IP и имя сервера CentOS.

Дополнительные проверки на стороне CentOS 7

Если после выполнения всех настроек (особенно в режиме HTTP) отладка всё равно не подхватывается, обратите внимание на следующие системные нюансы:

1. Проверка SELinux
Модуль безопасности SELinux в CentOS 7 по умолчанию включен и может блокировать сетевую активность процессов 1С на нестандартных портах. Проверьте его статус командой getenforce. Для диагностики проблемы временно переведите SELinux в разрешающий режим: setenforce 0. Если после этого отладка заработала, вам потребуется настроить правильные политики SELinux для процессов кластера 1С.

2. Строгое совпадение версий платформы
Критически важно убедиться, что версия платформы 1С, установленная на сервере Linux, абсолютно идентична версии платформы, в которой запущен Конфигуратор на Windows. Совпадение должно быть вплоть до последней цифры сборки (например, строго 8.3.14.1809 с обеих сторон). Малейшее различие в релизах часто приводит к тому, что отладчик подключается, но серверные точки останова игнорируются.

← На главную