Хранилище конфигурации 1С через HTTP работает так: на сервере запускается служба сервера хранилища (crserver), к ней по tcp обращается веб-сервер с модулем расширения 1С, а разработчики подключаются уже к веб-серверу по адресу вида http://сервер/repo/repo.1ccr/ИмяХранилища. Связующее звено — небольшой XML-файл с расширением .1ccr, в котором записана строка подключения к серверу хранилища.

Такую схему я использую, когда команда разработки распределённая и пробрасывать порт сервера хранилища наружу не хочется. Ниже — сборка на Windows с Apache 2.4: что установить, какие файлы поправить и где обычно ломается.

Когда нужен доступ к хранилищу через веб-сервер

Хранилище можно открыть тремя способами:

СпособАдресКогда подходит
Файловый\\server\repo\erpОдин-два разработчика в одной сети
Сервер хранилища (tcp)tcp://server:1542/erpКоманда в локальной сети или VPN
Через веб-сервер (http/https)http://server/repo/repo.1ccr/erpУдалённые разработчики, доступ из интернета, прокси с журналом

Файловый вариант самый медленный и чувствителен к обрывам сети. Сервер хранилища быстрее и надёжнее. Веб-публикация добавляет поверх него ещё один слой: снаружи виден только веб-сервер, на нём легко включить HTTPS, ограничить доступ по IP, вести журнал запросов. Для распределённой команды это обычно лучший вариант.

Хранилище конфигурации 1С через HTTP: веб-сервер как шлюз между разработчиками и сервером хранилища
Хранилище конфигурации 1С через HTTP: веб-сервер как шлюз между разработчиками и сервером хранилища

Что понадобится

  • Платформа 1С:Предприятие той же версии, на которой работают разработчики, с компонентами «Сервер хранилища конфигураций» и «Модули расширения веб-сервера».
  • Apache 2.4 для Windows. Его разрядность должна совпадать с разрядностью установленной платформы: модуль wsap24.dll из 32-битной платформы не загрузится в 64-битный Apache и наоборот. Это самая частая ошибка при первой установке.
  • Каталог для хранилищ на быстром диске с регулярным резервным копированием.
  • Отдельная учётная запись Windows для службы сервера хранилища с правами на этот каталог.

Все компоненты я раскладываю в один корневой каталог, например D:\devops: D:\devops\Apache24, D:\devops\repo-data, D:\devops\repo-web. Так проще переносить стенд и писать инструкции для коллег.

Шаг 1. Сервер хранилища конфигурации

Служба сервера хранилища ставится утилитой crserver.exe из каталога bin установленной платформы. Запускаем командную строку от имени администратора:

bash
cd "C:\Program Files\1cv8\8.3.24.1342\bin"
crserver.exe -instsrvc -usr .\repo_svc -pwd "ПарольСлужбы" -port 1542 -d "D:\devops\repo-data"

Здесь -d — каталог данных сервера хранилища, -port — порт, -usr и -pwd — учётная запись службы. После установки служба запускается из оснастки «Службы». Номер версии в пути — пример, подставьте свою.

Если нужно держать хранилища разных версий платформы, ставится по службе на каждую версию на разных портах: 1542, 1642 и так далее.

Проверка: в конфигураторе выберите «Конфигурация → Хранилище конфигурации → Создать хранилище», укажите tcp://localhost:1542/test и создайте пустое тестовое хранилище. Если не получается — дальше идти нет смысла, сначала разберитесь со службой и брандмауэром.

Шаг 2. Файл .1ccr

Веб-сервер не хранит конфигурацию, он лишь передаёт запросы серверу хранилища. Куда передавать, описывает файл с расширением .1ccr. Создайте каталог D:\devops\repo-web и в нём файл repo.1ccr:

xml
<?xml version="1.0" encoding="UTF-8"?>
<repository connectString="tcp://localhost:1542"/>

