Скрипт установки сервера хранилища конфигураций на современные версии linux с systemd

Публикация № 886182

Разработка - Инструментарий разработчика

crserver linux сервер хранилища

Устанавливаем сервер хранилища конфигураций 'crserver' на современные версии linux серверов, в которых используется systemd: Ubuntu 16+, Debian 8+, CentOS 7+ и т.п.

Инструкция и скрипт по установке сервера хранилища конфигураций на linux-сервер с системным менеджером systemd

Операционные системы: linux с менеджером systemd (Ubuntu 16+, Debian 8+, CentOS 7+ и т.п.)

Внимание! Скрипт рассчитан на запуск в дистрибутивах, основанных на Debian. Для работы скрипта под RHEL-дистрибутивами потребуется небольшая адаптация скрипта и процедуры ниже.

Пару слов о необходимости

Не секрет, что групповая разработка конфигурации в системе «1С:Предприятия» 8.3 производится с использованием хранилища конфигурации. Доступ разработчиков к хранилищу конфигурации может осуществляться как по локальной сети, когда файлы базы данных располагаются на общем сетевом ресурсе, так и по протоколу tcp или http, когда хранилище конфигурации представляет собой по сути облачный сервис.

В случае, когда хранилище расположено в локальной сети, необходимо организовывать совместный доступ к общей папке Windows, для чего необходимо содержать целый сервер и обеспечивать его безопасность. Зачастую, такие общие папки располагаются на одном и том же терминальном сервере, где работают все разработчики, либо в общей папке для локальной сети на одном из компьютеров или серверов.

Такая архитектура работы с хранилищем не всегда удобна. Когда разработчиков много, или они находятся в разных отдаленных локациях, у разработчиков уменьшается мобильность и появляется зависимость от наличия и толщины канала связи к терминальному серверу, а так же зависимость от его производительности для целей отладки приложений.

В тех случаях, когда команда должна быть мобильной, распределенной и состоящей преимущественно из удаленно работающих специалистов, или над несколькими проектами работают разные группы разработчиков, на первый план выходит распределенная архитектура организации совместной разработки.

Для реализации такой архитектуры в комплекте поставки платформы 1С:Предприятие предусмотрена установка сервера хранилища конфигураций. Сервер хранилища конфигураций представляет собой сетевую службу (облачный сервис), по умолчанию «слушающую» порт 1542 (или любой другой) и обеспечивающую взаимодействие клиентских приложений (конфигуратора) с базой данных хранилища конфигурации. Одна такая служба может обслуживать множество хранилищ конфигураций. В такой архитектуре доступ к хранилищу будет надежно защищен от посторонних.

Для того, чтобы сократить стоимость владения сервером хранилища конфигураций, или со спокойной совестью опубликовывать его в сеть Интернет, целесообразно устанавливать его на сервера по управлением ОС Linux. Благо, 1с уже давно выпускает версии ПО под эту операционную систему. Однако, установки в виде сервиса (демона), который автоматически бы запускался при старте ОС Linux с помощью менеджера systemd, в комплекте поставки до сих пор не предусмотрено, поэтому на свет и появился данный скрипт установки. P.S. В большинстве публикаций используются старые скрипты для upstart (init.d), и они уже давно устарели.

Далее рассматривается установка сервера хранилища конфигураций с протоколом tcp.

Предварительные настройки

Перед тем, как установить сервер хранилища конфигурации, необходимо провести подготовительные действия (далее показаны действия для Debain-дистрибутивов):

  1. Скачать и распаковать в папку со скриптом нужные версии сервера 1С. А именно, 32-битные архивы deb_8_3_xx_xxxx.tar.gz, поскольку поддержка сервера хранилища все еще распространяется 1с только под 32-битные платформы.
    tar -xvzf deb_8_3_xx_xxxx.tar.gz

     

  2. Установить поддержку пакетов i386, а затем пакеты 1c-enterprise-common, server, ws и crs:
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6-i386 libc6:i386
    sudo dpkg -i 1c-enterprise83-*
    sudo apt-get -f install

     

Запуск скрипта установки системного сервиса systemd

Теперь все готово для установки системного демона с помощью скрипта. Сделаем это:

sudo EXEC1CRS=/opt/1C/v8.3/i386/crserver USER1C=usr1cv8 GROUP1C=grp1cv8 PORT1C=1542 REPO1C=/home/usr1cv8/.1cv8 install_crserver.sh

Здесь опционально используются параметры (указаны их значения по умолчанию):

EXEC1CRS = путь к исполняемому файлу сервера хранилища конфигураций crserver

USER1C и GROUP1C = имя пользователя и группы для запуска системного сервиса, они должны существовать к моменту запуска скрипта

PORT1C = порт, на котором будет работать tcp-сервер хранилища конфигурации

