Несколько версий сервера 1С на одном компьютере

Как установить несколько экземляров сервера 1С на один компьютер. Как установить несколько служб агента 1С на один сервер? Как запустить сервера разных платформ на одном компьютере.

Вопросы по установке двух серверов 1С на одном компьютере возникают регулярно, несмотря на то, что яндекс с гуглом выдают достаточное количество ссылок на мануалы, как это сделать. Однако лично мне они помогли лишь частично, так как все необходимые знания пришлось «собирать по частям». Поэтому я решил написать свой собственный мануал, который, возможно, мне пригодится через год-другой, когда сам забуду, как это делать.

Есть два основных случая:

  1. Вы хотите установить два сервера разных платформ, например 8.2.19.130 и 8.3.12.1412 (ключевым здесь будет отличие первых двух цифр – 8.2 и 8.3)
  2. Вы хотите установить два сервера одной платформы или платформ, отличающихся минорными релизами, например два сервера платформы 8.3.11.3034 (один с отладкой, другой без, один 32, другой 64) или два сервера 8.3.11.3034 и 8.3.11412 (здесь ключевым будет совпадение первых двух цифр релиза – 8.3 и 8.3)

Случай 1:

Будем считать, что у вас уже имеется штатно установленный и работающий сервер 1С платформы 8.2. Трогать его мы не будем и сразу перейдем к установке сервера на платформе 8.3.

Для установки новой платформы можете взять дистрибутив под названием «Технологическая платформа 1С:Предприятия (64-bit) для Windows» (файл обычно называется windows64full.rar).

ВАЖНО! При установке новой версии платформы необходимо снять галку «Установить сервер 1С:Предприятие 8 как сервис Windows».

После установки платформы, необходимо запустить Command Prompt (Admin) – если у вас Win 10 или Win 2012 – правой кнопкой по кнопке Пуск – там выбрать Command Prompt (Admin). Дальше я буду исходить из того, что у вас есть определенные навыки работы через командную строку (если же нет, рекомендую прерваться и уделить пару часов изучению темы).

Для начала перейдем в папку Bin установленной платформы 8.3.11.3034:

cd «C:\Program Files\1cv8\8.3.11.3034\bin»

И при помощи программы ragent.exe зарегистрируем еще один сервис для сервера 1С на платформе 8.3.11.3034:

.\ragent.exe -instsrvc -port 2540 -regport 2541 -range 2560:2591 -usr .\USR1CV8 -pwd PASSWORD -d «C:\Program Files\1cv8\srvinfo»

В данной строке мы даем команду создать службу, которая будет запускать агент сервера (RAGENT) на порту 2540, менеджер кластера (RMNGR) на 2541 и рабочие процессы (RPHOST) на портах с 2560 по 2591. Как вы заметили, порты отличаются от штатных первой цифрой (2 вместо 1). Напомню, что штатно используются порты 1540, 1541, 1560-1591. Также мы указываем локального пользователя .\USR1CV8 (точка и обратный слеш перед именем пользователя в данном случае обязательны), пароль пользователя PASSWORD и каталог C:\Program Files\1cv8\srvinfo, где будут храниться данные реестра кластера.

Запустить службу можно командной:

.\ragent.exe -start

Или же просто открыть список служб и запустить вашу новую службу оттуда.

Чтобы только что установленный сервер 1С был доступен по сети, необходимо добавить используемые сервером порты (2540, 2541, 2560-2591) в исключения Брандмауэра Windows (Windows Firewall). Сделать это можно в настройках Брандмауэра или вот этой строкой:

netsh advfirewall firewall add rule name=»1c_server_ports» protocol=TCP dir=in localport=2540,2541,2560-2591 action=allow

Далее вам необходимо будет открыть консоль, расположенную по адресу:

 C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc

И создать еще один центральный сервер с указанным портом 2540. На картинке видны две консоли 8.2 (верхний) и 8.3 (нижний) и два сервера работающих на порту 1540 и 2540.

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

При написании этой части я опирался на статью Виталия Онянова http://tavalik.ru/zapusk-neskolkix-serverov-1spredpriyatiya-raznyx-versij/. Вы всегда можете обратиться к ней за дополнительной помощью.

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

Случай 2:

И так, вам нужно установить два экземпляра сервера на одном компьютере, причем экземпляры одной версии платформы. Исходный материал, от которого должно все начинаться — https://its.1c.ru/db/v8312doc#bookmark:cs:TI000000130

Там сказано:

В «1С:Предприятии» отсутствуют штатные средства регистрации нескольких экземпляров сервиса сервера «1С:Предприятия» одной версии. Для того чтобы выполнить такую регистрацию, следует воспользоваться утилитой sc. При выполнении такой регистрации, должны различаться имена служб, номера сетевых портов и адреса каталогов кластера.

А также приведен пример скрипта, который позволит установить службу, однако он в чистом виде работать отказывается (по крайней мере у меня). Вот чуть подправленная и рабочая версия этого скрипта, полученная методом проб и ошибок:

@echo off

rem %1 — version number

rem %2 — first 2 port characters. for 1540,1541,1560:1591 it will be 15

