Агент сервера 1С:Предприятия: запуск службой в Windows и Linux

· 9 мин

Содержание

Агент сервера 1С — это процесс ragent. Он принимает подключения клиентов и запускает рабочие процессы rphost. Чтобы сервер стартовал сам после перезагрузки и жил без открытой консоли, ragent регистрируют как службу: в Windows — через установщик платформы или ragent.exe -instsrv, в Linux — через unit-файл systemd.

Ниже — подготовка, обе ОС, параметры запуска, диагностика и автоперезапуск. Примеры на путях по умолчанию, версию платформы подставьте свою.

Что подготовить до регистрации службы

Три вещи, которые проще сделать заранее, чем разбирать потом.

Учётная запись

Службу не стоит запускать от администратора и от встроенной системной записи, если серверу нужны сетевые ресурсы. Заведите отдельного пользователя, например usr1cv8.

  • 🔑 В Windows — локальный или доменный пользователь с правом «Вход в качестве службы».
  • 📁 Полные права на каталог данных кластера (srvinfo) и на каталог установки платформы — чтение и выполнение.
  • 🚫 Без права интерактивного входа и без членства в группе администраторов.

В Linux установщик из пакетов обычно создаёт пользователя usr1cv8 и группу grp1cv8. Проверьте: id usr1cv8.

Каталог кластера и порты

Каталог srvinfo держите на отдельном разделе с запасом места: там лежат реестр кластера, журналы регистрации и технологический журнал. Для базы на 50 пользователей 20–30 ГБ на старте — разумный ориентир.

Порты по умолчанию:

НазначениеПорт
Агент сервера (-port)1540
Главный менеджер кластера (-regport)1541
Диапазон рабочих процессов (-range)1560–1591

Эти порты должны быть свободны и открыты в брандмауэре для клиентов. Если на машине стоит второй сервер 1С другой версии, ему назначают другие порты, иначе служба не поднимется.

Версия и разрядность

Для актуальных платформ сервер 64-разрядный. Если на одной машине стоят две версии платформы, у каждой своя служба со своим именем и своим каталогом srvinfo. Путь к ragent.exe в Windows выглядит примерно так: C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe.

Каталог srvinfo у двух служб должен быть разным. Общий каталог повредит реестр кластера.

Регистрация службы агента в Windows

Есть два пути: готовый установщик или ручная регистрация командной строкой.

Через установщик платформы

В установщике отметьте компонент «Сервер 1С:Предприятия». Мастер предложит:

  1. Установить сервер как службу Windows.
  2. Указать пользователя и пароль, от имени которого служба будет работать.
  3. Выбрать каталог кластера.

Служба появится в services.msc под названием вроде «Агент сервера 1С:Предприятия 8.3 (x86-64)». Тип запуска — «Автоматически».

Вручную через ragent -instsrv

Нужно, когда сервер ставили без службы, переносили на другую машину или нужна вторая служба. Командную строку открывайте от администратора.

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -instsrv -usr DOMAIN\usr1cv8 -pwd "ПарольСлужбы" -port 1540 -regport 1541 -range 1560:1591 -d "D:\srvinfo" -name "1C Server 8.3 main"

Что делает каждый параметр, разобрано в следующем разделе. После выполнения служба зарегистрирована, но не запущена. Запускаем:

sc start "1C Server 8.3 main"

Тип запуска проверьте командой sc qc "1C Server 8.3 main" — в строке START_TYPE должно быть AUTO_START.

Удалить службу можно так: ragent.exe -delsrv -name "1C Server 8.3 main". Перед этим остановите её.

Пароль в командной строке остаётся в истории консоли. После регистрации очистите историю или задайте пароль через оснастку services.msc, вкладка «Вход в систему».

Проверка после регистрации в Windows
Выполнено: 0 / 5

Настройка агента 1С в Linux через systemd

В Linux после установки пакетов сервера в каталоге платформы лежит скрипт запуска (обычно srv1cv83) и файл настроек. Многие администраторы предпочитают собственный unit-файл: проще управлять и логировать.

