Публикация информационной базы 1С:Предприятие на веб-сервере Apache — это популярное и эффективное решение для организации удаленной работы пользователей. Однако при необходимости внести изменения в конфигурацию (например, исправить ошибки в отчетах, добавить новые объекты или обновить конфигурацию до актуального релиза) администраторы и разработчики часто сталкиваются с трудностями. Главная из них — невозможность монопольного входа в Конфигуратор файловой базы данных.
В этой статье мы подробно разберем, почему веб-сервер блокирует базу данных, как правильно и безопасно провести процедуру обновления без риска повреждения файлов, а также рассмотрим важные нюансы администрирования веб-сервера Apache 2.4 при работе с платформой 1С.
Рассмотрим ситуацию: все пользователи закрыли свои сеансы (браузеры или тонкие клиенты), но при попытке войти в программу через Конфигуратор система выдает ошибку монопольного доступа или бесконечно ожидает освобождения базы. Выясним причину этого поведения.
Веб-сервер Apache удерживает активное соединение с файлом базы данных 1Cv8.1CD через загруженные библиотеки расширения 1С (такие как wsap22.dll или wsap24.dll). Это реализовано разработчиками платформы намеренно: кэширование соединений позволяет существенно ускорить обработку последующих HTTP/HTTPS-запросов от веб-клиентов. Даже если в текущий момент ни один пользователь не авторизован в системе, процессы веб-сервера продолжают держать файлы базы данных открытыми. Именно поэтому запущенная служба Apache не позволяет получить монопольный доступ, необходимый для обновления конфигурации базы данных.
Проанализируем правильную и безопасную последовательность действий для внесения изменений в опубликованную файловую базу данных:
1Cv8.1CD, необходимо остановить службу веб-сервера. В операционной системе Windows это можно сделать через оснастку "Службы" (название службы обычно Apache2.4) или с помощью командной строки, запущенной от имени администратора, выполнив команду:
net stop Apache2.4
1Cv8.1CL или 1Cv8.cdn). Их отсутствие подтверждает, что база данных полностью освобождена.Администрирование — Выгрузить информационную базу. Использование технологий теневого копирования (VSS) на «горячей» базе без остановки веб-сервера крайне нежелательно, так как это может привести к получению битого или рассогласованного архива.Конфигуратор. Выполним необходимые действия: сравнение и объединение конфигураций, редактирование кода или загрузку новой конфигурации из файла. После этого обязательно выполним обновление конфигурации базы данных, нажав клавишу F7 (или выбрав пункт меню Конфигурация — Обновить конфигурацию базы данных).Конфигуратор и запустим службу Apache обратно. В командной строке для этого используется команда:
net start Apache2.4
После выполнения этих шагов пользователи смогут продолжить работу в обновленной системе.
Разберем по шагам, в каких ситуациях требуется повторная публикация базы через меню Администрирование — Публикация на веб-сервере, а в каких достаточно стандартного перезапуска службы.
Сценарий 1: Изменился только прикладной код или метаданные. Если вы исправили ошибку в отчете, добавили новый документ или обновили релиз конфигурации без изменения версии самой платформы 1С:Предприятие, переопубликовывать базу не требуется. Файл публикации default.vrd, который лежит в каталоге публикации, хранит лишь метаданные подключения (путь к базе, настройки веб-сервисов). Эти настройки не меняются при изменении конфигурации 1С. Достаточно просто перезапустить Apache.
Сценарий 2: Обновилась версия платформы 1С:Предприятие на сервере. В этом случае переопубликация строго обязательна. При обновлении релиза платформы (например, переходе с версии 8.3.22 на 8.3.24) меняется физический путь к библиотеке подключения веб-сервера. Если не выполнить повторную публикацию, в конфигурационном файле Apache (httpd.conf) останется путь к старой библиотеке wsap24.dll. Это приведет к тому, что веб-сервер либо откажется запускаться, либо база продолжит функционировать на старом релизе платформы, что вызовет конфликты при подключении пользователей.
При администрировании веб-публикаций полезно знать о некоторых технических нюансах, которые могут нарушить работу системы после переопубликации:
Во-первых, обратите внимание на синтаксис конфигурационного файла Apache при работе с версией 2.4. В старых версиях (2.2) для ограничения доступа использовались директивы:
Order allow,deny
Allow from All
В Apache 2.4 применяется современный синтаксис безопасности:
Require all granted
Иногда при автоматической публикации из Конфигуратора система может некорректно прописать устаревшие директивы в конфигурационные файлы, из-за чего служба Apache откажется запускаться после обновления. В таком случае необходимо вручную отредактировать файл httpd.conf, приведя директивы к стандарту версии 2.4.
Во-вторых, рассмотрим механизм автоматического обновления тонкого клиента. Если ваши пользователи работают с базой через тонкий клиент, подключенный по HTTP, то при обновлении платформы на сервере им потребуется обновить программу и у себя на компьютерах. Чтобы автоматизировать этот процесс, выполним следующие настройки:
.zip, содержащий дистрибутив тонкого клиента нужной версии.Конфигураторе на вкладке "Дополнительные" установим флаг "Публиковать дистрибутив тонкого клиента" и пропишем путь к созданному архиву.После этого при несовпадении версий у пользователя тонкий клиент автоматически скачает обновление с веб-сервера Apache и установит его без участия системного администратора.
Для минимизации ручного труда и исключения человеческого фактора при обслуживании файловых баз рекомендуется использовать специализированные утилиты автоматизации (например, «Обновлятор-1С»). Подобный софт способен самостоятельно по заданному расписанию:
Использование автоматизации гарантирует, что все регламентные операции будут выполнены корректно, а база данных всегда будет находиться в актуальном и работоспособном состоянии.