rem %3 — cluster reg catalog

rem register-service 8.3.11.3034 25 «C:\Program Files\1cv8\srvinfo2541»

set SrvUserName=.\USR1CV8

set SrvUserPwd=PASSWORD

set RangePort=%260:%291

set BasePort=%241

set CtrlPort=%240

set SrvcName=»1C:Enterprise 8.3 Server Agent %CtrlPort% %1″

set BinPath=»\»C:\Program Files\1cv8\%1\bin\ragent.exe\» -srvc -agent -regport %BasePort% -port %CtrlPort% -range %RangePort% -d \»%~3\» -debug»

set Desctiption=»1C:Enterprise 8.3 Server Agent. Parameters: %1, %CtrlPort%, %BasePort%, %RangePort%»

if not exist «%~3» mkdir «%~3»

sc stop %SrvcName%

sc delete %SrvcName%

sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Desctiption% depend= Tcpip/Dnscache/lanmanworkstation/lanmanserver/

Ключевые отличия – перед именем пользователя указывается точка и обратный слеш, в переменной BinPath вместо «/» перед параметрами указывается «-» и в параметре depend обязательно после lanmanserver должен быть «/». Ну и конечно не забудьте заменить PASSWORD на пароль вашего USR1CV8.

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

Для начала сохраните вашу отредактированную версию скрипта (назвав его register-service.bat) в папке с установленной новой платформой C:\Program Files\1cv8\8.3.11.3034\bin.

После этого откройте командную строку и перейдите в папку Bin установленной платформы 8.3.11.3034:

cd «C:\Program Files\1cv8\8.3.11.3034\bin»

Теперь запустите ваш скрипт register-service.bat указав 3 обязательных параметра (пример этой команды в 4й строчке скрипта, который приведен выше):

register-service 8.3.11.3034 25 «C:\Program Files\1cv8\srvinfo2541»

Данный скрипт установит службу для платформы 8.3.11.3034 (первый параметр), пропишет штатные порты на 25** (второй параметр), укажет папку C:\Program Files\1cv8\srvinfo2541 (третий параметр) как каталог для данных реестра кластера (если папка отсутствует – она будет создана).

Тут важно понимать, что новому экземпляру сервера 1С нужна будет своя папка C:\Program Files\1cv8\srvinfo2541 (назвать ее можете как угодно), так как штатная папка C:\Program Files\1cv8\srvinfo уже будет занята первым экземпляром сервера.

Следующий важный нюанс, про который не говориться в статье на ИТС – необходимо дать права на папку C:\Program Files\1cv8\srvinfo2541 пользователю USR1CV8.

Готово. Можно открывать консоль служб Windows и запускать службу. Все дальнейшие действия не отличаются от случая 1.

НО. Есть еще нюанс. Если у вас второй экземпляр сервера другого релиза (например первый 8.3.10.2299, а второй 8.3.11.3034), то у вас возникнут определенные трудности связанные с запуском консоли сервера.

По умолчанию, вы всегда запускаете консоль C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc, которая в свою очередь работает с определенной версией файла radmin.dll. Т.е. консоль для работы с платформой 8.3.10.2299 должна работать с файлом C:\Program Files\1cv8\ 8.3.10.2299\bin\radmin.dll, а для работы с 8.3.11.3034 — C:\Program Files\1cv8\8.3.11.3034\bin\radmin.dll. Есть рекомендации, что перед запуском консоли для работы с определенной версией сервера – необходимо каждый раз регистрировать нужную версию radmin.dll при помощи regsvr32. Однако мне этот вариант не помог (и судя по вопросам на форумах не мне одному). И я нашел один рабочий способ.

В папке C:\Program Files\1cv8\common создаете два файла 8.3.10.2299.reg и 8.3.11.3034.reg с соответствующим содержим:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A42674D4-2D97-4988-A81D-2C113CC42A95}\InprocServer32]

@=»C:\\Program Files\\1cv8\\8.3.10.2299\\bin\\radmin.dll»

«ThreadingModel»=»Both»

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{803144C8-17E6-4926-86C5-C195B6D226D4}\InprocServer32]

@=»C:\\Program Files\\1cv8\\8.3.10.2299\\bin\\radmin.dll»

«ThreadingModel»=»Both»

И

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A42674D4-2D97-4988-A81D-2C113CC42A95}\InprocServer32]

@=»C:\\Program Files\\1cv8\\8.3.11.3034\\bin\\radmin.dll»

«ThreadingModel»=»Both»

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{803144C8-17E6-4926-86C5-C195B6D226D4}\InprocServer32]

@=»C:\\Program Files\\1cv8\\8.3.11.3034\\bin\\radmin.dll»

«ThreadingModel»=»Both»

Также вы создаете два bat файла Console83102299.bat и Console83113034.bat с соответствующим содержимым:

regedit /s «C:\Program Files\1cv8\common\8.3.10.2299.reg»

mmc /s «C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc»

и

regedit /s «C:\Program Files\1cv8\common\8.3.11.3034.reg»

mmc /s «C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc»

источник: Инфостарт