Всем доброго вторника. Началась неделя распродаж в сфере ритейл и, наверное, не только. А это значит, что уже никакие серьезные изменения в проде не делаются или еще не делались и будут выполнятся после распродаж, и на фоне этого появилось время поделиться с вами неким инструментом.
Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого сказали бы, есть же консоль на win с нее же это можно делать, и все верно, но есть пару но.
Наш департамент разделен на админов и на тех. поддержку (с разным уровнем знаний) и поэтому админам и консоль сойдет для администрирования, но вот для тех. поддержки давать консоль, в которой можно удалить сервер с кластера и сменить назначение ролей и т.д., совсем не охота. Да и для этого нужно иметь кучу разных консолей с необходимой версией 1С, перенастраивать ее для каждого при смене сервера или порта для платформы. Как для меня это просто потраченное время, только ради того, чтобы можно было срубить сеанс. И для того, чтобы снять с админов такую мелкую, но отвлекающую задачу, сделали такой инструмент.
В основе его лежит RAC, те, кто работает вплотную с 1С, знает, что это такое. Далее мы его используем в паре скриптов PHP, ну а дальше всего лишь CSS, NGINX, PHP-FPM.
Весь инструмент упакован в контейнеры NGINX и PHP, который build через docker-compose и через него и стартует. И все, инструмент готов. Исходники можно глянуть в моем хабе, оттуда же все скачать, подправить под себя и пользоваться.
Кратко о том, что нужно править.
Это, конечно же, доменное имя, по которому вы будете заходить на веб, но можно и вовсе не править, а заходить по адресу, на котором у вас висят контейнеры.
Также необходимо поправить index.php, а именно ID кластера 1С и ID базы в кластере.
<form method="POST">
<input name="DB" id="DB" value="ид базы" type="hidden" readonly >
<input name="SRV" id="SRV" value="адрес или имя сервера" type="hidden" readonly >
<input name="CL" id="CL" value="ид кластера" type="hidden" readonly >
<input type="submit" name="DBSELECT" value="имя которое вы бы хотели видеть" style="width:120px;height:25px"/>
</form>
<form method="POST">
<input name="SU" id="SU" value="" style="width:220px;height:25px" placeholder="тут вводить только session" >
<input name="SRV" id="SRV" value="иадрес или имя сервера" type="hidden" readonly >
<input name="CL" id="CL" value="ид кластера" type="hidden" readonly >
<input type="submit" name="USRSELECT" value="DEL session" style="width:150px;height:25px"/>
</form>
После этого делать билд всего и запуск. И уже для одной из баз у вас будет доступ.
В контейнере использую версию 1с/RAC 8.3.12.1567 и этого достаточно. RAS тот, что стоит рядом с сервером 1С, может быть отличен от версии в контейнере и это не страшно, так все работает. Главное, чтобы RAS совпадал с версией на сервере с 1С.
Чуть ниже скрипт создания службы для RAS, которую вам нужно установить на вашем 1Сном сере. Нужно, чтобы он был в диапазоне портов сервера службы 1С и был той же версии. В примере также 8.3.12.1567 на стандартном порту.
@echo off
set SrvUserName=.\USR1C_RAS
set SrvUserPwd="1111"
set CtrlPort=1540
set AgentName=localhost
set RASPort=1545
set SrvcName="1C:Enterprise 8.3 Remote Server"
set BinPath="\"C:\Program Files\1cv8\8.3.12.1567\bin\ras.exe\" cluster --service --port=%RASPort% %AgentName%:%CtrlPort%"
set Desctiption="1C:Enterprise 8.3 Remote Server"
sc stop %SrvcName%
sc delete %SrvcName%
sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Desctiption%
Вот и все. Нужно вносить хотфиксы в прод, получилось не так много времени, как ожидалось)
Пользуйтесь, комментируйте, может, кто-то поправит мой любительский html/php/css)