Смена портов агента, кластера и рабочих процессов сервера 1С:Предприятия 8.3
Содержание
Порты сервера 1С задаются тремя параметрами в командной строке службы агента ragent.exe: -port (агент, по умолчанию 1540), -regport (главный менеджер кластера, 1541) и -range (рабочие процессы, 1560:1591). Чтобы сервер 1С работал на другом порту, остановите службу, поменяйте эти значения в свойстве ImagePath службы, откройте новые порты в брандмауэре и пропишите новый порт кластера в строках подключения клиентов: Srvr="server:2541".
Есть подвох, о который спотыкаются чаще всего. Порт кластера хранится в реестре кластера в каталоге srvinfo. Если кластер уже создан, правка -regport в службе сама по себе его порт не меняет. Как с этим быть, разобрано ниже по шагам.
Когда сервер 1С переводят на нестандартный порт
Стандартные порты нужны одному экземпляру сервера. Менять их приходится в нескольких типовых ситуациях:
- 🖥️ Два сервера 1С на одной машине. Например, рабочий кластер на платформе одной версии и тестовый на другой. Две службы не могут слушать один и тот же порт.
- 🔄 Переход на новую версию платформы с откатом. Новую версию поднимают рядом на других портах, проверяют и только потом переключают пользователей.
- 🚫 Порт занят другой программой. Диапазон 1540–1591 иногда пересекается с другим ПО на сервере.
- 🛡️ Требования безопасности. Служба ИБ просит увести сервис со стандартных портов или уложить его в согласованный диапазон.
Какие порты участвуют в работе сервера:
| Компонент | Параметр | По умолчанию | Кто подключается |
|---|---|---|---|
| Агент сервера (ragent) | -port | 1540 | Консоль администрирования, сервер администрирования ras |
| Главный менеджер кластера (rmngr) | -regport | 1541 | Клиенты 1С, веб-сервер, COM-соединение |
| Рабочие процессы (rphost) | -range | 1560:1591 | Клиенты после установки соединения |
| Сервер администрирования (ras) | --port | 1545 | Утилита rac и сторонние консоли |
Клиент в строке подключения указывает порт кластера (1541). Дальше менеджер кластера отправляет его к рабочему процессу на порт из диапазона. Поэтому закрытый диапазон даёт ошибку уже после того, как «соединение вроде бы пошло».
💡 Удобная схема для второго экземпляра — сдвинуть все номера на сотню или тысячу: 1640/1641/1660:1691 или 2540/2541/2560:2591. Так по номеру порта сразу видно, к какому экземпляру он относится.
Подготовка: что проверить до изменения порта
Смена порта требует перезапуска службы агента. Все сеансы пользователей оборвутся, несохранённые данные пропадут. Делайте это вне рабочего времени и предупредите пользователей заранее.
Перед изменением:
Проверьте, что новые порты свободны. В командной строке на сервере:
netstat -ano | findstr ":2540 :2541 :2560"Пустой вывод — порты свободны. Если строка есть, по номеру PID в последнем столбце найдите процесс:
tasklist /FI "PID eq 4321".Скопируйте каталог
srvinfo. Путь к нему стоит после ключа-dв командной строке службы, обычноC:\Program Files\1cv8\srvinfo. В нём лежит реестр кластера: список баз, администраторы, настройки блокировок. Копия нужна, чтобы откатиться за минуту.Сохраните текущую командную строку службы. Скопируйте значение
ImagePathв текстовый файл. Это самый быстрый способ вернуть всё как было.Составьте список мест, где прописан сервер. Ярлыки и списки баз у пользователей, веб-публикации, внешние обработки с COM-подключением, скрипты резервного копирования через
racили1cv8.exe.
Как изменить порт сервера 1С в Windows через параметры службы
Шаг 1. Найдите службу агента
Откройте services.msc и найдите службу вида 1C:Enterprise 8.3 Server Agent (x86-64). В её свойствах на вкладке «Общие» видны имя службы и «Исполняемый файл» — полная командная строка. Обычно она выглядит так:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Здесь 8.3.xx.xxxx — номер вашей версии платформы.
Шаг 2. Остановите службу
В той же оснастке нажмите «Остановить» или выполните sc stop с именем службы. Убедитесь в диспетчере задач, что процессы ragent.exe, rmngr.exe и rphost.exe этого экземпляра завершились.
Шаг 3. Поменяйте порты в командной строке
Вариант через sc config — без ручной правки реестра. Командная строка запускается от имени администратора, пробел после binPath= обязателен:
sc config "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\Program Files\1cv8\srvinfo\" -debug"
Вариант через редактор реестра:
- Запустите
regeditот имени администратора. - Перейдите в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesи откройте раздел с именем службы из шага 1. - Дважды щёлкните параметр
ImagePathи замените значения после-port,-regportи-range. - Остальную часть строки, включая кавычки вокруг путей, не трогайте.
Опечатка в ImagePath — и служба не запустится. Перед правкой экспортируйте раздел службы в .reg-файл через «Файл → Экспорт».
Шаг 4. Запустите службу и проверьте
sc start "1C:Enterprise 8.3 Server Agent (x86-64)"
netstat -ano | findstr ":2540 :2541"
Оба порта должны быть в состоянии LISTENING. Если слушается 2540, а на 2541 тишина, вы попали в ситуацию с уже созданным кластером — следующий раздел.
Второй экземпляр сервера на той же машине
Если нужен не перенос, а второй сервер рядом с первым, создайте отдельную службу со своим каталогом srvinfo:
mkdir D:\srvinfo2540
sc create "1C Server Agent 2540" binPath= "\"C:\Program Files\1cv8\8.3.yy.yyyy\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"D:\srvinfo2540\" -debug" start= auto obj= ".\USR1CV8" password= "пароль_пользователя"
Учётной записи службы (по умолчанию локальный пользователь USR1CV8) дайте полный доступ к новому каталогу srvinfo. Два экземпляра с общим srvinfo работать не будут.
Про файл services
В Windows есть файл C:\Windows\System32\drivers\etc\services со списком «имя сервиса — порт». Сервер 1С его не читает: порты берутся только из командной строки службы. Правка этого файла ничего не меняет, а случайная порча строк может сломать другие программы. Трогать его не нужно.
Порт кластера и диапазон рабочих процессов в консоли
Параметр -regport используется при первом запуске, когда каталог srvinfo пуст: агент создаёт кластер по умолчанию с этим портом. После этого порт записан в реестре кластера и живёт своей жизнью.
Если служба уже работала на 1541, есть два рабочих пути.
Путь 1. Новый кластер в консоли. Подходит, когда баз немного:
- Откройте «Администрирование серверов 1С Предприятия» и подключитесь к агенту по новому порту (2540).
- В ветке «Кластеры» через контекстное меню создайте новый кластер, в поле «IP-порт» укажите 2541.
- Зарегистрируйте в нём информационные базы с теми же параметрами СУБД. Данные в SQL при этом не трогаются, вы лишь заново описываете базу в кластере.
- Старый кластер удалите после проверки.
Путь 2. Чистый srvinfo. Остановите службу, переименуйте каталог srvinfo в srvinfo_old, создайте пустой и запустите службу с новыми параметрами. Агент создаст кластер сразу на 2541 и с диапазоном 2560:2591. Базы, администраторов кластера и настройки блокировки регламентных заданий придётся завести заново.
Если в старом кластере у базы стояла «Блокировка регламентных заданий» (например, у копии рабочей базы), после перерегистрации она снимется. Проверьте это сразу, иначе копия начнёт обмены и отправку данных наравне с рабочей.
Диапазон рабочих процессов меняется без пересоздания кластера. В консоли раскройте кластер → «Рабочие серверы» → свойства сервера. В поле диапазонов IP-портов укажите новый, например 2560:2591. После этого перезапустите службу в нерабочее время, чтобы рабочие процессы поднялись на новых портах.
Сколько портов нужно в диапазоне: каждый рабочий процесс занимает порт, плюс порты нужны служебным процессам кластера. Стандартных 32 портов хватает большинству серверов. Если в настройках задано много рабочих процессов, расширьте диапазон с запасом.
Смена порта сервера 1С на Linux
На Linux порты задаются тем же набором параметров ragent, но в настройках службы:
- в старых пакетах — переменные
SRV1CV8_PORT,SRV1CV8_REGPORT,SRV1CV8_RANGEв файле/etc/sysconfig/srv1cv83(RHEL-подобные) или/etc/default/srv1cv83(Debian, Ubuntu); - в новых сборках с юнит-файлом systemd — параметры запуска в самом юните. Меняйте их не в исходном файле, а через
systemctl edit, чтобы правку не затерло обновление платформы .
После изменения:
sudo systemctl daemon-reload
sudo systemctl restart <имя службы сервера 1С>
sudo ss -tlnp | grep -E ':(2540|2541)'
Правило про уже созданный кластер действует и здесь: каталог реестра кластера по умолчанию лежит в домашнем каталоге пользователя usr1cv8, порт в нём сохраняется после первого запуска.
Брандмауэр: открываем новые порты сервера
Без правил брандмауэра сервер слушает новый порт, но клиенты с других машин к нему не достучатся. Старые правила на 1540–1591 удалите или отключите, если старый экземпляр больше не нужен.
Windows, PowerShell от имени администратора:
New-NetFirewallRule -DisplayName "1C Server 2540-2541" -Direction Inbound -Protocol TCP -LocalPort 2540,2541 -Action Allow
New-NetFirewallRule -DisplayName "1C Server rphost 2560-2591" -Direction Inbound -Protocol TCP -LocalPort 2560-2591 -Action Allow
То же через netsh:
netsh advfirewall firewall add rule name="1C Server 2540-2591" dir=in action=allow protocol=TCP localport=2540-2541,2560-2591
Linux:
# firewalld
sudo firewall-cmd --permanent --add-port=2540-2541/tcp --add-port=2560-2591/tcp
sudo firewall-cmd --reload
# ufw
sudo ufw allow 2540:2541/tcp
sudo ufw allow 2560:2591/tcp
Если между клиентами и сервером стоит аппаратный межсетевой экран или правила в облаке, откройте те же порты и там. Отдельно — порт ras (1545 или ваш), если консоль или rac работают с другой машины.
Что поменять у клиентов, в веб-публикации и в ras
Список баз у пользователей
В окне запуска откройте базу на изменение. В поле «Кластер серверов
1С:Предприятия» допишите порт кластера через двоеточие: server:2541. Порт агента (2540) сюда не пишут.
Списки баз лежат в файле %APPDATA%\1C\1CEStart\ibases.v8i. Строка подключения в нём после правки выглядит так:
Connect=Srvr="server:2541";Ref="buh";
Если пользователям раздаётся общий список через 1CEStart.cfg, поправьте исходный файл один раз — рабочие места подтянут его при следующем запуске.
Ярлыки, скрипты, COM
В командной строке запуска используется ключ /S:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"server:2541\buh"
То же касается обработок с внешним соединением: в строку подключения Srvr="server:2541";Ref="buh"; порт добавляется так же.
Веб-публикация
В файле default.vrd в каталоге публикации поправьте атрибут ib:
ib="Srvr="server:2541";Ref="buh";"
Или опубликуйте заново утилитой webinst с новой строкой -connstr "Srvr=server:2541;Ref=buh;". После правки перезапустите пул приложений IIS или Apache.
Сервер администрирования ras
Служба ras подключается к агенту, поэтому при смене -port её тоже надо перенастроить. В командной строке службы ras адрес агента указан последним аргументом, например localhost:1540. Замените его на localhost:2540 тем же способом, что и для агента. Утилита rac после этого работает как прежде: rac server:1545 cluster list.
Диагностика: сервер на новом порту не отвечает
Начинайте проверку с самого сервера и двигайтесь к клиенту. Сначала netstat или ss на сервере, потом проверка порта с рабочего места:
Test-NetConnection server -Port 2541
TcpTestSucceeded : True — порт доступен по сети, ищите ошибку в строке подключения. False — проблема в службе или брандмауэре.
Если не помогло
- Откатитесь: верните сохранённую командную строку службы и каталог
srvinfoиз копии. Сервер вернётся на 1540/1541. - Проверьте права учётной записи службы на каталог
srvinfo. После переименования или создания нового каталога доступ часто забывают выдать. - Если на машине стоит антивирус с сетевым экраном, у него свои правила, независимые от брандмауэра Windows.
- Включите технологический журнал сервера с событиями
EXCPиCONNна время проверки — он покажет, на каком этапе рвётся соединение.