К статье
Практический материал

Администрирование · 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.

Если платформа ставилась вручную или через скрипты, служба может запускаться иначе — проверьте фактическую команду запуска. Найти её помогут команды просмотра статуса службы и списка процессов.

bash
systemctl status srv1cv8-8.3.<em>.service
ps aux | grep ragent
cat /etc/sysconfig/srv1cv8-8.3.</em>

Пошаговое включение отладки

Работы выполняются от root или через sudo. Перед правкой любого файла сделайте его резервную копию — это упростит откат, если служба не запустится.

Порядок действий
  1. 1
    Найдите unit-файл службы: systemctl list-units | grep srv1cv8
  2. 2
    Откройте файл окружения или unit-файл и добавьте параметр -debug к аргументам запуска ragent
  3. 3
    Если правили unit-файл, выполните systemctl daemon-reload
  4. 4
    Перезапустите службу: systemctl restart srv1cv8-8.3.x.xxxx
  5. 5
    Проверьте, что процесс ragent запущен с флагом -debug: ps aux | grep ragent
  6. 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.

Финальная проверка — в конфигураторе: меню «Отладка → Подключение», автоматический поиск предметов отладки или указание сервера вручную. В списке должны появиться сеансы типа «Сервер» и фоновые задания.

Контрольные точки

Как проверить результат

Командная строка ragent
Норма

В выводе ps aux виден параметр -debug

Тревожный признак

Параметра нет — служба запущена со старой конфигурацией, проверьте правильный файл

Отладочный порт на сервере
Норма

ss -tlnp показывает прослушивание порта 1550

Тревожный признак

Порт не слушается — ragent запущен без -debug или упал с ошибкой

Подключение из конфигуратора
Норма

В списке предметов отладки видны серверные сеансы

Тревожный признак

Список пуст — проверьте firewall, версию платформы клиента и протокол отладки

Подключение конфигуратора и настройка предметов отладки

На стороне разработчика в конфигураторе откройте «Отладка → Подключение». Если сервер не находится автоматически, добавьте его вручную, указав имя сервера и отладочный порт. Убедитесь, что в настройках отладки («Отладка → Настройка») выбран протокол TCP — тот же, с которым запущен сервер.

Версия платформы конфигуратора должна совпадать с версией сервера — иначе подключение не установится или будет работать нестабильно. Это одна из самых частых причин «невидимых» предметов отладки.

Для отладки фоновых заданий и регламентных операций включите соответствующие типы предметов в настройках автоматического подключения. По умолчанию конфигуратор подключается не ко всем типам сеансов.

Типичные ошибки и ограничения

Наиболее частая проблема — правка не того файла: администратор добавляет -debug в unit-файл, а служба фактически читает параметры из файла окружения, или наоборот. Всегда проверяйте итоговую командную строку процесса после перезапуска.

Вторая группа ошибок — сетевые: закрытый порт 1550 на firewall, отладочный интерфейс, привязанный к localhost, либо NAT между разработчиком и сервером. Если сервер находится в другой подсети, проверяйте маршрутизацию и правила на всех промежуточных узлах.

Третья — несовпадение версий платформы на сервере и у разработчика либо разные протоколы отладки (TCP на сервере, HTTP в конфигураторе). Оба параметра должны совпадать.

Типичные ошибки
01
Добавление -debug не в тот файл конфигурации — служба перезапущена, но флаг не применился
02
Забытый firewall — порт 1550 закрыт, конфигуратор не видит предметы отладки
03
Разные версии платформы на сервере и клиенте — подключение не устанавливается
04
Отладка остаётся включённой на продуктиве — падает производительность и открыт лишний порт
05
Перезапуск службы в рабочее время — обрыв сеансов и потеря несохранённых данных пользователей

Отключение отладки после работы

Отладочный режим — это не постоянная настройка, а временный инструмент. Каждый серверный вызов в режиме отладки выполняется медленнее, а открытый порт расширяет поверхность атаки: любой, кто подключится к нему конфигуратором, потенциально может читать данные сеансов.

Чтобы отключить отладку, удалите параметр -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) для отладки не требуется.