Имя файла может быть любым, расширение — обязательно .1ccr. Если сервер хранилища стоит на другой машине, в connectString пишется её имя или адрес. Для второй версии платформы рядом кладётся второй файл, например repo-24.1ccr с другим портом.

Шаг 3. Apache 2.4 и модуль 1С

Распакуйте Apache в D:\devops\Apache24. В файле conf\httpd.conf поправьте Define SRVROOT на фактический путь и, при необходимости, порт в Listen.

Затем в конец httpd.conf добавьте подключение модуля расширения 1С и описание каталога с файлом .1ccr:

apache
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1342/bin/wsap24.dll"

Alias "/repo" "D:/devops/repo-web/"
<Directory "D:/devops/repo-web/">
    AllowOverride None
    Options None
    Require all granted
    SetHandler 1c-application
</Directory>

Обратите внимание на слеши: в конфигурации Apache пути пишутся через прямой слеш /, даже на Windows. Путь с обратными слешами — вторая по частоте причина, почему модуль «не находится».

Проверяем синтаксис и регистрируем Apache как службу:

bash
cd D:\devops\Apache24\bin
httpd -t
httpd -k install
httpd -k start

Команда httpd -t должна вывести Syntax OK. Если она ругается на LoadModule, проверьте путь и разрядность.

Шаг 4. Подключение из конфигуратора

У разработчика: «Конфигурация → Хранилище конфигурации → Подключиться к хранилищу». В поле адреса:

text
http://repo.local/repo/repo.1ccr/erp

Где repo.local — имя веб-сервера, /repo — псевдоним из Alias, repo.1ccr — файл подключения, erp — имя хранилища на сервере хранилища. Учётная запись и пароль — пользователя хранилища, а не Windows.

Для работы через интернет обязательно включайте HTTPS: в хранилище уходят исходные тексты всей конфигурации. Сертификат можно повесить на сам Apache или на обратный прокси перед ним (nginx и аналоги). Через прокси же удобно ограничить размер тела запроса: помещение в хранилище большой конфигурации — это крупные запросы, и слишком маленький лимит прокси обрывает операцию.

Типичные ошибки

СимптомПричинаЧто сделать
httpd -t ругается на LoadModuleРазрядность Apache и платформы разная или неверный путьПоставить Apache нужной разрядности, проверить путь и прямые слеши
404 при подключенииНеверный Alias или имя файла .1ccr в адресеСверить адрес с конфигурацией Apache
Ошибка соединения с сервером хранилищаСлужба crserver не запущена или закрыт портПроверить службу и подключение по tcp:// напрямую
Несовпадение версийВерсия платформы у разработчика отличается от версии сервера хранилищаОбновить клиента или поднять службу нужной версии
Обрыв при помещении больших объектовЛимиты тела запроса или таймауты на проксиУвеличить лимиты на прокси и веб-сервере
После обновления платформы всё перестало работатьВ LoadModule остался путь к старой версииОбновить путь к wsap24.dll и перезапустить Apache

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

Обслуживание и резервное копирование

Хранилище — это вся история разработки, и потерять его больнее, чем рабочую базу. Минимальный набор:

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

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

Веб-сервер в этой схеме ничего не хранит: он только пробрасывает запросы к серверу хранилища. Поэтому надёжность определяется службой crserver и её резервными копиями, а Apache достаточно правильно настроить один раз.

Итог

  • Хранилище конфигурации 1С через HTTP — это цепочка «конфигуратор → Apache с модулем 1С → файл .1ccr → сервер хранилища».
  • Разрядность Apache и платформы должна совпадать, пути в httpd.conf пишутся через прямой слеш.
  • Сначала проверьте подключение по tcp://, потом настраивайте веб-сервер — так проще искать ошибки.
  • Для доступа из интернета нужен HTTPS и достаточные лимиты на размер запросов.
  • После обновления платформы не забывайте менять путь к модулю веб-сервера.