Как настроить Хранилище конфигурации 1С через веб-сервер Apache и исправить типичные ошибки подключения?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При организации совместной разработки в среде 1С:Предприятие стандартное подключение к хранилищу конфигурации по протоколу TCP часто оказывается неэффективным, особенно при работе распределенной команды через интернет. Высокие требования к стабильности канала связи и задержкам (ping) приводят к частым разрывам сессий и зависаниям Конфигуратора. Решением этой проблемы является публикация хранилища конфигурации на веб-сервере по протоколу HTTP/HTTPS. В качестве веб-сервера чаще всего выбирают надежный и бесплатный Apache.

В этой статье мы подробно, шаг за шагом, разберем процесс публикации хранилища 1С под веб-сервером Apache (как для операционных систем Windows, так и для Linux), проанализируем архитектуру этого решения и научимся исправлять самые распространенные ошибки, такие как HTTP: Not found, HTTP: Forbidden и проблемы с разбором конфигурационных XML-файлов.

Архитектура решения: как работает веб-хранилище 1С

Прежде чем переходить к редактированию конфигурационных файлов, давайте разберем, как устроена схема взаимодействия компонентов. Важно понимать, что веб-сервер Apache не работает с файлами базы данных хранилища напрямую. Он выступает в роли посредника (шлюза), который принимает HTTP-запросы от Конфигуратора 1С и перенаправляет их специализированной службе — серверу хранилища конфигураций 1С (приложению crserver).

Связующим звеном между Apache и службой crserver выступает специальный файл описания с расширением .1ccr (например, repository.1ccr). Именно к этому файлу обращается Конфигуратор, а веб-сервер, используя проприетарный модуль расширения 1С (wsap22.dll, wsap24.dll или их аналоги .so для Linux), обрабатывает этот запрос и транслирует его в TCP-команды для службы crserver.

Таким образом, для успешной работы нам необходимо настроить три независимых компонента:

  1. Запущенную службу сервера хранилища crserver на определенном TCP-порту.
  2. Файл конфигурации repository.1ccr, указывающий на эту службу.
  3. Веб-сервер Apache с подключенным модулем 1С и настроенными правами доступа.

Шаг 1. Настройка и запуск службы сервера хранилища (crserver)

Рассмотрим процесс запуска сервера хранилища. Нам необходимо зарегистрировать crserver как системную службу. По умолчанию сервер работает на порту 1542.

Для операционной системы Windows запустим командную строку от имени администратора и выполним следующую команду:

"C:\Program Files\1cv8\8.3.18.1211\bin\crserver.exe" -instsrvc -d "E:\1CDev"

Здесь параметр -d указывает на корневой каталог, в котором будут физически создаваться и храниться наши базы данных (хранилища конфигурации). После выполнения команды откроем оснастку "Службы" (services.msc) и запустим службу 1C:Enterprise 8 Configuration Repository Server.

Шаг 2. Создание файла конфигурации repository.1ccr

Перейдем в каталог, который мы указали при регистрации службы (в нашем примере это E:\1CDev). В корне этого каталога создадим текстовый файл с именем repository.1ccr.

Откроем этот файл в текстовом редакторе (рекомендуется использовать Notepad++ для контроля кодировки) и внесем в него следующее XML-содержимое:


<?xml version="1.0" encoding="UTF-8"?>
<repositoryRoot xmlns="http://www.1c.ru/RepositoryRoot">
    <repository connectString="tcp://localhost:1542"/>
</repositoryRoot>