REPO1C = путь к каталогу, в котором будут располагаться все используемые хранилища конфигураций

В результате установки получим логи и статус запущенного сервера:

Действия после установки

Путь к хранилищу определяется по шаблону: 

tcp://<имя или адрес сервера хранилища>/<относительный путь к хранилищу>

После установки достаточно создать нужные папки с хранилищами, внутри папки, которая была указана при установке сервера, и с помощью конфигуратора создать хранилище в этой папке.

Скачать файлы

Наименование Файл Версия Размер
Скрипт установки сервера хранилища на современные версии linux с systemd:

.sh 2,75Kb
24
.sh 1.0 2,75Kb 24 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Infactum 293 14.08.18 10:31 Сейчас в теме
Кота в мешке качать предлагаете? Выложили бы на gist просто.
2. pfihr 343 16.08.18 11:42 Сейчас в теме
(1) Результаты работы на скриншоте, и это не кот в мешке.
Можете и сами такой скрипт написать, если опыта хватает и скачивать не хотите.
3. Infactum 293 16.08.18 12:16 Сейчас в теме
(2) Вопрос был больше для понимания ваших целей: SM срубить или действительно с сообществом поделиться.

Допустим я захочу баг в вашем скрипте поправить, или для rpm-based дистрибутивов адаптировать, мне тоже потом тему создавать? Или вам слать, чтобы вы его переопубликовали? Вот потому и нужен gist или аналог.
headMade; +1 Ответить
4. ser6702 76 17.08.18 16:38 Сейчас в теме
5. papche 418 07.09.18 11:44 Сейчас в теме
(3) gist - не, не слышал. И нас таких темных - море. А еще темнее - вообще тьма. Так что, спасибо автору за просвящение
6. imiron 4 28.09.18 14:09 Сейчас в теме
Запустил скрипт, а сервис репозитория так и не стартует.
Во время выполнения скрипта он показывает что запущен, а потом сразу падает.
ubuntu 18
7. SergeyLunev 16.09.19 14:54 Сейчас в теме
(6) Получившийся после выполнения скрипта юнит systemd расположенный по адресу:
/etc/systemd/system/crserver1.service


Нужно заменить таким содержимым.


[Unit]
Description=crserver

[Service]
Type=oneshot
ExecStart=/opt/1C/v8.3/i386/crserver -daemon -port 1542 -d /mnt/storage
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Показать


После этого:

$ sudo systemctl daemon-reload
$ sudo systemctl enable crserver1.service
$ sudo systemctl start crserver1.service
$ sudo systemctl status crserver1.service

Будет работать:

8. Bukaska 134 16.09.19 15:41 Сейчас в теме
(7)Прикрепите картинку на этом форуме к сообщению, а не на сторонний хостинг. Картинка не показывается
10. real_MaxA 225 10.10.19 17:55 Сейчас в теме
(7) Работает, но от имени пользователя root.

Есть ли легитимный способ запустить эту службу от имени
User=usr1cv8
Group=grp1cv8

Не работает по причине отсутствия прав на запуск исполняемых файлов для пользователя/группы usr1cv8/grp1cv8.

Опции
1. Оставить запуск от root и не париться
2. Изменить владельца каталога /opt/1C/v8.3/x86_64/ целиком на пользователя usr1cv8

я оставляю как резервные. Считаю это применением "грубой силы" ("забить шуруп молотком").
11. real_MaxA 225 10.10.19 18:01 Сейчас в теме
(7) К слову, исходному скрипту всего-то не хватало настройки

RemainAfterExit=yes

Ну и указание пользователя/группы работает некорректно (см. (10))
12. a.x 21.01.20 06:00 Сейчас в теме
(7) После нескольких экспериментов пришел с следующему решению

[Unit]
Description=1C 8.3 Confiration Storage Server
After=network.target

[Service]
Type=simple
ExecStart=/opt/1C/v8.3/i386/crserver -port 1542 -d /path/to/storage

[Install]
WantedBy=multi-user.target
Показать

Основное отличие в том, чтобы запускать сервер хранилища не в качестве демона, иначе не совсем понятно, как systemd будет завершать сервис.

RemainAfterExit=yes не нужен, если Type=simple

Если возникает ошибка "Too many open files", заменяем ExecStart на следующее.

ExecStart=/bin/bash -c "ulimit -n 500000 && /opt/1C/v8.3/i386/crserver -port 1542 -d /path/to/storage"

К слову, скачивать скрипт не потребовалось. Одного этого файла оказалось достаточно.
kirillkr; +1 Ответить
9. SergeyLunev 16.09.19 15:49 Сейчас в теме
Картинку предлагает в виде ссылки.
Прикрепил к данному сообщению вложением.
Прикрепленные файлы:
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    2803    14    huxuxuya    11