Создаём /etc/systemd/system/srv1cv83.service:

[Unit]
Description=1C Enterprise 8.3 server agent
After=network.target

[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
ExecStart=/opt/1cv8/x86_64/8.3.XX.XXXX/ragent -d /home/usr1cv8/.1cv8/1C/1cv8 -port 1540 -regport 1541 -range 1560:1591 -seclev 0 -debug
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
TimeoutStopSec=60

[Install]
WantedBy=multi-user.target

Дальше три команды:

sudo systemctl daemon-reload
sudo systemctl enable srv1cv83
sudo systemctl start srv1cv83

Статус смотрим так: systemctl status srv1cv83. Слушающие порты — ss -ltnp | grep -E '1540|1541'.

Пояснения:

  • Type=simple — ragent работает в основном процессе и не уходит в фон сам. Если запускать скриптом с демонизацией, тип меняют на forking.
  • LimitNOFILE — большое число одновременных сессий упирается в лимит открытых файлов, стандартных 1024 может не хватить.
  • -debug в unit-файле нужен только для отладки. В обычной работе его убирают: он включает режим отладки и нагружает сервер.

Каталог из -d должен принадлежать usr1cv8. Проверьте: ls -ld /home/usr1cv8/.1cv8/1C/1cv8. Если владелец root, служба стартует с ошибкой доступа.

Параметры запуска ragent и что они означают

Параметры задаются при регистрации в Windows и в ExecStart в Linux. Основные:

ПараметрЧто задаёт
-d <каталог>Каталог данных кластера (srvinfo)
-port <порт>Порт агента, по умолчанию 1540
-regport <порт>Порт главного менеджера кластера, по умолчанию 1541
-range <от:до>Диапазон портов для рабочих процессов
-seclev <0..2>Уровень безопасности агента
-usr, -pwdУчётная запись службы (при -instsrv)
-name <имя>Имя службы в Windows
-debugРежим отладки

Как выбрать диапазон портов

Каждому рабочему процессу нужен свой порт. Диапазон 1560:1591 даёт 32 порта. Если процессов может быть больше (много баз, много сеансов), диапазон расширяют, например до 1560:1660. Главное — открыть его в брандмауэре целиком.

Несколько служб на одной машине

Вторая служба получает свои порты, например -port 2540 -regport 2541 -range 2560:2591, и свой каталог -d. Имена служб тоже должны отличаться. Клиент подключается к серверу, указывая порт агента: сервер:2540.

Брандмауэр и сетевая доступность

Для клиентов нужно открыть входящие подключения по TCP на порты агента, менеджера кластера и весь диапазон рабочих процессов. Порты сервера баз данных клиентам открывать не нужно: к СУБД ходит только сервер 1С.

Windows, правило одной командой:

netsh advfirewall firewall add rule name="1C Server" dir=in action=allow protocol=TCP localport=1540,1541,1560-1591

Linux с ufw:

sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp

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

Уровень безопасности seclev

Параметр -seclev задаёт, как строго агент относится к подключениям. Значение 0 — без ограничений, самое простое для внутренней сети. Повышать уровень имеет смысл, когда сервер виден из недоверенных сегментов, но тогда настройка требует отдельной проработки. Для обычной офисной сети достаточно закрыть порты на границе и не публиковать сервер напрямую в интернет.

Как проверить, что параметры применились

В Windows посмотрите командную строку процесса: в диспетчере задач включите столбец «Командная строка» или выполните wmic process where name="ragent.exe" get commandline. В Linux — ps -o args= -C ragent. Там должны быть ваши -d, -port, -range. Если видите старые значения, служба не была перерегистрирована или в Linux не выполнена команда daemon-reload.

Диагностика: служба не запускается или падает

Начните с вопроса «в какой момент?».

Диагностика: выберите симптом

Где искать логи

  • 🪟 Windows: журнал событий и каталог srvinfo, в подкаталогах кластера лежат журналы регистрации.
  • 🐧 Linux: journalctl -u srv1cv83 -n 200 --no-pager покажет последние строки вывода службы.
  • 🔎 Технологический журнал включается файлом logcfg.xml в каталоге conf платформы. Включайте его на короткое время и с узким фильтром событий: он быстро разрастается.

Если служба падает при старте, запустите ragent в консоли от того же пользователя с теми же параметрами, только без службы. Ошибка появится на экране сразу, без поиска по журналам.

Автоматический перезапуск и мониторинг агента

Служба, которая упала и не поднялась, ночью ничего не сообщит. Настройте перезапуск и оповещение.

Windows

В services.msc откройте свойства службы, вкладка «Восстановление». Задайте:

  1. Первый сбой — перезапуск службы.
  2. Второй сбой — перезапуск службы.
  3. Последующие сбои — запуск программы или перезапуск компьютера, если сервер выделенный.
  4. Сброс счётчика ошибок — через 1 день.

То же командой:

sc failure "1C Server 8.3 main" reset= 86400 actions= restart/60000/restart/60000/restart/120000

Числа — миллисекунды: перезапуск через 60 секунд, потом ещё раз через 60, затем через 120.

Linux

Параметры Restart=on-failure и RestartSec=10 в unit-файле уже решают задачу. Чтобы не уйти в бесконечный цикл, в секцию [Unit] добавляют ограничение на число запусков: StartLimitIntervalSec=300 и StartLimitBurst=5. После пяти падений за пять минут systemd перестанет пытаться.

Что мониторить

  • ✅ Состояние службы — отдельная проверка раз в минуту.
  • ✅ Доступность порта 1541 — служба может быть запущена, но не принимать подключения.
  • ✅ Свободное место на разделе srvinfo: забитый диск тихо убивает кластер.
  • ✅ Память процессов rphost: постоянный рост говорит об утечке в обработке или в самой базе.

Подойдёт любая система, которая умеет проверять службы и порты: Zabbix, Prometheus с экспортёром, даже простой скрипт по расписанию с отправкой письма.

Обновление платформы без потери службы

После установки новой версии платформы служба остаётся привязана к старому ragent. Порядок действий:

  1. Остановите службу и сделайте копию каталога srvinfo.
  2. Установите новую версию платформы рядом со старой.
  3. Удалите старую службу (-delsrv) и зарегистрируйте новую с путём к новому ragent и теми же -d, портами и пользователем.
  4. Запустите службу и проверьте, что кластер и базы на месте.

В Linux достаточно поправить путь в ExecStart и выполнить systemctl daemon-reload, затем systemctl restart srv1cv83.

Перед сменой версии сделайте резервную копию каталога кластера и баз. Откатиться без копии после неудачного обновления реестра кластера трудно.

Частые вопросы

Нужно ли запускать агент 1С от администратора?
Нет. Достаточно отдельного пользователя с правами на каталог кластера и каталог платформы. Права администратора увеличивают ущерб при взломе сервера.
Чем агент сервера отличается от рабочего процесса?
Агент ragent управляет кластером и запускает процессы rphost, которые выполняют запросы клиентов. Упал агент — не работает весь сервер. Упал один rphost — отключатся только его сеансы.
Можно ли держать две службы 1С на одном сервере?
Можно, если у каждой свой каталог -d, свои порты и разное имя службы. Версии платформы при этом могут быть разные.
Что делать, если после перезагрузки сервер не поднялся сам?
Проверьте тип запуска: «Автоматически» в Windows или systemctl enable в Linux. Если служба зависит от сетевого диска или базы данных, добавьте задержку или зависимость от нужного сервиса.
Как остановить службу без разрыва сеансов?
Сначала запретите новые подключения и завершите сеансы через консоль кластера, затем останавливайте службу. Принудительная остановка обрывает работу пользователей и может оставить незавершённые транзакции.