Почему не работает отладка 1С на сервере под управлением Linux CentOS 7 и как это исправить?

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

Развертывание серверной части 1С на Linux, в частности на CentOS 7, часто сопровождается трудностями при попытке запустить стандартную отладку. Ситуация, когда в конфигураторе сервер виден в списке предметов отладки, но точка останова игнорируется, является классической. Разберем подробно, почему это происходит и как настроить стабильную работу отладчика в различных сетевых условиях.

Переход на современный протокол: HTTP-отладка

Традиционная отладка в 1С использует протокол TCP, который крайне чувствителен к сетевым экранам (Firewall), NAT и сложным маршрутам. Если ваш сервер находится на удаленном хостинге или в другом филиале, первым делом рассмотрим переход на HTTP-отладку. Этот метод работает через специальный сервис dbgs (Debugger Server) и гораздо стабильнее ведет себя в распределенных сетях.

Для активации этого режима проанализируем параметры запуска службы сервера 1С. Нам необходимо, чтобы в строке запуска присутствовал флаг -http. Рассмотрим, как это настроить в конфигурационном файле или systemd юните:

Во-первых, найдем файл настроек службы (обычно это /etc/sysconfig/srv1cv83 или настройки в /usr/lib/systemd/system/srv1cv83.service). Нам нужно отредактировать переменную SRV1CV8_DEBUG или ExecStart, добавив параметры:


# Пример параметров для включения HTTP-отладки
SRV1CV8_DEBUG=-debug -http

После изменения настроек обязательно перезапустим службу сервера 1С. Выясним, запустился ли процесс отладки. В консоли Linux выполним команду:

ps -ef | grep dbgs

Если процесс dbgs запущен, сервер готов к работе. Теперь перейдем в конфигуратор 1С. В меню Сервис — Параметры — Отладка выберем протокол HTTP. В поле "Адрес сервера отладки" укажем IP-адрес или DNS-имя нашего сервера и порт (по умолчанию 1560), например: http://192.168.1.100:1560.

Специфика CentOS 7: настройка Firewalld и SELinux

Даже если служба 1С настроена правильно, механизмы безопасности CentOS 7 могут блокировать трафик. Рассмотрим, как правильно открыть необходимые порты. Для работы отладки нам требуются порты 1540, 1541, а также диапазон портов для отладки (обычно это 1560–1591).

Разберем последовательность команд для настройки firewalld:


firewall-cmd --permanent --add-port=1560-1591/tcp
firewall-cmd --permanent --add-port=1540-1541/tcp
firewall-cmd --reload

Критическим моментом для CentOS является SELinux. Он может блокировать исходящие соединения процесса rphost, которые необходимы для инициации сессии отладки. Проанализируем влияние SELinux, временно переведя его в режим обучения:

setenforce 0

Если после этой команды отладка заработала, значит, необходимо настроить политики SELinux для 1С. Чтобы не отключать безопасность полностью, рекомендуется использовать утилиты audit2allow для создания разрешающих правил на основе логов из /var/log/audit/audit.log.

Проблема обратного разрешения имен (Reverse DNS)

Часто отладка не срабатывает из-за того, что сервер "не видит" клиента. При использовании TCP-отладки сервер 1С пытается сам инициировать соединение с вашим компьютером, на котором запущен конфигуратор. Если ваш компьютер находится за NAT или сервер не может разрешить ваше сетевое имя в IP-адрес, соединение не установится.

Посмотрим на решение этой проблемы через файл hosts. На Linux-сервере в файле /etc/hosts необходимо прописать соответствие IP-адреса вашего рабочего ПК и его сетевого имени (hostname):


# Добавьте запись на сервере
192.168.10.50  MY-WORKSTATION

Проанализируем ситуацию, когда используется VPN. Важно, чтобы клиент (ваш ПК) использовал FQDN (полное доменное имя), которое однозначно резолвится сервером. Если сервер находится в облаке, а вы — в офисе, без VPN или настройки SSH-туннелей добиться стабильной TCP-отладки практически невозможно.

Тонкая настройка через debugcfg.xml

Если сервер имеет несколько сетевых интерфейсов, он может запутаться, на каком адресе слушать подключения. Рассмотрим возможность жесткой фиксации адреса через файл debugcfg.xml. Этот файл создается в каталоге conf (например, /opt/1cv8/x86_64/conf/).

Пример содержимого файла debugcfg.xml:


<config xmlns="http://v8.1c.ru/8.3/debugger/config">
  <debugServerAddr>192.168.1.100</debugServerAddr>
</config>

Этот параметр заставляет сервер отладки привязываться к конкретному IP-адресу, что исключает неоднозначность в сложных сетевых топологиях.

Особенности отладки фоновых заданий

Иногда отладка работает для обычных сеансов, но "проскакивает" мимо фоновых заданий. Разберем, как это исправить. В окне "Подключение" (Отладка — Подключение) необходимо убедиться, что установлены флаги автоматического подключения.

Посмотрим на важный нюанс: в среде Linux инициализация процесса rphost для выполнения фонового задания может происходить очень быстро. Чтобы отладчик успел "зацепиться", рекомендуется в начало кода фонового задания добавить небольшую паузу, используя Приостановить(5) (если версия платформы позволяет) или пустой цикл, но только на время поиска проблемы.

Также не забудем про права доступа. Пользователь, под которым запущен сервис 1С (обычно usr1cv8), должен иметь полные права на папку своего профиля в /home/usr1cv8/.1cv8/. Если сервер не может создать временные файлы сессии отладки, точки останова работать не будут.

Итоги и рекомендации

Подводя итог, проанализируем основные шаги для запуска отладки на CentOS 7:

  1. Включаем режим HTTP-отладки параметром -debug -http в настройках службы.
  2. Проверяем запуск процесса dbgs на сервере.
  3. Настраиваем firewalld, открывая порты 1540, 1541 и диапазон 1560-1591.
  4. Проверяем статус SELinux и при необходимости создаем разрешающие правила.
  5. Убеждаемся, что сервер может разрешить имя вашего компьютера в IP-адрес через /etc/hosts.
  6. В конфигураторе переключаем протокол отладки на HTTP и указываем адрес сервера.

Соблюдение этих инструкций позволяет решить 99% проблем с отладкой в Linux-окружении, обеспечивая комфортную разработку и поиск ошибок в коде.

← На главную