При переходе на новые версии платформы 1С:Предприятие (начиная с 8.3.18 и выше) системные администраторы и разработчики часто сталкиваются с изменением логики управления службами в операционных системах семейства Linux. В этой статье мы подробно разберем, как активировать режим отладки на примере Ubuntu 20.04 и платформы 8.3.19.1417, проанализируем структуру конфигурационных файлов и выясним, почему стандартные точки останова могут не срабатывать в виртуальных средах.
Разберем, где именно теперь хранятся настройки сервера. В старых версиях платформы параметры запуска часто правили напрямую в скрипте инициализации /etc/init.d/srv1cv83. Однако в современных релизах, таких как 8.3.19, этот подход считается некорректным. Скрипт запуска при старте обращается к внешнему файлу конфигурации, который и передает необходимые переменные окружения.
Проанализируем стандартные пути. Обычно файл конфигурации расположен по адресу:
/opt/1cv8/x86_64/8.3.19.1417/srv1cv83.conf
Для удобства управления в системе часто создаются символические ссылки (symlinks). Настроим их, чтобы система могла корректно считывать параметры:
# ln -s /opt/1cv8/x86_64/8.3.19.1417/srv1cv83 /etc/init.d/srv1cv83
# ln -s /opt/1cv8/x86_64/8.3.19.1417/srv1cv83.conf /etc/default/srv1cv83
Важно помнить, что начиная с версии 8.3.18, 1С поддерживает параллельную установку нескольких версий сервера. Поэтому имя службы и конфигурационного файла может включать номер версии, например: srv1cv8-8.3.19.1417. Убедимся, что мы редактируем именно тот файл, который соответствует запущенному экземпляру сервера.
Рассмотрим содержимое файла srv1cv83.conf. Нам необходимо найти или добавить переменную SRV1CV8_DEBUG. Существует два основных протокола отладки: TCP и HTTP. Посмотрим, как их активировать.
1. Классическая отладка по протоколу TCP:
В файле конфигурации установим значение 1 для соответствующего параметра:
SRV1CV8_DEBUG=1
2. Современная отладка по протоколу HTTP:
Протокол HTTP работает более стабильно в распределенных сетях и через VPN. Для его включения укажем значение -http:
SRV1CV8_DEBUG=-http
После внесения изменений обязательно перезапустим службу сервера 1С, чтобы новые настройки вступили в силу:
systemctl restart srv1cv83
В современных дистрибутивах Linux (включая Ubuntu 20.04) управление демонами осуществляется через systemd. Если стандартный способ через файл в /etc/default/ не срабатывает, проанализируем возможность переопределения параметров через systemctl edit.
Выполним команду для редактирования юнита:
systemctl edit srv1cv83.service
В открывшемся окне добавим секцию, которая принудительно устанавливает переменную окружения:
[Service]
Environment=SRV1CV8_DEBUG=1
Этот метод является наиболее "чистым" с точки зрения администрирования Linux, так как он не затрагивает исполняемые файлы платформы и сохраняется при обновлении пакетов.
Выясним причину, по которой отладка может не работать, даже если параметр SRV1CV8_DEBUG включен. Часто сервер 1С разворачивается на виртуальной машине (VirtualBox, VMware). Если сетевой адаптер настроен в режиме NAT, возникает проблема "невидимости" портов.
Рассмотрим механизм: при отладке сервер 1С должен инициировать обратное соединение с конфигуратором (на компьютере разработчика). В режиме NAT виртуальная машина находится за внутренним шлюзом и "не видит" IP-адрес хоста напрямую для входящих пакетов на динамические порты.
Решение задачи:
В сложных сетевых конфигурациях рассмотрим использование dbgs — автономного сервера отладки. Он позволяет отделить процесс отладки от основного рабочего процесса ragent.
Попробуем запустить его вручную для проверки связи:
/opt/1cv8/x86_64/8.3.19.1417/dbgs -addr 192.168.1.10 -port 1560
Где 192.168.1.10 — адрес вашего сервера. После этого в настройках службы 1С нужно указать использование этого сервера отладки через параметр запуска -attach. Это гарантирует, что точки останова будут срабатывать стабильно, независимо от внутренних механизмов демона srv1cv83.
Проанализируем еще один критический момент — права доступа. Файл /etc/default/srv1cv83 должен быть доступен для чтения пользователю usr1cv8, от имени которого работает сервер. Если права ограничены (например, файл создан под root с маской 600), сервер просто проигнорирует параметр отладки.
Установим корректные права:
chown usr1cv8:grp1cv8 /etc/default/srv1cv83
chmod 644 /etc/default/srv1cv83
Также проверим настройки iptables или ufw. Для успешной отладки должны быть открыты:
Только при соблюдении всех вышеперечисленных условий — правильной записи в конфигурационном файле, доступности портов и корректной сетевой видимости — режим отладки на Linux-платформе 8.3.19 будет функционировать корректно.