Агент сервера 1С:Предприятия: запуск службой в Windows и Linux
Содержание
Агент сервера 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С:Предприятия». Мастер предложит:
- Установить сервер как службу Windows.
- Указать пользователя и пароль, от имени которого служба будет работать.
- Выбрать каталог кластера.
Служба появится в 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, вкладка «Вход в систему».
Настройка агента 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.
Диагностика: служба не запускается или падает
Начните с вопроса «в какой момент?».
srvinfo в исключения.netstat -ano | findstr 1540. В Linux: ss -ltnp | grep 1540. Остановите лишний процесс или смените порты службы.usr1cv8, либо у unit-файла указан другой пользователь. Исправьте владельца: chown -R usr1cv8:grp1cv8 <каталог>.Где искать логи
- 🪟 Windows: журнал событий и каталог
srvinfo, в подкаталогах кластера лежат журналы регистрации. - 🐧 Linux:
journalctl -u srv1cv83 -n 200 --no-pagerпокажет последние строки вывода службы. - 🔎 Технологический журнал включается файлом
logcfg.xmlв каталогеconfплатформы. Включайте его на короткое время и с узким фильтром событий: он быстро разрастается.
Если служба падает при старте, запустите ragent в консоли от того же пользователя с теми же параметрами, только без службы. Ошибка появится на экране сразу, без поиска по журналам.
Автоматический перезапуск и мониторинг агента
Служба, которая упала и не поднялась, ночью ничего не сообщит. Настройте перезапуск и оповещение.
Windows
В services.msc откройте свойства службы, вкладка «Восстановление». Задайте:
- Первый сбой — перезапуск службы.
- Второй сбой — перезапуск службы.
- Последующие сбои — запуск программы или перезапуск компьютера, если сервер выделенный.
- Сброс счётчика ошибок — через 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. Порядок действий:
- Остановите службу и сделайте копию каталога
srvinfo. - Установите новую версию платформы рядом со старой.
- Удалите старую службу (
-delsrv) и зарегистрируйте новую с путём к новомуragentи теми же-d, портами и пользователем. - Запустите службу и проверьте, что кластер и базы на месте.
В Linux достаточно поправить путь в ExecStart и выполнить systemctl daemon-reload, затем systemctl restart srv1cv83.
Перед сменой версии сделайте резервную копию каталога кластера и баз. Откатиться без копии после неудачного обновления реестра кластера трудно.
Частые вопросы
Нужно ли запускать агент 1С от администратора?
Чем агент сервера отличается от рабочего процесса?
ragent управляет кластером и запускает процессы rphost, которые выполняют запросы клиентов. Упал агент — не работает весь сервер. Упал один rphost — отключатся только его сеансы.Можно ли держать две службы 1С на одном сервере?
-d, свои порты и разное имя службы. Версии платформы при этом могут быть разные.Что делать, если после перезагрузки сервер не поднялся сам?
systemctl enable в Linux. Если служба зависит от сетевого диска или базы данных, добавьте задержку или зависимость от нужного сервиса.