Какое имя у файла приложения сервера хранилища
Инструкция и скрипт по установке сервера хранилища конфигураций на linux-сервер с системным менеджером systemd
Операционные системы: linux с менеджером systemd (Ubuntu 16+, Debian 8+, CentOS 7+ и т.п.)
Внимание! Скрипт рассчитан на запуск в дистрибутивах, основанных на Debian. Для работы скрипта под RHEL-дистрибутивами потребуется небольшая адаптация скрипта и процедуры ниже.
Пару слов о необходимости
В случае, когда хранилище расположено в локальной сети, необходимо организовывать совместный доступ к общей папке Windows, для чего необходимо содержать целый сервер и обеспечивать его безопасность. Зачастую, такие общие папки располагаются на одном и том же терминальном сервере, где работают все разработчики, либо в общей папке для локальной сети на одном из компьютеров или серверов.
Такая архитектура работы с хранилищем не всегда удобна. Когда разработчиков много, или они находятся в разных отдаленных локациях, у разработчиков уменьшается мобильность и появляется зависимость от наличия и толщины канала связи к терминальному серверу, а так же зависимость от его производительности для целей отладки приложений.
В тех случаях, когда команда должна быть мобильной, распределенной и состоящей преимущественно из удаленно работающих специалистов, или над несколькими проектами работают разные группы разработчиков, на первый план выходит распределенная архитектура организации совместной разработки.
Для реализации такой архитектуры в комплекте поставки платформы 1С:Предприятие предусмотрена установка сервера хранилища конфигураций. Сервер хранилища конфигураций представляет собой сетевую службу (облачный сервис), по умолчанию «слушающую» порт 1542 (или любой другой) и обеспечивающую взаимодействие клиентских приложений (конфигуратора) с базой данных хранилища конфигурации. Одна такая служба может обслуживать множество хранилищ конфигураций. В такой архитектуре доступ к хранилищу будет надежно защищен от посторонних.
Для того, чтобы сократить стоимость владения сервером хранилища конфигураций, или со спокойной совестью опубликовывать его в сеть Интернет, целесообразно устанавливать его на сервера по управлением ОС Linux. Благо, 1с уже давно выпускает версии ПО под эту операционную систему. Однако, установки в виде сервиса (демона), который автоматически бы запускался при старте ОС Linux с помощью менеджера systemd, в комплекте поставки до сих пор не предусмотрено, поэтому на свет и появился данный скрипт установки. P.S. В большинстве публикаций используются старые скрипты для upstart (init.d), и они уже давно устарели.
Далее рассматривается установка сервера хранилища конфигураций с протоколом tcp.
Предварительные настройки
Перед тем, как установить сервер хранилища конфигурации, необходимо провести подготовительные действия (далее показаны действия для Debain-дистрибутивов):
Запуск скрипта установки системного сервиса systemd
Теперь все готово для установки системного демона с помощью скрипта. Сделаем это:
Здесь опционально используются параметры (указаны их значения по умолчанию):
EXEC1CRS = путь к исполняемому файлу сервера хранилища конфигураций crserver
USER1C и GROUP1C = имя пользователя и группы для запуска системного сервиса, они должны существовать к моменту запуска скрипта
PORT1C = порт, на котором будет работать tcp-сервер хранилища конфигурации
REPO1C = путь к каталогу, в котором будут располагаться все используемые хранилища конфигураций
В результате установки получим логи и статус запущенного сервера:
Действия после установки
Путь к хранилищу определяется по шаблону:
После установки достаточно создать нужные папки с хранилищами, внутри папки, которая была указана при установке сервера, и с помощью конфигуратора создать хранилище в этой папке.
В данной статье описывается, как установать службу сервера хранилища конфигураций 1С:Предприятия.
Цитата из RTFM
В целом, если надо просто установить службу и, чтобы всё взяло и начало работать, достаточно просто почитать addoc (см ниже).
Для установки сервиса достаточно запустить crserver.exe с параметром -instsrvc и параметрами же указать, где что лежит и так делее. Все тривиально и в мануале описано достаточно подробно.
Как установить два сервера на одной машине
Заморочки начинаются, когда надо установить больше одной службы сервера хранилища. Например - для разных версий платформы или для организации на одном сервере хранилищ для не связанных команд разработчиков. Возможных причин на самом деле море. Суть заморочек в том, что crserver.exe может установаить одну и только дону службу - у него нет параметра командной строки, влияющего на имя службы.
Для управления службами в Windows, начиная с NT4, существует замечательная консольная утилта SC.EXE. По ссылке можно найти исчерпывающий мануал по командам. Единственное, что стоит к этому мануалу добавить – имя параметра включает символ «=» и между этим символом и значением параметра ОБЯЗАТЕЛЬНО должен быть пробел, иначе sc.exe вместо полезной работы просто покажет кратенький мануал к самому себе. Это отмечено в мануале, но в самом конце, а до конца обычно дочитывают самые стойкие и уже от отчаяния, когда 100500-й раз не получилось то, что в мануале описано буква-в-букву.
Итак, предположим, нам нужно развернуть две службы сервера. Для этого нам нужно определиться со следующими параметрами:
Имена служб - строки, которые отображаются в колонке «Имя» в диспетчере служб. Помимо отображения по имени производятся все манипуляции со службой через sc.exe по этому рекомендуется с имененм не мудрить и придумывать его максимально кратким и емким безо всяких спецсимволов В каких каталогах будут хранить свои данные службы. Теоретически можно каталог не указывать и тогда обе службы будут «раздавать» один и тот же каталог и к каждому хранилищу можно будет обратиться из обеих служб одновременно. На каких портах будут ожидать соединения обе службы. Службе сервера хранилища нужен один основной порт и диапазон из 31-го порта для работы. По умолчанию эти значения равны 1542 и 1560:1591. У разных экземпляров службы эти значения обязательно должны быть разные иначе работать будет только один экзепляр - тот, который успел запуститься раньше и открыть сокет на основаном порту.Для примера предположим, что:
имена наших двух служб - 1ccrrep-release и 1ccrrep-trunk каталоги (соответственно) - C:\1crepository\release и C:\1crepository\trunk и порт+диапазон для каждой службы - 1642+1660:1691 и 1742+1760:1791Командная строка для создания каждой из этих служб будет выглядеть вот так:
cmd.exe, естественно, следует запускать от имени администратора и данные команды предполагают развертывание сервера хранилища 8.2.16.368. Progra
2 - это «Programm files (x86)».
Собственно всё – дальше только нужно зайти в диспетчер служб и запустить созданные службы или использовать дя этого консольную команду net start – не важно.
Также следует отметить, что если используется IIS, то обращение к серверам хранилищ нужно реализовать через отдельные веб-приложения, причем у них должны быть указаны разные пулы приложений (например, DefaulAppPool и DefaulAppPool2). Если этого не сделать, то одновременно будет работать только один сервер хранилищ (к которому было первое обращение), а второй будет выдавать ошибку.
Что дает и чего не дает сервер хранилища 1С
Для того, чтобы внести чуть больше полноты в картину данной статьи, следует перечислить весь страх и ненависть все положительные и отрицательные стороны использования серверного хранилища.
Плюсы серверного хранилища
Порядок следования пунктов соответствует порядку, в котором они пришли в голову автору данной статьи, значимость плюсов каждый читатель определит для себя сам:
Изоляция данных от интерфейса. Разработчики «видят» только службу – ни с файлом хранилища, ни с его каталогом, они не могут сделать ни чего, кроме того, что им положено в соответствии с правами в хранилище. В файловой версии хранилища права на шару одни, а на хранилище другие: например, у пользователя, который просто есть в хранилище, но даже захватить ни чего прав не имеет, все равно должен быть полный доступ в шару, то есть он может и всякого мусора рядом с 1cd навалить, и файл повредить, и скопировать все хранилище куда угодно. Кроме того это упрощает подключение к хранилищу всякого рода удаленных разработчиков – для работы с хранилищем им достаточно открыть несколько tcp портов и можно не пускать их в свою внутреннюю сеть, а служба crserver уже не позволит им в 1cv8ddb.1CD сделать что-либо, кроме того, что можно сделать конфигуратором. Максимум - всяких левых хранлищ могут насоздавать в каталогах рядом, но это горе не большой беды, как говорится. Кроме того служба сервера гарантирует, что к хранилищу невозможно подключиться ни каким релизом платформы, отличным от релиза самой службы сервера. То есть ни кто злонамеренно или от разгильдяйства боевое хранилище случайно не сконвертирует под какой-нибудь тестовый новый релиз 8.3, 8.4 или даже 9.0 - crserver просто не пустит неправославных клиентов. Независимость от фактического места хранения файла 1cv8ddb.1CD - можно перемещать файл и менять внутреннюю структуру каталогов и при этом у пользователей хранилища строка подключения не изменится – знай только меняй параметр -d у службы crserver. В принципе у файлового хранилища то же самое возможно, но в случае, когда хранилищ много от разных ИС, может быть так, что и не всегда получится. Или, если у всех хранилищ изначально один каталог, то разнести по разным без изменения строки подключения в файловом варианте уже не возможно. Использование серверной мощи для операций с хранилищем. Все операции по чтению и записи в 1cv8ddb.1CD производятся службой crserver и процессором той машины, на которой она работает. В файловом варианте все операции делает процессор клиента.Нюанс в 8.2
В 8.2.* crserver является однопроцессорным приложением. Отсюда вытекает ряд неприятных минусов, о которых ниже. В 8.2 минусы серверного хранилища по сравнению с файловым целиком и полностью произрастают из последнего «плюса». Служба crserver сама ни чего полезного не делает – она всего лишь ретранслятор запросов от клиентов. Именно по этому версия crserver должна в точности совпадать с версией клиента. И именно по этому можно расшарить каталог службы и обращаться к хранилищу и как к файловому, и как к серверному. Более того, можно даже развернуть две службы crserver, натравить их на один и тот же каталог и из двух параллельных служб всё – захваты, помещение, чтение и так далее – будет работать так же, как с одной службой или без служб вообще. Итак, вот они, «минусы»:
Немногопользовательскость или «хайлоад? не, не слышал». Не смотря на то, что само по себе хранилище – это средство командной разработки, сервер хранилища не является таким средством. Это не более, чем средство сокрытия физического местарасположения файла 1cv8ddb.1CD от пользователей. Если имеется несколько раных хранилищ и количество разработчиков больше 10, то для нормальной работы на каждое хранилище нужна отдельная своя служба crserver. Потому, что служба ограничивается вычислительными ресурсами одного процессора и еще почему-то, что забито костылями в код этой службы – практический опыт автора статьи перевода некольких хранилищ со 100+ пользователей всего и 30+ параллельных на серверный вариант показал падение производительности на тех хранилищах, которые до этого перевода ни когда не тормозили потому, что маленькие (1cv8ddb.1CD до 500МБ). Потому, что пользователи даже маленьких хранилищ выстраиваются в одну общую очередь к одному процессору в скудном количестве потоков (task manager показывает чудовищное несоответствеи количества живых коннектов к crserver.exe и количества потоков, созданных процессом – на 23 коннекта было создано 7 потоков в ходе наблюдений в боевых условиях, проведенных автором статьи)Выводы
На пратформе 8.2 служба crserver в виду своей однопроцессорности и эдакой «немного поточности» не является средством коллективной разработки. Она является средством предоставления доступа к хранилищу по набору абстрактных tcp-портов, чтобы не давать доступа клиентам ни к ftp, ни к cifs или smb (вот тебе, удаленный Вася, 32 tcp-порта, развлекайся на все деньги). Для больших команд не имеет смысла использовать серверное хранилище ни зачем, кроме как для предоставления ограниченного доступа удаленным разработчикам. Хотя последние разведданные недвусмысленно иллюстрируют, что лучше об этом даже не думать.
0. Оглавление
1. Настройка каталога баз данных хранилища конфигураций
Сервер хранилища конфигураций следует устанавливать на том же компьютере, где будут располагаться файлы баз данных хранилища. Поэтому прежде всего определим центральный каталог сервера, в котором будут храниться файлы всех хранилищ, которых будет обслуживать данный сервер. Пусть в рамках данной статьи это будет каталог C:\1C_BASE\repository\. Также следует определить учетную запись Windows, из под которой будет происходить запуск соответствующей службы. Можно создать нового пользователя, или использовать существующую учетную запись Windows. В данном примере будем использовать локального пользователя USR1CV8 с паролем UsrPass8. Необходимо установить полные права для данного пользователя на центральный каталог сервера хранилища конфигураций.
2. Установка файлов сервера хранилища конфигураций
На момент написания статьи сервер хранилища конфигураций существовал только как 32-разрядное приложение. Поэтому для установки файлов сервера необходим 32-разрядный дистрибутив системы «1С:Предприятия» 8.3 для Windows. Запускаем файл 1CEnterprise 8.msi из дистрибутива поставки 1С. На странице выбора компонент выбираем компоненту «Сервер хранилища конфигураций 1С:Предприятия» (1C:Enterprise configuration repository server), а также запоминаем путь установки компоненты.
Программа установки лишь копирует файлы сервера хранилища конфигураций в указанный каталог. Регистрацию соответствующей службы необходимо произвести вручную выполнив команду вида:
Параметры запуска сервера хранилища конфигураций crserver.exe сходны с параметрами запуска агента сервера «1С:Предприятия»:
Зарегистрируем новый сервис с помощью программы Windows PowerShell, запустить которую можно выполнив команду powershell (для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне «Выполнить» (Run) ввести имя команды в поле «Открыть» (Open) и нажать «ОК») или кликнув по соответствующему ярлыку в панели задач.
В открывшейся консоли Windows PowerShell, для удобства ввода дальнейших команд перейдем в каталог bin каталога с установленными файлами «1С:Предприятия» выполнив команду
Затем, в рамках данного примера, выполним команду
и запустим службу выполнив
4. Добавление правила в брандмауэр Windows
Для того чтобы сервер хранилища конфигураций был доступен другим компьютерам в сети, необходимо добавить используемый сервером порт 1542 в исключения Брандмауэра Windows (Windows Firewall). Подробно об этом читайте в статье «Добавление правила в Брандмауэр Windows Server 2012 R2».
5. Создание нового хранилища конфигурации
Как я уже говорил ранее, один сервер может обслуживать несколько хранилищ конфигурации. Файлы баз данных каждого из хранилищ должны располагаться в отдельном каталоге центрального каталога сервера хранилища конфигураций. Таким образом для создания нового хранилища, создадим в каталоге C:\1C_BASE\repository\ папку Accounting в которой будет располагаться файлы нового хранилища конфигурации.
К созданному таким образом хранилищу также возможно будет подключаться и в обход сервера, например по пути C:\1C_BASE\repository\Accounting на текущем компьютере или по пути \\WIN2012\repository\Accounting если настроить общий доступ к каталогу C:\1C_BASE\repository на данном сервере.
6. Публикация хранилища конфигурации на веб-сервере IIS
Смотрите также:
Раннее я уже писал об установке сервера хранилища конфигураций в системе «1С:Предприятия» 8. В данной статье рассмотрим процесс публикации сервера хранилища конфигураций на веб-сервере IIS для возможности доступа к хранилищам, обслуживаемым…
В данной статье будет рассказано про агент сервера 1С:Предприятие 8.3 (справедливо и для версии 8.2) в случае использования агента в операционных системах семейства Windows. Будут приведены параметры запуска агента, а…
Для групповой разработки конфигурации в системе «1С:Предприятия» 8 используется специальный механизм - хранилище конфигурации. Хранилище конфигурации - это файловая база данных, в которую средствами конфигуратора помещается конфигурация, и которая хранит в себе информацию о…
Файловая база данных, в которой хранится информация обо всех вносимых изменениях в конфигурацию, называется ее хранилищем.
Как работать с хранилищем конфигурации 1С 8.3
Через хранилище может вестись коллективная работа разработчиков с конфигурацией. При этом можно посмотреть, кем и когда были внесены те или иные изменения. При подключении к хранилищу, все метаданные из него загружаются в базу.
Разработчики, создавая собственные объекты метаданных, чтобы не возникло ситуации одновременного изменения объекта в хранилище, могут воспользоваться возможностью его захвата. После окончания работы над объектом, он перемещается обратно в хранилище, и метка захвата снимается. В любой момент можно восстановить предыдущую версию конфигурации из ее хранилища. Благодаря этому осуществляется контроль доступа к объектам конфигурации при ее разработке или модификации, и тем самым обеспечивается синхронная работа разработчиков.
Рассмотрим, как происходит такая работа на примере «1С:Бухгалтерия 8.3».
Установка сервера хранилища конфигурации 1С
Если в хранилище будут работать несколько человек, удобнее располагать удаленное хранилище на сервере с доступом через интернет. При этом следует отследить, чтобы платформа была одинакова на всех компьютерах, с которых будет осуществляться работа. При установке платформы необходимо выбрать установку компоненты – «Сервер хранилища конфигураций 1С:Предприятия».
Если платформа уже была установлена, то добавить компоненту надо в разделе «Программы и компоненты», нажав кнопку «Изменить» и выделив нужную платформу.
Следуя по шагам помощника установки, идем далее.
После окончания установки нам нужно зарегистрировать сервер. Файл службы находится в каталоге «bin» установленной платформы - crserver.exe.
Для регистрации службы воспользуемся командной строкой. Вызываем ее, введя в строке поиска кнопки «cmd».
Для регистрации службы сервера хранилища конфигурации, в командной строке пишем: "C:\Program Files (x86)\1cv8\8.3.13.1513\bin\crserver.exe" -instsrvc -d "C:\1С Хранилище".
- 8.3.13.1213 – каталог с нашей платформой и далее путь к файлу crserver.exe.
- С:\1С Хранилище – это путь к папке, которую мы создали для хранилища конфигурации (для примера).
Если все правильно написано, то в окне «Службы (локальные)» у нас появится наша служба (найти этот раздел можно поиском в Панели управления).
Нажимаем гиперссылку «Запустить службу», чтобы она заработала. Тип запуска – «Установлено автоматически».
Далее мы создадим хранилище.
Создание хранилища конфигурации 1С
Откроем нашу базу в режиме Конфигуратора и в пункте меню Хранилища выберем команду создания.
Указываем путь, где будет располагаться хранилище. Это может быть локальный компьютер, компьютер в сети, сервере или веб-сервере. Пример локального пути – С:\1С Хранилище.
Или можно указать его сетевое имя (при этом не забудьте открыть доступ к папке).
Если хранилище располагается на сервере, путь указывается в формате: tcp://192.168.0.100/Хранилище конфигурации 1.
Где 192.168.0.100 – IP компьютера (в нашем примере).
Далее мы пишем имя каталога нашего хранилища (например, «Хранилище конфигурации 1»). При создании на сервере хранилища база будет находиться: С:\1С Хранилище\Хранилище конфигурации 1.
Выбрав удобный вариант размещения хранилища, нажимаем кнопку «Далее», указываем имя пользователя и устанавливаем пароль.
После нажатия кнопки «Ок» начнется процесс создания хранилища конфигурации.
По окончании процесса, программа предложит подключиться к хранилищу (подтверждаем действие).
Как подключиться к хранилищу конфигурации 1С 8.3
В нашем пункте меню выбираем команду подключения.
При этом текущая конфигурация заменяется конфигурацией из хранилища. На вопрос программы о подключении отвечаем – «Да».
При подключении к хранилищу указываем файловый каталог или адрес удаленного хранилища, вводим данные пользователя.
Отключиться от хранилища можно в том же разделе через команду «Отключиться от хранилища».
Для поднятия хранилища разработки, которое будет доступно через интернет, можно установить службу хранилища 1С.
На шаге выбора компонент необходимо указать, что надо устанавливать сервер хранилища.
После успешной установки необходимо создать службу. Для этого открываем окно командной строки с правами администратора и ввести команду:
Обратите внимания, между binPath= и путем обязательно должен быть пробел!
Создаем новое правило
Указываем, что правило будет действовать для порта
Если необходимо сделать доступ к хранилищу извне, необходимо дополнительно настроить проброс портов на роутере.
Сервер хранилища хранит свои файлы в таком же формате, как если развернуть хранилище в общую папку, таким образом можно локально работать с хранилищем через общую папку, а для внешних пользователей поднять службу хранилища, которая будет ссылаться на ту же папку.
Читайте также: