- Администрирование серверов 1с под linux (ubuntu)
- Информация о кластерах
- Список баз
- Удаление базы
- Добавление базы
- Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
- Управление серверами (консоль Linux)
- Управление серверами (консоль Linux)
- Консоль администрирования серверов 1С (ras) для Linux и Windows
Администрирование серверов 1с под linux (ubuntu)
1с и web разработка
В Windows есть оснастка «Администрирование серверов 1С: Предприятие», которая позволяет подключаться к кластерам серверов и управлять базами данных. А как управлять кластерами и базами в linux? Интересно? Тогда под кат
Пройдемся по пунктам выполняя наиболее востребованные команды. Заметьте, что я использовал 32 битную систему и 1С соответственно, поэтому если Вы используете 64 битную версию — путь к 1С будет скорее всего таким:/opt/1C/v8.3/x86_64/
Для начала запустим кластер серверов 1С следующей командой:
Информация о кластерах
Для получения информации о кластере в терминале надо ввести команду:
Вывод этой команды будет примерно такой:
В данном выводе нас особо интересует идентификатор кластера. В моем случае это «ef89b672-c6a6-11e4-ea91-0800274e0291». Мы будем использовать его для дальнейших манипуляций.
Список баз
Эта операция нам нужна для того, чтобы получить идентификаторы баз и дальнейшей работы с ними.
Для получения списка баз вводим в терминале команду:
Удаление базы
Вводим команду с использование идентификатора кластера и базы, которую хотим удалить:
Вывода у этой команды нет, поэтому если не ругается — считаем, что база удалена успешно.
И не забываем удалить базу из postgresql, если наша цель — полное удаление базы.
Тут важный момент — после имени базы обязательно ставим точку с запятой.
Добавление базы
Тут довольно большая команда, которую я разъясню чуть ниже:
У этой команды будет вывод:
Который соответственно показывает идентификатор только что созданной базы.
А теперь разъяснения:
—create-database
при создании информационной базы создать базу данных
—name=
(обязательный) имя информационной базы
—dbms=MSSQLServer|PostgreSQL|IBMDB2|OracleDatabase
(обязательный) тип СУБД, в которой размещается информационная база:
MSSQLServer — MS SQL Server
PostgreSQL — PostgreSQL
IBMDB2 — IBM DB2
OracleDatabase — Oracle Database
—db-server=
(обязательный) имя сервера баз данных
—db-name=
(обязательный) имя базы данных
—locale=
(обязательный) идентификатор национальных настроек информационной базы
—db-user=
имя администратора базы данных
пароль администратора базы данных
—descr=
описание информационной базы
—date-offset=
смещение дат в информационной базе
—security-level=
уровень безопасности установки соединений с информационной базой
—scheduled-jobs-deny=on|off
управление блокировкой выполнения регламентных заданий:
on — выполнение регламентных заданий запрещено
off — выполнение регламентных заданий разрешено
—license-distribution=deny|allow
управление выдачей лицензий сервером 1С:Предприятия
deny — выдача лицензий запрещена
allow — выдача лицензий разрешена
Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
Управление серверами (консоль Linux)
В клиент-серверном варианте работы 1С под управлением ОС семейства Windows в арсенале разработчика и администратора баз 1С есть штатное средство, с помощью которого удобно визуально управлять работой сервера — консоль администрирования сервера.
Также с версии 8.3.14 в платформу был добавлен программный интерфейс встроенного языка для взаимодействия с сервером администрирования.
Начиная с версии платформы 8.3.15 и выше данный функционал доступен в списке стандартных обработок в меню Все функции(Функции для технического специалиста)
Основными отличиями от консоли администрирования являются:
- Администрирование произвольной версии сервера «1С:Предприятие».
- Возможность установки произвольного отбора в табличных частях сеансов и показаний счетчиков потребления ресурсов.
- Возможность сохранения настроек подключений к серверам администрирования в файл.
Это удобно там еще, где стандартной консоли администрирования серверов нет в поставке, например, в версии для Linux.
Данная конфигурация основана на стандартной обработке платформы «Управление серверами» и несет в себе некоторые доработки для быстрого и удобного подключения к кластеру серверов:
- Возможность задавать параметры подключения, подразумевая изменение как каталога установки, так и версии платформы без доработки конфигурации(для запуска ras)
- Возможность запуска демона ras одной кнопкой с автоподключением под пользователем sudo(лучше такой возможностью не злоупотреблять, потому что в отладчике в командной строке подключения пароль пользователя с правами sudo представляется в явном виде, запуск ras можно либо вывести ярлыком на рабочий стол, либо написать скрипт автозапуска в системе, в интернете есть примеры и рабочие варианты).
Работа конфигурации проверялась на базовом дистрибутиве Debian 10.5 Buster, на версии платформы 1C Предприятие 8.3.18.1208
— Обновлен обработчик запуска службы сервера администрирования. Пароль суперпользователя не используется. Изменено число параметров для запуска, необходимо только задание пути размещения программных файлов 1С (папка /opt/. ).
— Запуск службы сервера администрирования можно настроить автоматически с помощью файла службы(*.service)(недостаток в том, что нужно при установке новой версии платформы корректировать параметры «WorkingDirectory» и «ExecStart»):
[Unit]
Description=RAS
After=syslog.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/1cv8/x86_64/8.3.20.1674/
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1cv8/x86_64/8.3.20.1674/ras cluster —daemon -p 1545
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=5
Restart=always
Сохраненный файл(ниже под именем ras.service) помещается в каталог /etc/systemd/system/, затем последовательно автозагрузка, запуск, статус для проверки:
$ sudo systemctl enable ras.service
$ sudo service ras start
$ sudo service ras status
Если порт используется по-умолчанию, то параметр порта -p можно не указывать
Проверено на Debian 11 и версии платформы 1С Предприятие 8.3.20.1674
Консоль обновлена на версию платформы 1С Предприятие 8.3.20.1710
Управление серверами (консоль Linux)
В клиент-серверном варианте работы 1С под управлением ОС семейства Windows в арсенале разработчика и администратора баз 1С есть штатное средство, с помощью которого удобно визуально управлять работой сервера — консоль администрирования сервера.
Также с версии 8.3.14 в платформу был добавлен программный интерфейс встроенного языка для взаимодействия с сервером администрирования.
Начиная с версии платформы 8.3.15 и выше данный функционал доступен в списке стандартных обработок в меню Все функции(Функции для технического специалиста)
Основными отличиями от консоли администрирования являются:
- Администрирование произвольной версии сервера «1С:Предприятие».
- Возможность установки произвольного отбора в табличных частях сеансов и показаний счетчиков потребления ресурсов.
- Возможность сохранения настроек подключений к серверам администрирования в файл.
Это удобно там еще, где стандартной консоли администрирования серверов нет в поставке, например, в версии для Linux.
Данная конфигурация основана на стандартной обработке платформы «Управление серверами» и несет в себе некоторые доработки для быстрого и удобного подключения к кластеру серверов:
- Возможность задавать параметры подключения, подразумевая изменение как каталога установки, так и версии платформы без доработки конфигурации(для запуска ras)
- Возможность запуска демона ras одной кнопкой с автоподключением под пользователем sudo(лучше такой возможностью не злоупотреблять, потому что в отладчике в командной строке подключения пароль пользователя с правами sudo представляется в явном виде, запуск ras можно либо вывести ярлыком на рабочий стол, либо написать скрипт автозапуска в системе, в интернете есть примеры и рабочие варианты).
Работа конфигурации проверялась на базовом дистрибутиве Debian 10.5 Buster, на версии платформы 1C Предприятие 8.3.18.1208
— Обновлен обработчик запуска службы сервера администрирования. Пароль суперпользователя не используется. Изменено число параметров для запуска, необходимо только задание пути размещения программных файлов 1С (папка /opt/. ).
— Запуск службы сервера администрирования можно настроить автоматически с помощью файла службы(*.service)(недостаток в том, что нужно при установке новой версии платформы корректировать параметры «WorkingDirectory» и «ExecStart»):
[Unit]
Description=RAS
After=syslog.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/1cv8/x86_64/8.3.20.1674/
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1cv8/x86_64/8.3.20.1674/ras cluster —daemon -p 1545
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=5
Restart=always
Сохраненный файл(ниже под именем ras.service) помещается в каталог /etc/systemd/system/, затем последовательно автозагрузка, запуск, статус для проверки:
$ sudo systemctl enable ras.service
$ sudo service ras start
$ sudo service ras status
Если порт используется по-умолчанию, то параметр порта -p можно не указывать
Проверено на Debian 11 и версии платформы 1С Предприятие 8.3.20.1674
Консоль обновлена на версию платформы 1С Предприятие 8.3.20.1710
Консоль администрирования серверов 1С (ras) для Linux и Windows
Программа для администрирования серверов 1С (ras) для Linux (в первую очередь) и Windows.
Программа писалась «для себя», исключительно под собственные нужды, для решения задач, возникающих именно у меня, поэтому функционал вот такой. При этом основным мотивом к её созданию было то, что для платформы Linux не существует достаточно удобного аналога «Консоли администрирования«, какой есть в Windows. Альтернативы, конечно, имеются, но они в силу разных причин не удовлетворяют моих потребностей.
На каком языке написана программа?
— на python с использованием фреймворка Qt (библиотека PyQt5)
Так он же , и вообще, лучше бы писал на
— мне плевать — написал на том, на чём смог. Мои потребности удовлетворяет, и этого уже достаточно.
Почему именно python?
— выбор пал на «питон» по причине того, что перед началом работы он, в связке с Qt, показался мне наиболее удобным для освоения. Как и графическая библиотека Qt, он кроссплатформенный, что было немаловажно перед стартом. У него хорошая реализация и поддержка в Linux, есть куча IDE (использую Pycharm), а по структуре языка, по синтаксису мне он показался гораздо ближе, чем тот же С++ какой-нибудь. Я за три месяца сумел изучить python и PyQt5 только по руководствам и примерам в интернете до степени «могу писать не слишком сложные программы с графическим интерфейсом» — значит, выбор был правильный.
Чёт как-то работает.
— всё реализовано так, как я посчитал нужным. Повторяюсь — писал для себя. «Я автор, я так вижу.» Я провициальный, далеко не суперский программист 1С, а «питонщик» из меня вообще нулевой. Тем не менее, программа работает и выполняет те функции, ради которых она была разработана.
Посмотрел я исходники. Какой ужас! Быдлокод! Кто так делает? Нужно было по-другому!
— так возьмите и сделайте. Свой парк развлечений с блэкджеком Свою консоль администрирования с «питоном» и «линуксом». Код открыт. Не хотите сами — внесите предложение в конструктивной форме или присылайте коммиты.
В целом, программа рассчитана на хоть сколько-то продвинутых пользователей, понимающих, что они делают и зачем. Понимающих, что такое «ras» и «rac» и как это всё работает (хотя я сам ещё не до конца всё понимаю). При этом я попытался сделать программу максимально удобной и для относительных новичков.
На каких ОС работает программа?
— Linux и Windows
Что из себя представляет программа?
— по большому счёту, это графический интерфейс к утилитам «ras» и «rac» с некоторыми дополнительными возможностями
В двух словах — что может программа?
— в программе реализованы самые базовые, но в то же время самые востребованные функции: создание, редактирование и удаление SQL-баз, принудительное завершение сеансов пользователей и вывод определённой информации
Где тестировалась программа?
1) дома: Kubuntu 21.10 x64, PostgreSQL; сервер 1С и SQL на одном компьютере;
2) дома в «виртуалке» Virtualbox: Windows 10 x64, MS SQL Sqerver 2008; сервер 1С и SQL на одном компьютере;
3) рабочий компьютер: Windows 10 x64, MS SQL Sqerver 2012; два сервера 1С установлены на двух серверах в локальной сети, два SQL-сервера в отдельной подсети «за» теми двумя
4) рабочий компьютер: Windows 10 x64, MS SQL Sqerver 2012; сервер 1С и SQL-сервер установлены на одном сервере в локальной сети
В данных конфигурациях критических ошибок либо нет, либо я на них не наткнулся.
Могут ли быть ещё ошибки в программе?
— Конечно. Я не в силах самостоятельно, «в одно лицо» предусмотреть и выявить все «косяки». Повторюсь: программа рассчитана на относительно опытных пользователей, которые, условно, не будут сознательно делить на ноль в каком-нибудь вообще неважном пункте меню. Плюс я не в состоянии протестировать все возможные комбинации операционных систем, SQL-серверов и серверов 1С и предусмотреть все возможные действия, которые могут совершить пользователи. До чего дошли руки, то и тестировал.
Не все функции программы (точнее, команды rac) мне удалось протестировать в работе просто по причине того, что я сам мало понимаю, для чего они нужны и как должны себя вести. Там полно всяких дополнительных параметров, которые мне за всё время администрирования баз ещё ни разу не пригодились (даже на Windows), это что-то очень специфичное. Возможно, протестирую в будущем, но это не точно.
Где хранятся настройки?
— [db_settings.xml — настройки списка баз, common_settings.xml — настройки самой программы]:
— Linux: /.config/AdminConsole/
— Windows: %AppData%/Roaming/AdminConsole/
Как хранятся пароли?
— на данный момент пароли хранятся в открытом виде в файле настроек (администратор ИБ, администратора кластера (в Linux)). Теоретически, при необходимости можно и зашифровать файл настроек, и вроде даже в python для этого есть механизм, но пока что я не вижу такой необходимости.
Почему программа так много весит?
— понятия не имею. Это всё python))) ну, и PyQt5. Я постарался — в силу скромных познаний в python — убрать из проекта всё лишнее, не тянуть лишних библиотек, но всё равно получилось много, и это при том, что весь код вместе с иконками весит пару-тройку мегабайт. Если кто знает, как облегчить сборку — буду признателен за совет.
Будет ли программа обновляться?
— будет, как минимум на период выявления критичных ошибок. Возможно, если будет интерес у пользователей на добавление нового функционала, то тоже займусь, если пойму, что это мне по силам. Всё же, уровень моего владения python я расцениваю как «зачаточный»
Что есть в дальнейших планах?
— думаю, было бы разумно реализовать настройку параметров кластера, но так как мне самому эта функция на данный момент не нужна, то всё зависит от востребованности у пользователей
Практически все действия в программе выполняются из контекстного меню по нажатию правой кнопки мыши.
При первом запуске программа создаёт два файла настроек. Дальше программа проверяет, запущен ли на локальном компьютере сервер ras. Далее желательно заполнить настройки программы, где выбрать сервер, где запущен ras — это может быть или локальная машина, или один или несколько серверов в сети.
По умолчанию сервер ras требует отдельного запуска, и для этого нужно нажать кнопку «Запустить ras». Вы попадёте в форму запуска ras, где можно выбрать варианты:
— запустить ras как службу на локальной машине (эту команду можно скопировать и использовать для создания служб ras на серверах в локальной сети)
— запустить ras разово на локальной машине (через командную строку)
После этого можно заполнить список баз, зарегистрированных в кластере 1С. Это можно сделать либо вручную, либо автоматически, нажав кнопку «Обновить». Если настройки были заполнены корректно, то после окончания процедуры обновления в левой части программы появится список серверов с базами.
Для пользователей Linux можно заполнить учётные данные администратора кластера для их дальнейшего автоматического использования (либо при вызове определённых команд потребуется вводить логин и пароль вручную)
Дальше нужно заполнить учётные данные администратора информационной базы 1С (если доступ к ИБ того требует). Возможно, стоит реализовать ввод логина/пароля в отдельном окне при обращении к базе, если этих данных нет в программе, но это пока не реализовано. (Ладно, пока придумывал весь этот текст, по ходу реализовал)
Ну, а дальше всё должно быть интуитивно понятно — если Вы запустили эту программу, то уж наверняка предполагаете, как она работает.
Вывод ошибок большинства команд, когда надо получить «выхлоп» (например, информация о сеансах), реализован через перенаправление стандартного потока вывода ошибок в текстовый файл во временной папке (. \Temp или . /tmp). Создаются две команды — одна для поиска ошибок (запускается через os.system(_bashCommand)), другая для непосредственного выполнения команды, если в первой команде ошибок не было обнаружено (запускается через subprocess.check_output(bashCommand, shell=True)). То есть по факту большинство команд выполняется дважды подряд. С виду такой метод кажется корявым, но как это реализовать более технично-эстетично в python, я не знаю, поэтому выкрутился вот таким вот способом.
Командам на исполнение «выхлоп» не нужен, поэтому в subprocess.check_output() смысла нет.
Буду искренне рад, если эта программа окажется полезной сообществу, особенно среди 1Сников-линуксоидов.