Как запустить 1с как службу
В данной статье познакомимся с сервером администрирования кластера серверов, а конкретно с утилитами rac.exe и ras.exe, а также программы deployka с помощью которых становится возможным администрирование кластера серверов 1С:Предприятие из командной строки.
По традиции, всем кому лень читать, предлагаю посмотреть вебинар на указанную тему
Ну а остальным добро пожаловать под кат:
0. Оглавление
1. Общие сведения
А общая схема работы данной связки выглядит следующим образом:
Сервер администрирования должен быть той же версии, что и версия кластера серверов 1С:Предприятия, причем одновременно к одному кластеру серверов могут быть подключены несколько серверов администрирования, но конкретный сервер администрирования может взаимодействовать только с одним агентом сервера.
И сервер администрирования и утилита командной строки могут работать в любой поддерживаемой платформой 1С:Предприятия ОС. Но в данной статье мы ограничимся только ОС семейства Windows.
2. Установка компонент сервера администрирования
И сам сервер и утилита администрирования входят в состав компонент сервера 1С:Предприятия. Соответственно, на компьютере с запущенной службой агента сервера 1С:Предприятия они уже должны быть установлены по умолчанию.
Чтобы убедиться в этом, достаточно перейти в каталог с файлами сервера 1С:Предприятия и найти в нем соответствующие утилиты (для удобства файлы можно сгруппировать по типу).
Подробно про установку сервера 1С:Предприятия я писал здесь.
Причем, при выбранной данной компоненте на следующем шаге мастер установки предложит установить сервер 1С:Предприятия как службу Windows. От этого пункта конечно же следует отказаться сняв соответствующий флаг.
После установки необходимо убедиться в наличии всех необходимых компонент описанным выше способом.
3. Запуск сервера администрирования
Для получения подробной информации по утилите ras.exe можно вызвать справку выполнив команду
Из справки видно, что сервер администрирования может работать как в режиме приложения, так и как служба Windows (параметр service ). Также с мы можем задать сетевой порт, на котором будет работать сервер администрирования (параметр port, по умолчанию используется порт 1545), а для режима администрирования кластера используется режим claster. Вызвать справку к данному режиму можно командой:
rac help cluster
После чего увидим, что у данного режима в качестве аргумента указывается адрес агента кластера серверов 1С:Предприятия. По умолчанию это localhost:1540.
Таким образом, если сервер администрирования запускается на той же машине, где запущен и агент сервера 1С:Предприятия, достаточно выполнить команду
Ну а если необходимо подключиться к агенту сервера, запущенном, например, на компьютере с сетевым именем Server1C, причем агент работает на нестандартном порту 2540, то команда будет следующей:
rac cluster server1c:2540
4. Запуск сервера администрирования в качестве службы Windows
Конечно же, чтобы не запускать сервер администрирования каждый раз руками, удобно запустить его единожды в качестве службы Windows. Но, к сожалению, разработчики платформы не реализовали возможность автоматической регистрации соответствующей службы в системе, как, например, это сделано для агента сервера 1С. Для добавления службы предлагается воспользоваться системной утилитой sc. Давайте рассмотрим этот процесс чуть более детально.
Для начала, я рекомендую для создаваемой службы создать отдельного пользователя Windows. Подробно как это сделать я описывал здесь.
Пусть это будет локальный пользователь с именем USR1CV8_RAS и паролем Pass123
Далее, необходимо создать и выполнить bat-файл, который будет регистрировать соответствующую службу. Содержания файла следующее:
В файле указываем:
В качестве единственного параметра bat-файла выступает текущая версия платформы 1С:Предприятия. Таким образом, для создания службы запускаем командную строку с правами администратора и запускаем созданный ранее файл register-ras.bat, не забыв указать нужную версию платформы.
Проверяем, что в системе появилась служба с указанным именем. И сразу запускаем ее, выбрав соответствующий пункт в контекстном меню.
На этом установка сервера администрирования в качестве службы завершена.
5. Администрирование кластера серверов с помощью утилиты rac.exe
Итак, сервер администрирования мы установили. Взаимодействием с сервером осуществляется с помощью специальной консольной утилиты rac.exe. Выполним команду
чтобы получить справку данной программы.
Как видно из справки, утилита имеет один общий аргумент, задающий адрес сервера администрирования (по умолчанию localhost:1545) и множество режимов работы: для администрирования агента кластера серверов, самого кластера, менеджера кластера, рабочих процессов и т. д. Справку по каждому режиму можно вызвать соответствующей командой.
Описывать все режимы работы, очевидно, нет никакого смысла. Приведу лишь несколько примеров работы.
Получение списка информации о кластерах:
Получение списка информационных баз на заданном кластере серверов:
Получение списка соединений с указанной информационной базой:
Утилита администрирования позволяет выполнить весь объем работ, необходимый для администрирования кластера серверов, за исключением аутентификация ОС для администраторов кластера серверов, рабочего сервера и информационной базы.
6. Программные обертки для работы с сервером администрирования
Главное, мы имеем возможность выполнять различные инструкции на кластере серверов 1С из командной строки. А это значит, что можно добавлять необходимые функции по взаимодействию с кластером серверов 1С:Предприятия в различные программы, обработки или же скрипты.
Например, среди прочего, работать с сервером администрирования может написанная на языке OneScript программа deployka.
О скиптовом движке OneScript я уже рассказывал здесь.
О программе deployka можно подробнее узнать здесь.
Ну а максимально полный обзор всех имеющихся библиотек и приложений написанных на OneScript приведен в этой статье.
7. Установка и настройка с программой deployka
Алгоритм установки OneScript и deployka довольно подробно разобран в статьях по указанным в предыдущем пункте ссылкам. Ну а если коротко, он состоит из следующих пунктов:
1. Скачиваем дистрибутив OneScript с официального сайта.
2. Устанавливаем, следуя инструкциям мастера.
3. Перелогиниваемся в системе, чтобы применились новые переменные среды.
4. Запускаем командную строку с правами администратора, проверяем, что предыдущие пункты выполнены корректно командной
5. Устанавливаем программу deployka с помощью пакетного менеджера opm, выполнив команду
opm install deployka
7. Вот в общем то и все. Все режимы работы программы видны на экране. Далее читаем справку на сайте или в консоли, вызывав подсказку для каждого режима соответствующей командой:
Вот так, например, можно завершить все сеансы в указанной информационной базе с последующей установкой блокировки начала сеансов.
deployka session kill -db Accounting_Demo -rac "C:\Program Files\1cv8\8.3.11.2867\bin\rac.exe" -db-user "АбрамовГС (директор)"
Всем спасибо, кто дочитал до конца. Пишите, если у вас остались вопросы.
Смотрите также:
Каким должны быть сервера (или сервер) для комфортной работы пользователей в системе 1С:ERP? Давайте попробуем разобраться вместе. В нашей компании начинается новый проект внедрения 1С:ERP в…
Установка платформы 1С:Предприятие 7.7 на 64-х битную операционную систему сопряжена с некоторыми трудностями. Дело в том, что установить 1С через обычный установщик не получится, даже если запускать программу в режиме…
IIS (Internet Information Services) – один из немногих штатных инструментов Windows, которым можно пользоваться, не ища более приемлемых альтернатив от других разработчиков. Веб-сервер IIS с поддержкой языка PHP можно использовать…
Не так давно, передо мной встала задача, сделать так чтобы регламентные задания 1С, в файловой базе, выполнялись постоянно, но при этом никому бы не приходилось держать открытой 1Ску под пользователем регламентных заданий.
Так как конфигурация была переписана, и некоторые (дописанные) задания требовали наличия полных прав (а переписывать всё в привилегированный модуль было долго и лень ;) ), то было решено запускать 1Ску под пользователем с полными правами, и прятать окно 1С с рабочего стола чтобы кому-либо не было доступа к интерфейсу программы.
Лучшим вариантом стал запуск 1С как службы.
Исходный код написан на Delphi
Для тех, кто не сможет скомпилировать исходники сервиса, поменяв в коде логин и пароль пользователя для запуска 1С, для них есть скомпилированный файл сервиса со встроенным логином: "ServiceAdmin" и паролем: "MegaPassword" без кавычек, и с соблюдением регистра. Нужно будет только добавить этого пользователя в базу и задать ему этот пароль.
Настройка сервиса производится в файле service.ini. Для удобства редактирования файла настроек, а также установки/запуска/остановки сервиса, используется ServiceSetupGUI.exe. С настройками, думаю, не возникнет проблем. Все на русском.
Есть еще один нюанс по остановке сервиса и как следствие закрытию 1С. В настройках сервиса есть галка " Останавливать 1С посылкой wm_close ". Она означает, что для закрытия 1С главному окну программы будет послана winapi-комманда WM_CLOSE, что примерно аналогично нажатию крестика "Закрыть" в окне программы. И в большинстве случаев этого будет достаточно. НО, в моей конфигурации нужно было обязательно выполнить, на важно какие, действия перед закрытием 1С, а wm_close бывало приходило раньше, чем они завершались, и 1с закрывалась. Так вот, в этом случае можно убрать галку " Останавливать 1С посылкой wm_close ", в этом случае сервис создаст файл "wm_close" в папке, которая будет указана в настройке "Общая с 1С папка для записи файла ", и тогда в 1С для нашего пользователя в процедуре ПриНачалеРаботыСистемы можно подключить обработчик ожидания, в котором проверять, не появился ли в нашей папке файл wm_close, и если он там есть, то выполнять необходимые нам действия, после чего вызывать ЗавершитьРаботуСистемы( Ложь ); Сервис дождётся завершения 1С и остановится. Путь к этой папке в 1С у меня хранится в константе, хотя можно его и в коде прописать, если уверены что папка ни куда переедет.
На счет прав. При установке сервиса кнопкой "Установить" из ServiceSetupGUI у пользователя должны быть права администратора. Также если для остановки сервиса через создание файла wm_close в папке нужно проследить чтобы у соответствующих пользователей были права на запись и удаление файлов в этой папке.
Сервис по умолчанию имеет Тип запуска - автоматически, т.е. при загрузке компа сервис стартанет и запустит 1С. Тип запуска можно сменить либо в Delphi, либо в свойствах службы в оснастке Windows.
Нужно чтобы файловая 1С8 на филиале была постоянно запущена. Т.е. в случае, если она вылетает или долгое время не выходит в режим ожидания команд от пользователя, она перезапускалась.
Можно ли реализовать это средствами ОС (Windows XP) или лучше написать зацикленный скрипт, который будет перезапускать 1С.
пусть 1с пишет дату и время последних активных действий в файл, а шедулер настрой раз в 15 минут проверять это время
(6) например изменение файла регистрации, или последняя выполненая обработка ожидания или еще чего
"Нужно чтобы файловая 1С8 на филиале была постоянно запущена" - хм. Автору нужно чтобы постоянно выполнялись регламентные задания в файловой версии?
В планировщике заданий ОС - вызов скрипта. В скрипте - анализ времени очередного перезапуска. Дополнительное регламентное задание перезаписывает в скрипте время очередного перезапуска на будущий период. Как только сеанс зависнит - время перестанет меняться и скрипт перезапустит сеанс.
Сервисом попробуй запустить. Через srvany например. Вдруг взлетит. В свойствах сервиса настрой запуск под правами нормального пользователя, и автоматический перезапуск при падении. Но перед этим хорошо подумай -- оно тебе надо? Заставить так работать -- легко, жить потом с этим -- устанешь.
(9) А можно скрипт запускать не планировщиком, а как службу? Это дело вкуса, но просто хочется, чтобы скрипт работал постоянно и каждые 3 минуты проверял, запущена ли 1С или нет. А если скрипт остановится, он тут же восстанавливался бы.
(8) Обмен данными должен контролироваться через 1с на филиалах.
(0) Поставь nnCron и сделай задание чтоб раз в 10 минут искало процесс/окно и в случае его отсутствия, запускала бы процесс
(12) да, такой способ я знаю. а как службу не получится CMD-скрипт запустить?
(13) не проверял, но имхо реально в крайнем случае через вызов CMD.exe с параметрами и путём к батнику
+(14) Имелось в виду запуска батника как службой из nnCron. есть вариант №2 (но не проверял) есть проги типа Bath Compiller, а дальше exe превращаешь в службу как тебе выше написали
Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"
Получается этакая матрешка, но тестовый период показывает высокую стабильность работы.
Можно было бы, конечно, все написать на JAVA, но моего текущего уровня недостаточно на создания JAVA веб-приложения.
Для чего опубликовано сырое решение?
Конечная цель - создать продукт, полезный массовому пользователю. К сожалению, времени для полностью единоличной работы над проектом у меня недостаточно, поэтому, если идея интересна сообществу - хотелось бы довести его до ума усилиями желающих по стандартной opensource схеме без преследования коммерческого интереса.
Исходные коды
Для работы с исходными кодами требуется Visual Studio 2015 с поддержкой Visual Basic (Visual Studio 2015 Community Edition бесплатна!).
Любые привнесенные улучшения в код должны быть опубликованы в открытый доступ.
Исходники на github не содержат сторонних библиотек, необходимых для работы.
Полный архив с исходниками и библиотеками можно скачать под этой публикацией, либо на github в списке релизов.
Что можно сделать в перспективе, кроме стандарных функций консоли администрирования
Установка RAS-сервера администрирования
Сервер администрирования (Remote Administrative Server / RAS) должен быть установлен отдельно для каждого существующего сервера приложений 1С. Версии сервера приложений и сервера администрирования должны совпадать.
Для установки RAS-сервера в качестве службы можно использовать следующую команду:
Хранение пользовательских данных
1) Не конфиденциальные данные (все, что не касается паролей) сохраняются на сервере в файлах типа "/App_Data/.json", где USER-ID - уникальный доменный идентификатор пользователя Windows.
Несколько скриншотов из интерфейса
Основное окно с деревом администрируемых серверов и выводимой информацией.
Открытие карточки ИБ из списка:
Специальные предложения
(1), (3) - отлично, тогда буду допиливать постепенно на выходных.
(4) Проще сказать что есть, чем чего нет :).
Пока только можно:
- посмотреть список сессий и убивать их по одной.
- посмотреть список соединений и процессов
- посмотреть список баз и открыть ее карточку.
Надо доделать весь основной функционал консоли 1С:
- создание и редактирование баз
- групповое удаление сеансов
- добавление\удаление\редактирование серверов, кластеров
и т.д. и т.п.
Хотя я уже и в таком виде вполне активно использую.
(6) На JAVA надо будет проделать точно такую же работу - написать весь интерфейс. 1С предоставляет только API к серверу администрирования в виде JAVA библиотек.
(0) А что конкретно в ней сырое и недоделанное? Что нужно доделать для более-менее приемлемого использования? (4) Evil Beaver, переписать все на джава - убрать все лишнее. (5) minimajack, ну это как вариант. Но если переписать на JAVA, то отсутствующая функциональность не появится же, верно? Я спрашиваю, чего не хватает с точки зрения пользователя. (6) Evil Beaver, на некоторых кнопочках написано "(не работает)" . по идее как раз то и значит Не мог бы уважаемый автор описать отличие данной разработки от существующей консоли администрирования 1С. (9) Dragonim,В самом начале под заголовком "Преимущества". (10)
1. Не понял про единый интерфейс. У 1С разве интерфейс отличается от версии к версии (в рамках 8.3)?
2. Стандартную консоль надо поставить на компьютер с windows и зарегистрировать, а вашем случае необходимо поднять веб сервер?
3. API это хорошо, но где бы прочитать его функциональность и возможность?
А лицензии при этом не нарушаются? Я так понимаю, конвертация предполагает декомпиляцию.
У меня получилось создать службу только после убирания кавычек и добавления пробелов:
Но это скорее к вопросу возможности копипасты кода.
Вот такая ошибка, можете подсказать что делать?
Строка 28: <compilation debug="true" targetFramework="4.5">
Строка 29: <assemblies>
Строка 30: <add assembly="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
Строка 31: </assemblies>
Строка 32: </compilation>
Просмотры 35187
Загрузки 30
Рейтинг 81
Создание 13.11.15 09:09
Обновление 13.11.15 09:09
№ Публикации 414870
Тип файла Приложение (exe)
Конфигурация Конфигурации 1cv8
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
Учебно-методический комплекс является уникальной разработкой с использованием «лучших практик», наработанных автором в проектах на предприятиях разных масштабов, отраслей и сфер деятельности Учебно-методический комплекс «Управление закупками: инструменты работы с требованиями»См. также
Универсальный редактор данных (УРД) Промо
Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов
1 стартмани
27.08.2021 5971 124 Adeptus 51
Доп. панель Alt+Z
Панель, вызываемая для объекта комбинацией клавиш Alt+Z (для документа, справочника, плана вида характеристик, плана счетов и т.д.). Возможности: Редактор всех реквизитов, таблиц и движений, Анализ прав к объекту, Поиск ссылок на объект с фильтрами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Подключается как Расширение.
2 стартмани
24.06.2021 8097 100 sapervodichka 57
Оптимизация размера изображений из присоединенных файлов УТ 11.4
5 стартмани
10.07.2020 8801 5 Neti 4
Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)
Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.
10 стартмани
27.11.2019 17317 46 akpaevj 46
Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек. Промо
Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.
1 стартмани
04.11.2018 54174 530 Eugen-S 35
Конфигурация для администраторов "Центр управления базами" для 8.3 УФ
Конфигурация предназначена для централизованного управления информационными базами предприятия. Разработана на БСП версии 2.4.4.76. В работе использует COM-соединение.
3 стартмани
09.10.2019 10767 36 WhiteOwl 17
Информация о программных лицензиях 1С (Ring GUI)
Обработка, представляющая из себя обертку функций Утилиты лицензирования 1С (ring) в понятном для обычного человека виде. По сути, это GUI утилиты RING
5 стартмани
18.09.2019 9612 34 MaxxG 6
Обновление конфигурации 1С из cf по расписанию
Часто в процессе внедрения или активной разработки конфигурации возникает необходимость ежедневного обновления конфигурации базы данных.
1 стартмани
09.09.2019 4104 1 sivin-alexey 2
DroidRAC2 - консоль администрирования кластера серверов 1С:Предприятие 8.3 под Android Промо
DroidRAC2 - клиент для RAS-сервиса кластера серверов платформы 1С:Предприятие 8.3 под Android.
1 стартмани
24.02.2017 27561 12 user700211_a.straltsou 20
Кто уложил 1С, или мониторинг загрузки кластера в разрезе пользователей с помощью Grafana
Мониторингом различных параметров работы кластера 1С в zabbix сейчас уже никого не удивишь. Собственно потребление памяти, процов и места на серверах обычно настраивают первыми. Потом идет мониторинг в разрезе rphost'ов и различные метрики функционирования SQL сервера. Но вот когда уже все это есть, то временами возникает вопрос - какой же конкретно нехороший человек пытается съесть все (ну не все, но много) ресурсы сервера? Можно смотреть в консоль кластера и ловить редиску там. Можно анализировать журнал регистраций, включать технологический журнал или накапливать статистку в специализированных базах 1С. Но, "настоящим" сисадминам проще как-то с внешними скриптами, базами данных и, например, Grafana. Расскажу что у нас получилось.
Читайте также: