Вопросы по установке двух серверов 1С на одном компьютере возникают регулярно, несмотря на то, что яндекс с гуглом выдают достаточное количество ссылок на мануалы, как это сделать. Однако лично мне они помогли лишь частично, так как все необходимые знания пришлось «собирать по частям». Поэтому я решил написать свой собственный мануал, который, возможно, мне пригодится через год-другой, когда сам забуду, как это делать.
Есть два основных случая:
-
Вы хотите установить два сервера разных платформ, например 8.2.19.130 и 8.3.12.1412 (ключевым здесь будет отличие первых двух цифр – 8.2 и 8.3)
-
Вы хотите установить два сервера одной платформы или платформ, отличающихся минорными релизами, например два сервера платформы 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"
И теперь для запуска консоли используете нужный вам bat файл Console831*****.bat.
В принципе, все. Ставьте лайки, подписывайтесь на канал, оставляйте комментарии (с).