Важное предупреждение: Файл должен быть обязательно сохранен в кодировке UTF-8 без BOM (Byte Order Mark). Использование стандартного "Блокнота" Windows может привести к добавлению невидимых спецсимволов BOM в начало файла, из-за чего 1С выдаст ошибку разбора XML. Также убедитесь, что все кавычки в файле являются прямыми машинными кавычками ("), а не типографскими ("умными") кавычками.

Шаг 3. Настройка конфигурационного файла Apache (httpd.conf)

Теперь перейдем к конфигурации веб-сервера Apache. Нам необходимо подключить модуль расширения веб-сервера 1С и зарегистрировать обработчик для файлов .1ccr.

Обратим внимание на критически важный нюанс — соответствие разрядности. Разрядность веб-сервера Apache, установленной платформы 1С и используемой DLL-библиотеки модуля расширения должна строго совпадать. Если вы используете 64-битный Apache, вы обязаны прописывать путь к 64-битной версии библиотеки 1С (из каталога Program Files), иначе Apache не запустится.

Откроем конфигурационный файл Apache (обычно расположен по пути C:\Program Files\Apache24\conf\httpd.conf) и добавим в самый конец следующие строки:

Вариант настройки для Apache 2.4 (современные версии):


# Подключение модуля расширения 1С для Apache 2.4 (64-бит)
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.18.1211/bin/wsap24.dll"

# Регистрация обработчика файлов .1ccr
AddHandler 1cws-process .1ccr

# Настройка виртуального каталога для хранилища
Alias /storage "E:/1CDev/"

<Directory "E:/1CDev/">
    AllowOverride None
    Options None
    DirectorySlash Off
    SetHandler 1cws-process
    Require all granted
</Directory>

Вариант настройки для старых версий Apache 2.2:


# Подключение модуля расширения 1С для Apache 2.2
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.18.1211/bin/wsap22.dll"

AddHandler 1cws-process .1ccr

Alias /storage "E:/1CDev/"

<Directory "E:/1CDev/">
    AllowOverride All
    DirectorySlash Off
    Options None
    SetHandler 1cws-process
    Order allow,deny
    Allow from all
</Directory>

Проанализируем ключевые параметры в этих директивах:

Шаг 4. Настройка прав доступа на уровне операционной системы

Выясним причину частой ошибки HTTP: Forbidden (403). Она возникает, когда процесс веб-сервера Apache не имеет прав на чтение и изменение файлов в каталоге хранилища.

По умолчанию служба Apache в Windows работает под учетной записью SYSTEM или Network Service (в Linux — под пользователем www-data или apache). Нам необходимо предоставить этой учетной записи полные права на папку с хранилищем (в нашем примере E:\1CDev) и на сам файл repository.1ccr. Права должны включать чтение, запись и изменение содержимого папки.

Шаг 5. Подключение из Конфигуратора 1С

После настройки всех конфигурационных файлов перезапустим службу веб-сервера Apache. Теперь мы готовы выполнить подключение из Конфигуратора.

Путь к хранилищу при использовании HTTP-протокола должен указываться строго по следующему шаблону:

http://[Имя_или_IP_сервера]/[Имя_виртуального_каталога]/[Имя_файла_описания].1ccr/[Имя_конкретного_хранилища]

Рассмотрим конкретный пример. Если на сервере с IP-адресом 192.168.0.31 мы создали хранилище в подпапке E:\1CDev\hranORIGINAL, то строка подключения в Конфигураторе будет выглядеть так:

http://192.168.0.31/storage/repository.1ccr/hranORIGINAL

Если мы настроили SSL-шифрование на веб-сервере, то протокол в начале строки изменится на безопасный:

https://192.168.0.31/storage/repository.1ccr/hranORIGINAL

Разбор типичных ошибок и способов их решения

Ошибка 1. "HTTP: Not found" или ошибка 404

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

  1. Неверная строка подключения в 1С: Убедитесь, что вы указали имя файла описания (repository.1ccr) в пути подключения. Типичная ошибка — указывать путь просто как http://server/storage/hranORIGINAL.
  2. Проблема с разрядностью Apache и DLL 1С: Если 64-битный Apache пытается загрузить 32-битный модуль (или наоборот), обработчик 1cws-process не инициализируется, и веб-сервер выдает 404 ошибку на файл .1ccr. Убедитесь в логах Apache (error.log), что модуль 1С успешно загружен при старте сервера.
  3. Отсутствие директивы DirectorySlash Off: Если эта директива не прописана или прописана неверно, Apache искажает запросы Конфигуратора, выполняя внутренний редирект, что приводит к ошибке 404 или 406.

Ошибка 2. "HTTP: Forbidden" или ошибка 403

Если вы столкнулись с ошибкой ограничения доступа, выполним следующие проверки:

  1. Проверим наличие строки Require all granted внутри секции <Directory> в конфигурационном файле Apache 2.4. Старый синтаксис Allow from all в версии 2.4 не работает и вызывает ошибку 403.
  2. Проверим права доступа файловой системы операционной системы для пользователя, под которым запускается служба Apache, к каталогу E:\1CDev.

Ошибка 3. "Ошибка разбора XML: Фатальная ошибка"

Эта проблема подробно обсуждалась разработчиками на форуме. Если при обращении к хранилищу вы видите ошибку разбора XML-структуры файла repository.1ccr, это свидетельствует о некорректном формате самого конфигурационного файла:

Ошибка 4. "HTTP: Not acceptable" или ошибка 406

Выясним причину этой ошибки. Она возникает в том случае, если в файле конфигурации Apache для каталога хранилища по ошибке зарегистрирован стандартный обработчик публикации баз данных 1c-application (SetHandler 1c-application).

Для публикации хранилища должен использоваться строго специализированный обработчик веб-сервисов 1cws-process. Убедитесь, что в файле httpd.conf прописана строка SetHandler 1cws-process.

Мы подробно разобрали все этапы развертывания хранилища 1С на веб-сервере Apache. Соблюдение этих простых инструкций и понимание архитектуры взаимодействия компонентов позволят вам быстро настроить стабильную среду для совместной работы разработчиков.

← На главную