Из чего состоит 1С Fresh
1С Fresh это технология публикации решений. То есть это такой сервис, который позволяет опубликовать доступ к различным решениям на базе 1С массовому пользователю, связать эти решения в единую систему с общим администрированием и обслуживанием.
Центральным элементом является Менеджер Сервиса, управляющая конфигурация, которая связывает остальные элементы. Он хранит всю информацию о составляющих сервиса, о версиях конфигураций, о пользователях, областях данных, раздает команды на выполнение различных операций.
Правой рукой Менеджера Сервиса является Агент Сервиса, это сервисная конфигурация, которая занимается обслуживанием прикладных конфигураций. типичные задачи Агента Сервиса это:
- Обновить конфигурацию прикладной базы;
- Обновить выгрузку (дамп) до актуальной версии прикладной конфигурации;
- Подготовить начальные данные для новой версии конфигурации;
- Собрать статистику и ошибки из прикладных баз.
Эти задачи Агент Сервиса делает с помощью конфигуратора. До недавнего времени это был единственный элемент сервиса, требующий платформы Windows. Но в новой версии технологии 1C Fresh 1.0.19 разработчики устранили это ограничение, сейчас Агент Сервиса может работать и на Linux.
Информационные базы это прикладные конфигурации, опубликованные через Менеджер Сервиса. Конфигурации, которые на текущий момент поддерживают работу в режиме сервиса:
- 1С:ERP Управление предприятием 2;
- 1С: БизнесСтарт;
- 1С: Бухгалтерия государственного учреждения, редакция 2.0;
- 1С: Бухгалтерия предприятия, редакция 3.0;
- 1С: Бухгалтерия предприятия КОРП, редакция 3.0;
- 1С: Бухгалтерия предприятия (базовая), редакция 3.0;
- 1С: Бухгалтерия предприятия (базовая для 1), редакция 3.0;
- 1С: Вещевое довольствие 8;
- 1С: Зарплата и кадры государственного учреждения;
- 1С: Зарплата и управление персоналом», редакция 3;
- 1С: Зарплата и управление персоналом КОРП, редакция 3;
- 1С: Комплексная автоматизация, редакция 2.0;
- 1С: Отчетность предпринимателя, редакция 2.0;
- 1С: Предприниматель 2015;
- 1С: Управление нашей фирмой, редакция 1.6;
- 1С: Управление торговлей, редакция 11;
- 1С: Касса.
Есть возможность публиковать и свои собственные решения, на ИТС есть рекомендации по доработке.
Эти вышеперечисленные элементы являются базовыми и необходимыми для развертывания. Также есть и другие, дающие дополнительный функционал, но необходимыми они не являются:
- Шлюз приложений — сервис, позволяющий «прятать» внутреннюю структуру сервиса. Он проксирует и перенаправляет запросы к ИБ. Все адреса выглядят однотипно;
- Сайт сервиса — дает простой и удобный интерфейс пользователю для взаимодействия с сервисом, запуска приложений, предоставления доступа к своим приложениям;
- Менеджер доступности — хранит информацию о недоступности ресурсов сервиса и позволяет выводить сообщения о недоступности пользователям сайта и форума, даже в том случае, если все другие компоненты сервиса не функционируют.
Есть и другие компоненты сервиса, о них вы можете прочитать на сайте
Вводные данные
Коротко опишем хосты и сервисы, которые на них будут работать. Всю инфраструктуру будем разворачивать на сервере виртуализации, так что разнесем сервисы по разным виртуальным машинам. При использовании КОРП лицензирования можно также разделить функциональность, например, вынести обработку фоновых заданий на отдельный сервер приложений. В минимальной конфигурации можно собрать на двух хостах: разместить БД и сервер приложений на Linux, а Агент Сервиса отдать под управление Windows.
Hostname | ПО и функционал | Ресурсы VM |
---|---|---|
fresh-db.knopka.int | Debian 9, СУБД PostgreSQL 9.6 | 4 core\10Gb |
fresh-app-01.knopka.int | Debian 9, сервер 1С: Предприятие, прикладные конфигурации | 4-6 core\12-16Gb |
fresh-app-02.knopka.int | Debian 9, сервер 1С: Предприятие, Менеджер Сервиса | 4 core\8Gb |
fresh-app-sa.knopka.int | Windows, сервер 1С: Предприятие, Агент Сервиса | 4 core\8Gb |
fresh-app-sa.knopka.int | Debian 9, Apache 2.4, сервер 1С: Предприятие, web-модуль | 2 core\4Gb |
Первоначальная подготовка машин
Здесь будут базы данных: fresh-db.knopka.int
В качестве сервера БД используем PostgreSQL. Для удобства обновления подключим репозитории PostgresPro. 1С так же предоставляет дистрибутив, можно смело его использовать.
sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --no-verbose -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add - && apt-get update
apt-get install postgresql-pro-1c-9.6
Для каждой базы будем создавать кластер, который будет обслуживать отдельный экземпляр PostgreSQL. Это позволит управлять каждой базой и делать репликацию.
pg_createcluster 9.6 <clustername> -d <dir>
systemctl daemon-reload
<clustername> — имя нашего кластера, будем называть аналогично обслуживающейся в кластере базе;
<dir> — директория, в которой кластер будет создан.
Будет использован следующий свободный порт после 5432, если явно не указан при создании. Проверить список кластеров можно так:
pg_lsclusters
Подключимся к кластеру (с указанием порта, на котором он работает) и создадим роль (нужен superuser), под которым сервер администрирования будет взаимодействовать с БД:
su postgres
psql -p 5433
create role unoconnector with login superuser;
alter role unoconnector with encrypted password 'password';
Обязательно проведите первоначальную настройку. Для каждого кластера создаются собственные файлы конфигурации. Для простоты можно использовать PgTune. Задаете параметры окружения и получаете на выходе рекомендуемые настройки:
Сразу отметим, что рекомендуемые не значит оптимальные, в процессе работы может понадобится внести корректировки. В одной из предыдущих статей мы рассматривали настройку PostgreSQL, можно почерпнуть что-то полезное оттуда.
Здесь будут серверы приложений на Linux: fresh-app-[01-02].knopka.int
Установим необходимые пакеты:
apt-get install libperl5.24 libxslt1.1 libicu57 tcl8.5 libpython3.5 libpython2.7 libssl-dev krb5-multidev ssl-cert libssl-dev libgsf-1-114 imagemagick libgsf-1-dev ttf-mscorefonts-installer
Активируем шрифты и перегружаем сервер:
fc-cache -fv
reboot
Скачиваем архив с пакетами сервероа 1С: Предприятие и распаковываем в отдельную директорию, затем устанавливаем:
dpkg -i 1c-enterprise83-common_*_amd64.deb 1c-enterprise83-server_*_amd64.deb 1c-enterprise83-ws_*_amd64.deb 1c-enterprise83-common-nls_*_amd64.deb 1c-enterprise83-server-nls_*_amd64.deb 1c-enterprise83-ws-nls_*_amd64.deb
Даем права пользователю usr1cv8 на директорию /opt/1C:
chown -R usr1cv8:grp1cv8 /opt/1C
Настроим технологический журнал, на этапе установки он будет полезен, если что-то пойдет не так. Будем собирать исключительные события, которые могут не обрабатываться, но при этом вызывать падение приложения, а также писать запросы и ответы сервера. Бонусом будем хранить дампы. Для этого создадим каталог:
mkdir -p /opt/1C/v8.3/x86_64/conf
И поместим туда файл logcfg.xml со следующим содержанием:
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="/var/log/1c/excp" history="24">
<event>
<eq property="name" value="excp"/>
</event>
<property name="all"/>
</log>
<log location="/var/log/1c/vrs" history="24">
<event>
<eq property="name" value="vrsrequest"/>
</event>
<event>
<eq property="name" value="vrsresponse"/>
</event>
<property name="all"/>
</log>
<dump location="/var/log/1c/dumps" create="1" type="3"/>
</config>
Создадим каталоги для логов и дампов, и дадим права пользователю usr1cv8:
mkdir -p /var/log/1c/excp /var/log/1c/vrs /var/log/1c/dumps
chown -R usr1cv8:grp1cv8 /var/log/1c
Запускаем:
/etc/init.d/srv1cv83 start
Сделаем юнит для запуска сервера удаленного администрирования (ras). Создадим файл /etc/systemd/system/ras.service с содержанием:
[Unit]
Description=RAS
After=syslog.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/1C/v8.3/x86_64
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --daemon -p 1545
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=300
Restart=always
[Install]
WantedBy=multi-user.target
Активируем наш юнит и стартуем сервис:
systemctl daemon-reload
systemctl enable ras
systemctl start ras
Здесь будет сервер приложений на Windows: fresh-app-sa.knopka.int
Для обновления агенту сервиса потребуется запуск Конфигуратора. Мы уже писали, что в новой версии ограничение на использование Linux снято, но для примера будем использовать Windows, чтобы было понятно как происходит работа в этой среде.
Для запуска сервера администрирования (ras) надо зарегистрировать его как службу. Создадим файл reg-ras.bat со следующим содержанием:
@echo off
rem %1 - полный номер версии 1С:Предприятия
set SrvUserName=<имя пользователя>
set SrvUserPwd=<пароль пользователя>
set CtrlPort=1540
set AgentName=localhost
set RASPort=1454
set SrvcName="1C:Enterprise 8.3 Remote Server"
set BinPath="\"C:\Program Files\1cv8\%1\bin\ras.exe\" cluster --service --port=%RASPort% %AgentName%:%CtrlPort%"
set Description="Сервер администрирования 1С:Предприятия 8.3"
sc stop %SrvcName%
sc delete %SrvcName%
sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Description%
Имя пользователя и пароль меняем на те, от которых будет запускаться служба. Если Description будет на русском языке, не забываем создать файл в нужной кодировке. Запустим выполнение файла, в качестве параметра передаем версию платформы:
reg-ras.bat 8.3.11.2899
Затем стартуем службу.
Здесь будет web-сервер публикаций: fapache.knopka.int
Установим apache:
apt-get install apache2
Скачиваем архив с сервером 1С: Предприятие и распаковываем в отдельную директорию, затем устанавливаем:
dpkg -i 1c-enterprise83-common_*_amd64.deb 1c-enterprise83-server_*_amd64.deb 1c-enterprise83-ws_*_amd64.deb 1c-enterprise83-common-nls_*_amd64.deb 1c-enterprise83-server-nls_*_amd64.deb 1c-enterprise83-ws-nls_*_amd64.deb
Создадим конфигурационный файл для загрузки модуля при старте apache и рестартанем сервис:
echo "LoadModule _1cws_module \"/opt/1C/v8.3/x86_64/wsap24.so\"" > /etc/apache2/conf-available/1cws_module.conf
ln -s /etc/apache2/conf-available/1cws_module.conf /etc/apache2/conf-enabled/1cws_module.conf
/etc/init.d/apache2 restart
Настроим технологический журнал, для этого создадим каталог:
mkdir -p /opt/1C/v8.3/x86_64/conf
И поместим туда файл logcfg.xml со следующим содержанием:
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="/var/log/1c/excp" history="24">
<event>
<eq property="name" value="excp"/>
</event>
<property name="all"/>
</log>
<log location="/var/log/1c/vrs" history="24">
<event>
<eq property="name" value="vrsrequest"/>
</event>
<event>
<eq property="name" value="vrsresponse"/>
</event>
<property name="all"/>
</log>
<dump location="/var/log/1c/dumps" create="1" type="3"/>
</config>
Создадим каталоги для логов и дампов, и дадим права, чтобы apache мог туда писать:
mkdir -p /var/log/1c/excp /var/log/1c/vrs /var/log/1c/dumps
chown -R www-data:www-data /var/log/1c
Создание символьной ссылки на каталоги платформы
Установка новых версий платформы происходит в новые каталоги, содержащие номер версии, например,
C:\Program Files\1cv8\8.3.11.2899\. Чтобы немного автоматизировать процесс обновления создадим скрипт SetCurrent1CVersion.cmd, который будем запускать при обновлении, чтобы создаваемая им символьная ссылка была актуальна:
@echo off
if /%1 == / goto help
pushd "C:\Program Files\1cv8"
if exist current\ rmdir current
mklink /j current %1
popd
goto end
:help
echo Usage: SetCurrent1CVersion.cmd <version>
:end
В нашем случае выполним:
SetCurrent1CVersion.cmd 8.3.11.2899
Таким образом у нас всегда будет постоянный путь до актуальной версии C:\Program Files\1cv8\current\
Добавление кластера и рабочих серверов в консоли администрирования
Запускаем консоль администрирования сервера 1С: Предприятие и добавляем новый центральный сервер. Для авторизованного доступа добавляем администратора центрального сервера:
Таким же образом добавляем администратора кластера:
Настройка менеджера сервиса
Разворачиваем базу
Первым делом подготовим кластер для базы данных с помощью pg_createcluster, заведем в нем пользователя unoconnector.
В оснастке администрирования серверов создадим базу для менеджера сервиса. Подключение на нестандартный порт осуществляется строкой fresh-app-02.knopka.int port=5433.
После создания базы заходим в конфигуратор, заливаем конфигурацию менеджера сервиса. Затем входим в менеджер сервиса под логином Администратор без пароля. При первом запуске будет выполнена установка значений по-умолчанию и создание предопределенных пользователей.
Включаем сложность паролей:
Устанавливаем детализацию журнала регистрации:
Установим пароли для сервисных пользователей кроме Аноним (ProtectedUser, RemoteAccess, Администратор, Оператор), зададим параметры:
Создаем публикацию
Теперь необходимо опубликовать менеджер сервиса чтобы к нему можно было обращаться через web-сервисы или web-клиента.
На сервере fapache.knopka.int в каталог /etc/apache2/sites-available поместим файл sm.conf со следующим содержанием:
# sm внешняя публикация
Alias /ext/sm /var/www/1cfresh/ext/sm
<Directory /var/www/1cfresh/ext/sm/>
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor /var/www/1cfresh/ext/sm/default.vrd
</Directory>
# sm внутренняя публикация
Alias /int/sm /var/www/1cfresh/int/sm
<Directory /var/www/1cfresh/int/sm/>
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor /var/www/1cfresh/int/sm/default.vrd
</Directory>
и включим использование этого сайта:
a2ensite sm
Теперь надо создать каталоги в которые разместим файлы default.vrd:
mkdir -p /var/www/1cfresh/ext/sm /var/www/1cfresh/int/sm
default.vrd для внешней публикации:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/ext/sm"
ib="Srvr=fresh-app-02.knopka.int;Ref=sm;"
enableStandardOData="true">
</point>
default.vrd для внутренней публикации:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/int/sm"
ib="Srvr=fresh-app-02.knopka.int;Ref=sm;"
enableStandardOData="true">
<ws />
</point>
Перечитываем настройки apache:
systemctl reload apache2
Давайте проверим, как работает публикация. В web-клиенте в адресную строку вводим fapache.knopka.int/ext/sm
Если все сделали правильно, в окне появится окно аутентификации пользователя. Зайдем под пользователем Администратор и увидим рабочий стол администратора:
Описание структуры сервиса
Для правильного функционирования сервиса должна быть описана его структура.
Настройки доступа
На вкладке «Администрирование» открываем «Настройки конфигурации» > «Настройки доступа», пропишем внешний и внутренний адреса менеджера сервиса и пароль для пользователя удаленного доступа RemoteAccess.
В качестве внешнего адреса будет fapache.knopka.int/ext/sm
В качестве внутреннего fapache.knopka.int/int/sm
Для начала этого будет достаточно, к настройкам остальных полей вернемся позже.
Сегменты сервиса
На вкладке «Администрирование» открываем «Сегменты сервиса» и создаем новый сегмент. Назовем его «Локальная сеть».
Регистрация версий платформы 1С: Предприятие
В сервисе допускается использование нескольких кластеров серверов, использующих разные платформы. Каждую версию платформы нужно зарегистрировать в менеджере сервиса.
«Администрирование» > «Версии платформы 1С: Предприятие»
Регистрация серверов администрирования (ras)
«Администрирование» > «Серверы администрирования (ras)». Добавляем все серверы, где поднят ras, например:
Регистрация рабочих серверов
«Администрирование» > «Рабочие серверы». Добавим все наши рабочие серверы и учетную запись администратора рабочего сервера:
Регистрация кластера серверов
«Администрирование > Кластеры». Добавим кластеры и учетную запись администратора кластера:
Регистрация менеджера сервиса
«Администрирование > Конфигурации». Создаем новую конфигурацию, тип конфигурации для менеджера сервиса — «Управляющая». Имя конфигурации должно в точности совпадать с именем конфигурации в Конфигураторе.
В этом же окне в левой части выбираем «Версии конфигурации» и создаем новую запись, выбрав «Ввести информацию о версии вручную». Сейчас файл конфигурации можно не добавлять, это нужно только для обновления конфигурации на эту версию. Остальные поля заполняем так:
Теперь надо зарегистрировать информационную базу менеджера сервиса: «Администрирование > Информационные базы». Заполняем как на скриншоте, не забываем поставить галочку «на поддержке».
Далее заходим в «Администрирование > Менеджеры сервиса» и добавляем запись:
Возвращаемся в «Администрирование» открываем «Настройки конфигурации» > «Настройки доступа» и выберем в поле «Этот менеджер сервиса» наш менеджер сервиса.
На данный момент описание структуры сервиса можно закончить, к дополнительным настройкам веб-серверов и их групп вернемся позже, когда будет функционировать шлюз приложений.
Настройка агента сервиса
Развернем
Процесс создания и добавления агента сервис похож на добавление менеджера сервиса. Подготавливаем на сервере баз данных fresh-db.knopka.int кластер для новой базы с помощью pg_createcluster, заводим пользователя для подключения.
В консоли администрирования серверов 1С добавляем сервер fresh-app-sa.knopka.int, создаем одноименный кластер fresh-app-sa, добавляем администраторов центрального сервера и кластера, создаем базу данных sa с параметрами подключения fresh-db.knopka.int port=5434.
Зайдем в Конфигуратор и загрузим конфигурацию агента сервиса. После загрузки конфигурации выполним интерактивный запуск. Если всё правильно, то увидим вот такое окно:
Переходим в «Настройка и администрирование» > «Запуск конфигуратора» и прописываем путь. Напомним, что current является символьной ссылкой на текущую версию платформы.
Опубликуем
Опубликуем наш агент сервиса на сервере web-публикаций fapache.knopka.int.
В каталог /etc/apache2/sites-available поместим файл sa.conf со следующим содержанием:
# sa внутренняя публикация
Alias /int/sa /var/www/1cfresh/int/sa
<Directory /var/www/1cfresh/int/sa/>
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor /var/www/1cfresh/int/sa/default.vrd
</Directory>
Для агента сервиса нужна только внутренняя публикация. Включим использование этого сайта:
a2ensite sa
Теперь надо создать каталог в который разместим файлы default.vrd.
mkdir -p /var/www/1cfresh/int/sa
default.vrd:
<?xml version="1.0" encoding="UTF-8"?>
<point
xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/int/sa"
ib="Srvr=fresh-app-sa.knopka.int;Ref=sa;"
enableStandardOData="true">
<ws />
</point>
Рестартим apache и проверяем в браузере адрес:
fapache.knopka.int/int/sa/ws/InterfaceVersion?wsdl
Если всё сделали правильно, появится WSDL-описание web-сервиса, предоставляемого базой агента сервиса.
Зарегистрируем
Для начала зарегистрируем конфигурацию и ее версию. В менеджере сервиса открываем «Администрирование» > «Конфигурации» и создаем новую запись. Имя совпадает с именем конфигурации в Конфигураторе, тип — «Сервисная»:
Переходим в «Версии конфигурации», добавляем новую запись вручную.
Регистрируем информационную базу. Открываем «Администрирование» > «Информационные базы» и создаем новую запись с наименованием «Агент сервиса». Сразу же произойдет проверка подключения к базе.
Далее «Администрирование > Агенты сервиса», добавляем запись:
Всё, агент сервиса готов к использованию.
Настройка информационной базы прикладного решения на примере «Бухгалтерия предприятия»
Развернем
И снова знакомый процесс создания базы. Разворачиваем кластер на сервере баз данных. В консоли администрирования подключаем сервер fresh-app-01.knopka.int, создаем базу ea_01 данных на fresh-db.knopka.int port=5435.
Загружаем конфигурацию Бухгалтерия предприятия 3.0.52.42, выполним интерактивный запуск.
Создадим пользователя Администратор, зададим ему пароль, запретим его менять и отображать логин в списке выбора. При сохранении соглашаемся ввести пользователя в группу Администраторы:
Установим константы
В официальной документации установка констант описана только для информационных баз прикладных решений, но их необходимо установить и в менеджере сервиса. Включим опцию «Все функции»:
Главное меню > Сервис > Параметры > Отображать команду «Все функции»
и установим константам следующие значения:
Детализировать обновление ИБ в журнале регистрации Вкл
Использовать автономную работу в модели сервиса Вкл
Использовать синхронизацию данных Вкл
Использовать синхронизацию данных в локальном режиме Выкл
Использовать синхронизацию данных в модели сервиса Вкл
Использовать синхронизацию данных в модели сервиса с локальной программой Выкл
Использовать синхронизацию данных в модели сервиса с приложением в Интернете Вкл
Также нужно создать пользователя RemoteAccess, делаем это в Конфигураторе, предварительно включив в параметрах информационной базы сложность проверки паролей. Задаем пароль, запрещаем его менять, убираем отображение в списке выбора.
Выставим пользователю RemoteAccess следующие роли:
- Выполнение синхронизации данных
- Удаленный доступ (администрирование информационной базы в модели сервиса);
- Удаленный доступ (Базовая функциональность);
- Удаленный доступ (Обмен данными в модели сервиса);
- Удаленный доступ (Обмен сообщениями);
- Удаленный доступ (стандартный интерфейс OData)
На этом раз закончим с Конфигуратором и закроем его.
Опубликуем
Создадим на сервере fapache.knopka.int конфигурационный файл /etc/apache2/sites-available/ea_01.conf:
# ea_01 внешняя публикация
Alias /ext/ea_01 /var/www/1cfresh/ext/ea_01
<Directory /var/www/1cfresh/ext/ea_01/>
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor /var/www/1cfresh/ext/ea_01/default.vrd
</Directory>
# ea_01 внутренняя публикация
Alias /int/ea_01 /var/www/1cfresh/int/ea_01
<Directory /var/www/1cfresh/int/ea_01/>
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor /var/www/1cfresh/int/ea_01/default.vrd
</Directory>
и включим использование этого сайта:
a2ensite ea_01
Теперь надо создать каталоги в которые разместим файлы default.vrd:
mkdir -p /var/www/1cfresh/ext/ea_01 /var/www/1cfresh/int/ea_01
default.vrd для внешней публикации:
<?xml version="1.0" encoding="UTF-8"?>
<point
xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/ext/ea_01"
ib="Srvr=fresh-app-01.knopka.int;Ref=ea_01;"
enableStandardOData="true">
<zones>
<zone specify="false" safe="true"/>
<zone specify="true" safe="true"/>
</zones>
<ws pointEnableCommon="false">
<point name="Exchange" alias="exchange.1cws" enable="true"/>
<point name="Exchange_2_0_1_6" alias="exchange_2_0_1_6.1cws" enable="true"/>
<point name="InterfaceVersion" alias="InterfaceVersion.1cws" enable="true"/>
</ws>
</point>
default.vrd для внутренней публикации:
<?xml version="1.0" encoding="UTF-8"?>
<point
xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/int/ea_01"
ib="Srvr=fresh-app-01.knopka.int;Ref=ea_01;"
enableStandardOData="true">
<ws />
</point>
Перечитываем настройки apache:
systemctl reload apache2
Зарегистрируем
Заходим в менеджер сервиса и регистрируем новую конфигурацию в «Администрирование» > «Конфигурации». На этот раз имя будет «БухгалтерияПредприятия», а тип — «Прикладная».
В разделе «Версии конфигураций» создаем новую запись, в которой указываем текущую версию, тип версии «Релиз» и текущую версию платформы.
Открываем «Администрирование» > «Информационные базы» и регистрируем информационную базу:
Теперь для этой информационной базы нужно прописать учетную запись администрирования. Это необходимо для агента сервиса, чтобы он мог подключиться к базе с правами администратора, обновлять и управлять ею. Делается это здесь же, в окне информационной базы в разделе «Учетные записи администрирования».
В прикладной информационной базе мы будем создавать области данных. Для этого в главном разделе окна информационной базы перейдем на вкладку «Дополнительно», ставим галочку «Добавлять новые области» и снимаем «Заполнять области начальными данными». Начальные данные мы не подготавливали, так что их просто нет.
Для обмена информацией между агентом, менеджером сервиса, а также прикладными информационными базами используются сообщения. Например, можно увидеть список в менеджере сервиса в разделе «Администрирование» > «Обмен сообщениями». Подробно на сообщениях мы останавливаться не будем, информацию по работе с ними можно найти в официальной документации 1C Fresh.
Проконтролировать готовность подготовки областей можно в окне «Рабочий стол» > «Приложения». Снимите галочку «Только используемые» и увидите три области с состоянием «Новое». Как только все операции по подготовке области закончатся, она поменяет состояние на «Готово».
Пользователь сервиса и пользователь абонента
Для того чтобы можно было использовать прикладные приложения в модели сервиса, необходимо зарегистрировать пользователя сервиса, выдать ему права на работу в его области данных. Сама схема отношений сервис-абонент такая: Пользователь регистрируется в сервисе, для него создается абонент, в абонента добавляются пользователи этого абонента, которые также являются пользователями сервиса.
Регистрация пользователя требует настройки учетной записи электронной почты для отправки кода активации. Настроить ее можно в менеджере сервиса в разделе «Администрирование» > «Учетные записи электронной почты». Подробно останавливаться на этом мы не будем, так как у каждого настройки свои и все интуитивно понятно. Можно обойтись и без этого и получить код активации другим способом, о нем расскажем ниже.
Заходим в менеджер сервиса от имени пользователя Аноним без пароля, после успешного входа жмем «Зарегистрироваться» и вводим данные на нового пользователя сервиса. Адрес электронной почты должен быть валидным:
При нажатии кнопки «Зарегистрировать» появляется окно с вопросом о готовности пройти активацию созданного пользователя, на который мы ответим положительно.
Далее нам потребуется ввести код активации, высланный на электронную почту, указанную при регистрации, но возьмем мы его в разделе «Обслуживание» > «Запросы на регистрацию». Откроем запрос и копируем оттуда код запроса вида 0414fb84-cf59-11e7-f094-00155d003608, это и есть нужный нам код активации.
После создания пользователя сервиса менеджер сервиса также автоматически создаст абонента и добавит пользователю права владельца этого абонента. Он может управлять своими приложениями, приглашать новых пользователей для работы совместно с ними в приложениях абонента.
Добавление приложения абоненту
Войдем в менеджер сервиса с использованием логина sharikov.p:
Нажмем кнопку «Добавить» и добавим приложение «Бухгалтерия предприятия». Достаточно выбрать только вид приложения и дождаться когда в колонке «Доступность» будет стоять «Используется».
При нажатии кнопки «Войти в приложение» в браузере откроется адрес fapache.knopka.int/ext/ea_01/1, где последяя единица — это номер области. В другие области пользователь не имеет прав и не может зайти.
С этого момента у нас есть минимальный работающий сервис 1C Fresh. Как видно, развернуть его достаточно просто.
Заключение
Это далеко не весь функционал. Можно настроить планируемые обновления конфигураций, синхронизацию данных в сервисе. Добавление шлюза приложений обеспечивает масштабируемость экземпляра сервиса, добавляя в него новые информационные базы и сохраняя единый внешний адрес для однотипных информационных баз. Сайт и форум сервиса, мониторинг недоступности и прочие можно без проблем ввести в эксплуатацию совместно с сервисом 1C Fresh, что дает гибкость в выборе функционала в зависимости от ваших потребностей.
Комментарии (6)
reallord
29.12.2017 10:04Большое спасибо!
Еще бы где-то почитать как это можно применить в крупных холдингах, а не для аутсорсинга бухучета в сервисных компаниях. Особенно в рамках совершенно нетиповых конфигураций в большом количестве.
И настройка доступа через AD.hamster_kv Автор
30.12.2017 13:20Fresh очень хорошо масштабируется. Однако, проблема нетиповых конфигураций лежит в самих нетиповых конфигурациях. Для поддержки работы в режиме сервиса нужны некоторые доработки, документация к этому есть, но это нужно поддерживать в актуальном виде. Плюс такие конфигурации обычно лицензируются по-своему, кто как может и умеет. Мне кажется, Fresh имеет хорошее будущее, а разработчики таких нетиповых конфигураций начнут включать поддержку работы в таком режиме. К примеру, Первый Бит поддерживает конфигурацию Строительство, весьма полезная штука в рамках облачных решений.
EvilBeaver
29.12.2017 11:01в рамках совершенно нетиповых конфигураций в большом количестве./blockquote>
Боюсь в этом будет главная засада. Без свежих БСП с поддержкой Fresh — это превратится в не стоящую выделки овчинку. Fresh — все-таки больше про multi-tenancy.
Infactum
29.12.2017 21:47У fresh, пожалуй, лучшая документация из продуктов 1С.
В ней и подробнейшее описание есть, и несколько примеров развертывания (в том числе full linux), и образы готовые (последний раз, когда смотрел, был vagrant).
Думаю у вас есть куда больше по настоящему интересного опыта, нежели копипаст из документации.
EvilBeaver
Я джва года ждал эту статью )
Молодец, Кнопка! :)