Инструкция и скрипт по установке сервера хранилища конфигураций на 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С. А именно, 32-битные архивы deb_8_3_xx_xxxx.tar.gz, поскольку поддержка сервера хранилища все еще распространяется 1с только под 32-битные платформы.
tar -xvzf deb_8_3_xx_xxxx.tar.gz
- Установить поддержку пакетов 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://<имя или адрес сервера хранилища>/<относительный путь к хранилищу>
После установки достаточно создать нужные папки с хранилищами, внутри папки, которая была указана при установке сервера, и с помощью конфигуратора создать хранилище в этой папке.
Кота в мешке качать предлагаете? Выложили бы на gist просто.
(1) Результаты работы на скриншоте, и это не кот в мешке.
Можете и сами такой скрипт написать, если опыта хватает и скачивать не хотите.
(2) Вопрос был больше для понимания ваших целей: SM срубить или действительно с сообществом поделиться.
Допустим я захочу баг в вашем скрипте поправить, или для rpm-based дистрибутивов адаптировать, мне тоже потом тему создавать? Или вам слать, чтобы вы его переопубликовали? Вот потому и нужен gist или аналог.
(3)+
(3) gist — не, не слышал. И нас таких темных — море. А еще темнее — вообще тьма. Так что, спасибо автору за просвящение
Запустил скрипт, а сервис репозитория так и не стартует.
Во время выполнения скрипта он показывает что запущен, а потом сразу падает.
ubuntu 18
(6) Получившийся после выполнения скрипта юнит systemd расположенный по адресу:
Нужно заменить таким содержимым.
Показать
После этого:
$ sudo systemctl daemon-reload
$ sudo systemctl enable crserver1.service
$ sudo systemctl start crserver1.service
$ sudo systemctl status crserver1.service
Будет работать:
(7)Прикрепите картинку на этом форуме к сообщению, а не на сторонний хостинг. Картинка не показывается
Картинку предлагает в виде ссылки.
Прикрепил к данному сообщению вложением.
(7) Работает, но от имени пользователя root.
Есть ли легитимный способ запустить эту службу от имени
Не работает по причине отсутствия прав на запуск исполняемых файлов для пользователя/группы usr1cv8/grp1cv8.
Опции
1. Оставить запуск от root и не париться
2. Изменить владельца каталога /opt/1C/v8.3/x86_64/ целиком на пользователя usr1cv8
я оставляю как резервные. Считаю это применением «грубой силы» («забить шуруп молотком»).
(7) К слову, исходному скрипту всего-то не хватало настройки
Ну и указание пользователя/группы работает некорректно (см. (10))