Внедрение УПП проходило тогда еще на платформе 8.2, и как показал подробный «разбор полетов», зависшие сеансы связаны с тем, что встроенный в УПП типовой механизм отключения пользователей при выполнении команды запуска УПП ЗавершитьРаботуПользователей отрабатывает, когда на сервере предприятия крутится только один рабочий процесс. Точнее сказать, так работал на тот момент, как сейчас – не знаю, не проверял. А если рабочих процессов несколько – велика вероятность, что соединения остаются висеть (типовой механизм отключал тогда только соединения в первом найденном рабочем процессе). Тогда запланированный на ночь процесс обновления конфигурации узла, или резервное копирование путем выгрузки dt или что либо еще, требующее монопольного доступа к базе, не выполняется.
Разработанная конфигурация получила название «Страж», она была обучена писать логи проводимых регламентных операций и отправлять оповещение по почте. В результате утренний контроль сводится сейчас к беглому просмотру отдельной папки с посланиями стража в почтовом клиенте, и занимает менее минуты. Кроме того, постепенно добавилось еще несколько полезных функций, о которых позже чуть подробнее.
Страж рассчитан на работу с одной серверной информационной базой, может работать как в интерактивном режиме, так и в пакетном - совместно с bat-файлом, который запускается стандартными средствами ОС (в случае резервного копирования) или из основной ИБ в случае автоматического обновления узла РИБ. В случае одновременного резервного копирования нескольких баз можно поднять и настроить несколько стражей. И вызвать их из одного командного файла последовательно.
В приложенном файле выгрузки ИБ «Страж» созданы два пользователя по соответствующим ролям: Администратор и Пользователь. Без паролей.
Эта тема конечно очень широко освещена, существует масса решений, данная же разработка создавалась под себя, чтобы прежде всего исправить глюк УПП с отключением пользователей при обновлении РИБ, облегчить конкретные специфические операции и упростить контроль над исполнением регламентов. Несколько лет удачной эксплуатации, просьбы коллег поделится сподвигли опубликовать-таки, вдруг кому-то и пригодится.
Теперь подробнее на примерах.
Работа в пакетном режиме.
Вот все команды (параметры запуска), которые воспринимает страж. Способы их использования описаны далее в примерах пакетных файлов. Команды передается стражу после ключа /С, некоторые команды состоят из нескольких параметров – через точку с запятой без пробелов.
- ЗаблокироватьИБЗавершитьРаботуПользователей;<КодРазрешения>;<ФайлФлагПользователиНеОтключены>;< ТаймаутОтложеннойБлокировки>
- ПроверитьРезультатОбновления;< ЛогОбновления>;<ФайлФлагОбновлениеНеПрошло>
- РазрешитьРаботуПользователей;<КодРазрешения>
- РазрешитьРаботуФоновыхЗаданий;<КодРазрешения>
- РазрешитьРаботуПользователейИфоновыхЗаданий;<КодРазрешения>
- ПроверитьРоботаОбмена
- ПерезапуститьСерверПредприятия;<ТаймаутПерезапуска>
Ниже приведен пример пакетного файла резервного копирования баз, который запускается из шедулера сервера. Стражи являются файловыми базами, поднятыми на сервере предприятия. Вся информация о результатах работы пакетного файла сохраняется в лог-файле, определенном в переменной командного файла LogFile. Вообще все в пакетном файле настраивается вверху, там где set. Аккуратнее с кодировками: bat-файл должен быть сохранен в OEM. При обновлении платформы надо не забывать менять строку запуска set v8exe=..., а также иногда требуется ручная перерегистрация ComConnector с помощью RegSvr32 на той машине, где выполняется страж.
@echo off
REM Командные файл для резервного копирования УПП, ЗУП и перезапуска сервера предприятия с использованием конфигурации СТРАЖ
REM Путь запуска 1С
set v8exe="C:\Program Files (x86)\1cv8\8.3.5.1119\bin\1cv8.exe"
REM Имя обслуживаемой ИБ
set DataBaseNameUPP="server/UPP"
set DataBaseUPP=/S%DataBaseNameUPP%
set DataBaseNameZUP="server/ZUP"
set DataBaseZUP=/S%DataBaseNameZUP%
REM Логин администратора обслуживаемой ИБ
set AdminUserUPP=/N"admin" /P"**********" /WA-
set AdminUserZUP=/N"admin" /P"**********" /WA-
REM Имя ИБ "СТРАЖ"
set StrazhBaseUPP=/F"C:\1c_data\СтражУПП"
set StrazhUserUPP=/N"admin" /P"**********" /WA-
set StrazhBaseZUP=/F"C:\1c_data\СтражЗУП"
set StrazhUserZUP=/N"admin" /P"**********" /WA-
REM Пути для логов и файлов-флагов (путь закончить слэшем)
REM при работе информация между стражем и данным скриптом передается с помощью специальных файлов-флагов
REM создание/удаление конкретного файла-флага означает успешное/неуспешное выполнение каких-либо действий
set LogAndFlags="C:\1C_data\Tmp\"
set LogFile="C:\1C_Data\Log\Backup.log"
REM Формируем строковое представление даты-времени запуска процесса
set tm=%TIME: =0%
set dt=%DATE%
set StartPoint=%dt:~-4,4%%dt:~-7,2%%dt:~-10,2%%tm:~-11,2%%tm:~-8,2%%tm:~-5,2%
set CurrentPoint=%dt% %tm:~-11,8%
REM Файл для выгрузки информ. базы (имя включает время запуска)
set BackupPathUPP="\\storage\Backup_Database\UPP\UPP_%StartPoint%.dt"
set BackupPathZUP="\\storage\Backup_Database\ZUP\ZUP_%StartPoint%.dt"
echo ======================================= >> %LogFile%
echo . >> %LogFile%
echo %CurrentPoint% Starting reglament "Backup" for infobases %DatabaseNameUPP%, %DatabaseNameSAUP%, %DatabaseNameZUP% >> %LogFile%
echo . >> %LogFile%
REM Завершение работы пользователей
echo Disconnecting users and disabling logon for infobase %DatabaseNameUPP%: >> %LogFile%
echo Reglament %StartPoint%>>%LogAndFlags%ОтключитьПользователейУПП%StartPoint%.flg
start ""/wait %v8exe% ENTERPRISE %StrazhBaseUPP% %StrazhUserUPP% /CЗаблокироватьИБЗавершитьРаботуПользователей;РезервноеКопирование%StartPoint%;ОтключитьПользователейУПП%StartPoint%.flg;5 /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
echo Disconnecting users and disabling logon for infobase %DatabaseNameZUP%: >> %LogFile%
echo Reglament %StartPoint%>>%LogAndFlags%ОтключитьПользователейЗУП%StartPoint%.flg
start ""/wait %v8exe% ENTERPRISE %StrazhBaseZUP% %StrazhUserZUP% /CЗаблокироватьИБЗавершитьРаботуПользователей;РезервноеКопирование%StartPoint%;ОтключитьПользователейЗУП%StartPoint%.flg;5 /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Перезапуск сервера предприятия
echo Restarting 1C Enterprise Server: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBaseUPP% %StrazhUserUPP% /CПерезапуститьСерверПредприятия;300 /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Выгрузка инф. базы УПП
echo Unloading infobase %DatabaseNameUPP%: >> %LogFile%
start "" /wait %v8exe% CONFIG %DataBaseUPP% %AdminUserUPP% /DumpIB%BackupPathUPP% /UCРезервноеКопирование%StartPoint% /Out%LogFile% -NoTruncate
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Разрешение работы пользователей УПП
echo Enabling logon and sheduled jobs for infobase %DatabaseNameUPP%: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBaseUPP% %StrazhUserUPP% /CРазрешитьРаботуПользователейИфоновыхЗаданий;РезервноеКопирование%StartPoint% /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Выгрузка инф. базы ЗУП
echo Unloading infobase %DatabaseNameZUP%: >> %LogFile%
start "" /wait %v8exe% CONFIG %DataBaseZUP% %AdminUserZUP% /DumpIB%BackupPathZUP% /UCРезервноеКопирование%StartPoint% /Out%LogFile% -NoTruncate
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Разрешение работы пользователей ЗУП
echo Enabling logon and sheduled jobs for infobase %DatabaseNameZUP%: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBaseZUP% %StrazhUserZUP% /CРазрешитьРаботуПользователейИфоновыхЗаданий;РезервноеКопирование%StartPoint% /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
echo ======================================= >> %LogFile%
REM Завершение бат-файла
Работает пакетный файл следующим образом.
Дата-время начала каждой операции фиксируется в переменных пакетного файла, потом она добавляется в имена файлов-флагов, коды разрешения, наименование файлов-выгрузок ИБ и т.п. для уникальности, а также пишется в лог.
Первым запускается страж например УПП для отключения сеансов пользователей с параметрами:
start ""/wait %v8exe% ENTERPRISE %StrazhBaseUPP% %StrazhUserUPP% /CЗаблокироватьИБЗавершитьРаботуПользователей(параметр 1-действие стража);РезервноеКопирование%StartPoint%(параметр 2 – код разрешения);ОтключитьПользователейСАУП%StartPoint%.flg(параметр 3- имя файла-флага);5(параметр 4 – таймаут в секундах) /Out%LogFile% -NoTruncate /DisableStartupMessages
Так повторяется для всех баз.
Затем вызывается страж для перезапуска сервера предприятия. Для профилактики, так вроде рекомендовалось на 8.2…
start ""/wait %v8exe% ENTERPRISE %StrazhBaseUPP% %StrazhUserUPP% /CПерезапуститьСерверПредприятия(параметр 1-действие стража);300(параметр 2 – таймаут в секундах – на столько остановка) /Out%LogFile% -NoTruncate /DisableStartupMessages
Потом производится выгрузка ИБ из конфигуратора, результат работы конфигуратора пишется в тот же лог, и затем происходит разрешение работы пользователей с помощью стража.
И так для каждой базы.
А вот пример пакетного файла обновления конфигурации узла УПП, который определяется в обработке «Параметры администрирования информационной базы».
@echo off
REM Командный файл для пакетного обновления конфигурации УПП с использованием конфигурации СТРАЖ
REM Путь запуска 1С
set v8exe="C:\Program Files (x86)\1cv8\8.3.5.1119\bin\1cv8.exe"
REM Имя обслуживаемой ИБ
set DataBaseName="server/UPP"
set DataBase=/S%DataBaseName%
REM Логин администратора обслуживаемой ИБ
set AdminUser=/N"admin" /P"********" /WA-
REM Логин пользователя обслуживаемой ИБ для первого запуска после обновления и обмена с центральной базой
set ExchUser=/N"obmen" /P"*********" /WA-
REM Путь к папке для логов и файлов-флагов (закончить слэшем)
set LogAndFlags="C:\1C_Data\Tmp\"
REM Лог всего процесса обновления писать сюда
set LogFile="C:\1C_Data\Log\Update_UPP.log"
REM Лог конфигуратора писать сюда
set ConfLogFile="C:\1C_Data\Tmp\Config_UPP.log"
REM Конфигурация "СТРАЖ"
set StrazhBase=/F"C:\1c_Data\СтражУПП"
set StrazhUser=/N"admin" /P"********" /WA-
REM Формируем строковое представление даты-времени запуска процесса
set tm=%TIME: =0%
set dt=%DATE%
set StartPoint=%dt:~-4,4%%dt:~-7,2%%dt:~-10,2%%tm:~-11,2%%tm:~-8,2%%tm:~-5,2%
set CurrentPoint=%dt% %tm:~-11,8%
echo ======================================= >> %LogFile%
echo . >> %LogFile%
echo %CurrentPoint% Starting reglament "Updating configuration" for database %DatabaseName% >> %LogFile%
echo . >> %LogFile%
REM Завершение работы пользователей
echo Disconnecting users and disabling logon: >> %LogFile%
echo Reglament %StartPoint% >> %LogAndFlags%ОтключитьПользователей%StartPoint%.flg
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CЗаблокироватьИБЗавершитьРаботуПользователей;ПакетноеОбновление%StartPoint%;ОтключитьПользователей%StartPoint%.flg;300 /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Если пользователи не отключены - разрешаем работу только пользователей (но не фоновых заданий) и завершаем процесс
if exist %LogAndFlags%ОтключитьПользователей%StartPoint%.flg (
call :EnableUsersOnly
exit
)
REM Обновление конфигурации
echo Updating configuration: >> %LogFile%
echo Reglament %StartPoint% >> %LogAndFlags%ОбновитьКонфигурацию%StartPoint%.flg
start "" /wait %v8exe% CONFIG %DataBase% %AdminUser% /UpdateDBCfg /UCПакетноеОбновление%StartPoint% /Out%ConfLogFile% /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Проверка результата обновления
echo Testing result: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CПроверитьРезультатОбновления;Config_UPP.log;ОбновитьКонфигурацию%StartPoint%.flg /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Если конфигурация не обновлена - разрешаем работу только пользователей (но не фоновых заданий) и завершаем процесс
if exist %LogAndFlags%ОбновитьКонфигурацию%StartPoint%.flg (
call :EnableUsersOnly
exit
)
REM Запуск обмена
echo Running interactive exchange: >> %LogFile%
start "" /wait %v8exe% ENTERPRISE %DataBase% %ExchUser% /UCПакетноеОбновление%StartPoint% /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
REM Разрешение работы пользователей
echo Enabling logon and sheduled jobs: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CРазрешитьРаботуПользователейИфоновыхЗаданий;ПакетноеОбновление%StartPoint% /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
echo ======================================= >> %LogFile%
REM Завершение бат-файла
exit
REM Разрешение работы пользователей без фоновых заданий
:EnableUsersOnly
echo Enabling logon WHITHOUT SHEDULED JOBS: >> %LogFile%
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CРазрешитьРаботуПользователей;ПакетноеОбновление%StartPoint% /Out%LogFile% -NoTruncate /DisableStartupMessages
set tm=%TIME: =0%
set dt=%DATE%
set CurrentPoint=%dt% %tm:~-11,8%
echo %CurrentPoint% Done... >> %LogFile%
echo . >> %LogFile%
echo ======================================= >> %LogFile%
REM возврат в точку вызова
exit /b
Описание логики работы.
Сначала запускается страж для отключения пользователей
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CЗаблокироватьИБЗавершитьРаботуПользователей;ПакетноеОбновление%StartPoint%;ОтключитьПользователей%StartPoint%.flg;300 /Out%LogFile% -NoTruncate /DisableStartupMessages
Здесь в параметрах указан таймаут 300 – это значит, что после установки блокировки через 300 секунд будут принудительно отключаться сеансы. В самом страже для этой команды можно также настроить, что если пользователи вдруг не отключены – то перзапустить сервер предприятия (задается время, когда это можно сделать). При начале отключения стражем создается файл-флаг (3-й параметр команды), и если все соединения отключены, этот файл-флаг удаляется.
Затем пакетный файл анализирует, отключены ли пользователи (по наличию файла-флага), и если не отключены – то разрешается работа (кроме фоновых заданий) и процесс обновления прерывается.
В случае успешного отключения вызывается конфигуратор для обновления, результат пишется конфигуратором в лог-файл.
На следующем шаге страж анализирует созданный конфигуратором лог-файл – ищет фразу «конфигурация успешно обновлена», команда
start ""/wait %v8exe% ENTERPRISE %StrazhBase% %StrazhUser% /CПроверитьРезультатОбновления(параметр 1-команда);Config_UPP.log(параметр 2 – лог конфигуратора);ОбновитьКонфигурацию%StartPoint%.flg(параметр 3 – файл-флаг для пакетного файла) /Out%LogFile% -NoTruncate /DisableStartupMessages
Далее также по наличию/отсутствию файла-флага пакетный файл в случае ошибки обновления разрешает только работу пользователей, но не фоновых заданий.
В случае успешного обновления УПП запускается от имени специального пользователя для выполнения регламентных действий по изменению номера релиза и первого обмена, и разрешается работа пользователей и фоновых заданий.
Перед использованием СТРАЖа в пакетном режиме необходимо выполнить настройки в интерактивном режиме.
Работа в интерактивном режиме.
В этом режиме запуск стража производится стандартно, как обычное приложение, доступен следующий функционал:
- настройка параметров (только Администратор),
- просмотр/отключение соединений и сеансов (Администратор, Пользователь),
- контроль «робота» (только Администратор),
- блокировка/разрешение фоновых заданий (Администратор, Пользователь),
- блокировка/разрешение соединений (только Администратор).
Настройка параметров
осуществляется с помощью пункта меню «Обслуживаемая конфигурация\Настройки».
Общие параметры
Параметры Имя сервера, порты, имя ИБ, пользователь и пароль администратора кластера, пользователь и пароль администратора ИБ указываются для той инф. базы, с которой хотим работать.
Параметр Служебный каталог (для файлов-флагов и лог-файлов) должен совпадать с указанными в пакетном файле в случае пакетного использования.
Имя службы сервера предприятия – это параметр для команды net stop/net start при перезапуске сервера.
Можно перезапускать сервер предприятия – временные интервалы, когда стражу разрешено перезапустить сервер предприятия при пакетном режиме, если не удалось отключить пользователей. В данном примере разрешен перезапуск с 20-00 вечера до 06-30 утра. Это используется в случае команды ЗаблокироватьИБЗавершитьРаботуПользователей. Если же из пакетного файла страж запущен с командой ПерезапуститьСерверПредприятия, то эти параметры игнорируются и перезапуск выполняется безусловно.
Параметры для контроля робота обмена.
Данная возможность была добавлена для следующего: у нас используются некоторые обработки, которые по различным причинам не реализованы в виде фоновых заданий, а работают просто как внешние обработки в обычном приложения 1С, которое крутится, например, в отключенном RDP-сеансе на терминальном сервере (разумеется, RDP-сеанс для этого не сбрасывается по таймауту), либо может работать на какой-либо клиентской машине. Чтобы автоматически запустить эти обработки после выполнения регламентов, на данном терминальном сервере или клиенте поднимается для этого страж в файловом варианте, который не зависит от серверных регламентов и крутится постоянно.
Имя пользователя – это имя пользователя, от которого работает робот. В случае отсутствия активности робота страж будет отключать соединения именно этого пользователя.
Строка запуска – строка запуска основной базы с автостартом робота. Для этого в типовую конфигурацию (в нашем случае УПП) была добавлена обработка параметра запуска ЗапуститьВнешнююОбработку. Вот пример параметра:
start "" "C:\Program Files (x86)\1cv82\8.2.19.68\bin\1cv8.exe" ENTERPRISE /S"server/BASE" /N"robot" /P"*******" /WA- /CЗапуститьВнешнююОбработку;\\server\Exchange\ПолучениеДанных.epf /DisableStartupMessages
Каталог обмена – это каталог, в котором робот должен периодически обновлять специальный файл-флаг, чтобы сообщать стражу о своей активности.
Оповещение по почте.
Можно настроить получателей диагностических писем на различные события в работе стража. Можно указать несколько получателей на одно событие разными строчками.
Сведения о сеансах.
Для этого предназначен пункт меню «Обслуживаемая конфигурация \ Сведения о сеансах».
Можно просматривать и отключать сеансы и соединения, причем пользователю стража для этого не нужно знать пароль кластера и администратора ИБ – они сохранены в константах и не видны.
Контроль робота обмена.
Для такого режима работы стража предназначен пункт меню «Обслуживаемая конфигурация \ Наблюдение за роботом обмена».
Если запустить этот режим, то каждые несколько минут страж будет контролировать файл-флаг активности робота (это прописано в наших специфических обработках, робот должен говорить о том что он активен). В случае отсутствия активности робота после выполнения регламента или зависания робота, и разумеется когда не установлена блокировка соединений, он отключит соединения данного пользователя-робота если они зависли и запустит его заново.
Блокировка регламентных заданий.
История появления этого режима следующая: когда начали эксплуатировать УПП в боевом режиме оказалось, что РасчетСебестоимостиВыпуска проводится несколько часов. Есть также вариант «Провести вне транзакции» - занимает от 30 минут до полутора часов, но при этом часто появляются ошибки блокировки транзакций. Мешают, например, обмены данными с центральным узлом. Вот для этого скажем бухгалтеру, проводящему РСВ, дан доступ к стражу с правами Пользователь – устанавливает стражем блокировку регламентных заданий, проводит в УПП документ РСВ, снимает блокировку. И ничего не знает при этом про сервер предприятия и админский доступ.
Для этого предназначен пункт меню «Обслуживаемая конфигурация \ Блокировка регламентных заданий».
При этом используется специально сгенерированный код разрешения, и например пользователю не удастся снять блокировку, установленную не им, а админом.
Блокировка соединений и регламентных заданий.
Для этого предназначен пункт меню «Обслуживаемая конфигурация \ Блокировка соединений регламентных заданий». При этом можно указать код разрешения и время блокировки.
Этот режим можно использовать для администрирования информационной базы пользователем, не знающим пароль администратора кластера. Например, такой режим использовался, когда мне нужно было обновлять самописную конфигурацию на чужом сервере, где на кластер у меня прав не было, а были админские права только на одну базу, которую я сопровождал. Страж был поднят админами того кластера только для доступа к одной нужной мне базе.
Код конфигурации открыт, идеи для дальнейшего развития - заставить один страж работать с несколькими базами, избавится от пакетных файлов когда можно... Но это будет уже совсем другая конфигурация.