Администрирование · 9 мин
Как включить отладку на сервере 1С под Linux
Как включить отладку на сервере 1С под Linux: параметр -debug, настройка службы srv1cv8, перезапуск демона, проверка подключения конфигуратора и типичные ошибки.
Отладка серверного кода — одна из базовых задач при сопровождении клиент-серверной 1С. На платформе Windows режим отладки включается через реестр службы агента, а в Linux всё делается через параметры запуска демона srv1cv8. Без флага -debug конфигуратор просто не увидит предметы отладки на сервере, и точки останова в серверных модулях срабатывать не будут.
Ниже разобран полный цикл: где искать конфигурацию службы, как добавить параметр, как перезапустить агент и убедиться, что отладка работает. Инструкция подходит для systemd-based дистрибутивов (CentOS, Debian, Ubuntu, Astra Linux), которые чаще всего используются для серверов 1С.
Сразу важная оговорка: включённая отладка заметно снижает производительность сервера и открывает дополнительный сетевой порт. На боевой системе её включают только на время диагностики и затем отключают.
Как работает отладка на сервере 1С
В клиент-серверном режиме код выполняется в двух местах: на клиенте и в рабочих процессах rphost на сервере. Конфигуратор подключается к агенту сервера (ragent) по отладочному протоколу и получает список предметов отладки — сеансов, в которых можно останавливать выполнение. Если агент запущен без ключа -debug, он не открывает отладочный порт и не передаёт конфигуратору никаких предметов.
По умолчанию отладка работает по протоколу TCP на порту 1550 (при стандартных портах агента 1540–1541). Начиная с современных версий платформы доступен также отладочный протокол HTTP через веб-сервер, но классический и самый простой вариант на Linux — TCP с флагом -debug.
Дополнительно параметр -debug может принимать уточнения: адрес интерфейса, на котором слушать отладочные подключения, и номер порта. В простейшем случае достаточно самого флага без аргументов.
Где находятся параметры запуска службы
При установке платформы из пакетов 1С для Linux создаётся unit-файл systemd, обычно /usr/lib/systemd/system/srv1cv8-8.3.x.xxxx.service (имя зависит от версии платформы). В нём строка ExecStart содержит команду запуска демона с параметрами.
Часто unit-файл не содержит параметров напрямую, а подгружает их из файла окружения — например, /etc/sysconfig/srv1cv8-8.3.x.xxxx или аналогичного в /etc/default/. В таком файле параметры перечислены в переменной, и именно туда удобнее всего добавлять флаг отладки, не трогая сам unit.
Если платформа ставилась вручную или через скрипты, служба может запускаться иначе — проверьте фактическую команду запуска. Найти её помогут команды просмотра статуса службы и списка процессов.
systemctl status srv1cv8-8.3.<em>.service
ps aux | grep ragent
cat /etc/sysconfig/srv1cv8-8.3.</em>Пошаговое включение отладки
Работы выполняются от root или через sudo. Перед правкой любого файла сделайте его резервную копию — это упростит откат, если служба не запустится.
- 1Найдите unit-файл службы: systemctl list-units | grep srv1cv8
- 2Откройте файл окружения или unit-файл и добавьте параметр -debug к аргументам запуска ragent
- 3Если правили unit-файл, выполните systemctl daemon-reload
- 4Перезапустите службу: systemctl restart srv1cv8-8.3.x.xxxx
- 5Проверьте, что процесс ragent запущен с флагом -debug: ps aux | grep ragent
- 6Убедитесь, что отладочный порт доступен с рабочей станции разработчика
Типичная строка запуска после правки выглядит примерно так: путь к ragent, затем параметры кластера (-port 1541 -regport 1540 -range 1560:1591) и добавленный -debug. Если нужно ограничить интерфейс, укажите адрес явно: -debug -http 127.0.0.1 не требуется — для TCP-протокола достаточно флага, адрес задаётся отдельным параметром при необходимости.
После перезапуска службы все активные сеансы пользователей разорвутся. Поэтому на рабочем сервере перезапуск планируют на время с минимальной нагрузкой и предупреждают пользователей.
Проверка, что отладка включилась
Первый признак — процесс ragent в списке процессов содержит -debug в командной строке. Второй — сервер слушает отладочный порт. Проверить это можно командой ss -tlnp | grep 1550 на самом сервере.
Затем проверьте доступность с машины разработчика: отладочный порт должен быть открыт в межсетевом экране (firewalld, iptables или nftables). В firewalld порт открывается командой firewall-cmd --add-port=1550/tcp с сохранением правила через флаг --permanent.
Финальная проверка — в конфигураторе: меню «Отладка → Подключение», автоматический поиск предметов отладки или указание сервера вручную. В списке должны появиться сеансы типа «Сервер» и фоновые задания.
Как проверить результат
В выводе ps aux виден параметр -debug
Параметра нет — служба запущена со старой конфигурацией, проверьте правильный файл
ss -tlnp показывает прослушивание порта 1550
Порт не слушается — ragent запущен без -debug или упал с ошибкой
В списке предметов отладки видны серверные сеансы
Список пуст — проверьте firewall, версию платформы клиента и протокол отладки
Подключение конфигуратора и настройка предметов отладки
На стороне разработчика в конфигураторе откройте «Отладка → Подключение». Если сервер не находится автоматически, добавьте его вручную, указав имя сервера и отладочный порт. Убедитесь, что в настройках отладки («Отладка → Настройка») выбран протокол TCP — тот же, с которым запущен сервер.
Версия платформы конфигуратора должна совпадать с версией сервера — иначе подключение не установится или будет работать нестабильно. Это одна из самых частых причин «невидимых» предметов отладки.
Для отладки фоновых заданий и регламентных операций включите соответствующие типы предметов в настройках автоматического подключения. По умолчанию конфигуратор подключается не ко всем типам сеансов.
Типичные ошибки и ограничения
Наиболее частая проблема — правка не того файла: администратор добавляет -debug в unit-файл, а служба фактически читает параметры из файла окружения, или наоборот. Всегда проверяйте итоговую командную строку процесса после перезапуска.
Вторая группа ошибок — сетевые: закрытый порт 1550 на firewall, отладочный интерфейс, привязанный к localhost, либо NAT между разработчиком и сервером. Если сервер находится в другой подсети, проверяйте маршрутизацию и правила на всех промежуточных узлах.
Третья — несовпадение версий платформы на сервере и у разработчика либо разные протоколы отладки (TCP на сервере, HTTP в конфигураторе). Оба параметра должны совпадать.
Отключение отладки после работы
Отладочный режим — это не постоянная настройка, а временный инструмент. Каждый серверный вызов в режиме отладки выполняется медленнее, а открытый порт расширяет поверхность атаки: любой, кто подключится к нему конфигуратором, потенциально может читать данные сеансов.
Чтобы отключить отладку, удалите параметр -debug из того же файла, куда он был добавлен, выполните systemctl daemon-reload (если правился unit) и перезапустите службу. Закройте порт 1550 в межсетевом экране, если открывали его вручную.
Хорошая практика — держать рядом два заранее подготовленных варианта файла конфигурации (с отладкой и без) и переключаться между ними копированием. Это снижает риск опечаток при спешных правках.
Что важно запомнить
Отладка сервера 1С в Linux включается флагом -debug в параметрах запуска демона srv1cv8 с последующим перезапуском службы. Проверяйте результат по командной строке ragent, открытому порту 1550 и списку предметов в конфигураторе. После диагностики отладку отключите — она снижает производительность и создаёт риск безопасности.
Частые вопросы
Можно ли включить отладку без перезапуска службы?
Нет. Флаг -debug читается агентом только при старте, поэтому перезапуск srv1cv8 обязателен. Чтобы не обрывать рабочие сеансы, настройте второй тестовый кластер на других портах и включайте отладку там.
Какой порт использует отладка по умолчанию?
При стандартных портах кластера (агент 1540, менеджер 1541) отладочный TCP-порт — 1550. Если порты кластера изменены, отладочный порт смещается соответственно; точное значение проверяйте командой ss -tlnp на сервере.
Почему конфигуратор не видит предметы отладки, хотя -debug добавлен?
Проверьте три вещи: фактическую командную строку ragent (флаг мог не примениться), доступность порта 1550 через firewall и совпадение версий платформы и протокола отладки (TCP/HTTP) на сервере и в конфигураторе.
Опасно ли оставлять отладку включённой на боевом сервере?
Да. Включается заметное снижение производительности серверного кода, а отладочный порт позволяет подключиться к сеансам любому, у кого есть сетевой доступ и подходящая версия платформы. Включайте отладку только на время диагностики.
Как отлаживать HTTP-сервисы на Linux-сервере?
Через TCP-протокол это невозможно, поскольку код выполняется внутри веб-сервера. Используйте отладку по протоколу HTTP: настройте публикацию отладочного интерфейса на Apache или nginx и укажите протокол HTTP в настройках отладки конфигуратора.
Нужно ли открывать порты 1540 и 1541 для отладки?
Для самой отладки достаточно порта 1550, но конфигуратору обычно нужен и доступ к кластеру (порты 1540–1541) для работы с информационной базой. Диапазон рабочих портов rphost (по умолчанию 1560–1591) для отладки не требуется.