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

Устанавливаем сервер хранилища конфигураций ‘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://<имя или адрес сервера хранилища>/<относительный путь к хранилищу>

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

11 Comments

  1. Infactum

    Кота в мешке качать предлагаете? Выложили бы на gist просто.

    Reply
  2. pfihr

    (1) Результаты работы на скриншоте, и это не кот в мешке.

    Можете и сами такой скрипт написать, если опыта хватает и скачивать не хотите.

    Reply
  3. Infactum

    (2) Вопрос был больше для понимания ваших целей: SM срубить или действительно с сообществом поделиться.

    Допустим я захочу баг в вашем скрипте поправить, или для rpm-based дистрибутивов адаптировать, мне тоже потом тему создавать? Или вам слать, чтобы вы его переопубликовали? Вот потому и нужен gist или аналог.

    Reply
  4. ser6702

    (3)+

    Reply
  5. papche

    (3) gist — не, не слышал. И нас таких темных — море. А еще темнее — вообще тьма. Так что, спасибо автору за просвящение

    Reply
  6. imiron

    Запустил скрипт, а сервис репозитория так и не стартует.

    Во время выполнения скрипта он показывает что запущен, а потом сразу падает.

    ubuntu 18

    Reply
  7. SergeyLunev

    (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

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

    Reply
  8. Bukaska

    (7)Прикрепите картинку на этом форуме к сообщению, а не на сторонний хостинг. Картинка не показывается

    Reply
  9. SergeyLunev

    Картинку предлагает в виде ссылки.

    Прикрепил к данному сообщению вложением.

    Reply
  10. real_MaxA

    (7) Работает, но от имени пользователя root.

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

    User=usr1cv8
    Group=grp1cv8

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

    Опции

    1. Оставить запуск от root и не париться

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

    я оставляю как резервные. Считаю это применением «грубой силы» («забить шуруп молотком»).

    Reply
  11. real_MaxA

    (7) К слову, исходному скрипту всего-то не хватало настройки

    RemainAfterExit=yes

    Ну и указание пользователя/группы работает некорректно (см. (10))

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *