# Веб-публикация 1С — техническая спецификация Описание артефактов, необходимых для публикации информационной базы 1С через Apache HTTP Server. ## default.vrd Дескриптор виртуального ресурса. XML-файл, описывающий подключение к информационной базе. ### Формат ```xml ``` ### Атрибут `base` URL-путь публикации. Должен начинаться с `/`, совпадает с `Alias` в httpd.conf. ### Атрибут `ib` Строка подключения к информационной базе. **Файловая база:** ``` File="C:\Bases\MyDB"; ``` **Серверная база:** ``` Srvr="server01";Ref="MyDB"; ``` **С авторизацией:** ``` File="C:\Bases\MyDB";Usr="Admin";Pwd="123"; ``` > Кавычки внутри значения `ib` экранируются как `"` (XML-сущность). ### Расположение `{ApachePath}/publish/{AppName}/default.vrd` ## httpd.conf для 1С ### LoadModule Apache загружает модуль расширения 1С: ```apache LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll" ``` - Модуль `wsap24.dll` — 64-разрядный, требует x64-версию Apache - Путь использует forward slashes ### Listen ```apache Listen 8081 ``` Порт для веб-клиента. По умолчанию `8081` (стандартный `80` может быть занят). ### Alias + Directory Для каждой публикации добавляется блок: ```apache Alias "/appname" "C:/path/to/apache/publish/appname" AllowOverride All Require all granted SetHandler 1c-application ManagedApplicationDescriptor "C:/path/to/apache/publish/appname/default.vrd" ``` - `Alias` — URL-путь → физический каталог - `SetHandler 1c-application` — делегирование обработки запросов модулю wsap24 - `ManagedApplicationDescriptor` — путь к default.vrd ### Маркерный подход Скрипты используют маркерные комментарии для идемпотентного управления блоками: ```apache # --- 1C: global --- Listen 8081 LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll" # --- End: global --- # --- 1C Publication: mydb --- Alias "/mydb" "C:/tools/apache24/publish/mydb" AllowOverride All Require all granted SetHandler 1c-application ManagedApplicationDescriptor "C:/tools/apache24/publish/mydb/default.vrd" # --- End: mydb --- ``` При повторном запуске блок между маркерами заменяется целиком. ## wsap24.dll Модуль расширения Apache для 1С:Предприятие 8.3. - Расположение: `{V8Path}/wsap24.dll` (в каталоге `bin` платформы) - Архитектура: x64 (Apache тоже должен быть x64) - Имя модуля: `_1cws_module` ## Portable Apache ### Дистрибутив Apache Lounge — Windows-сборка Apache HTTP Server (x64): - Сайт: `https://www.apachelounge.com/download/` - Прямая ссылка (2.4.62, VS17): `https://www.apachelounge.com/download/VS17/binaries/httpd-2.4.62-240904-win64-VS17.zip` - Внутри ZIP: каталог `Apache24/` с полной структурой ### Структура после установки ``` tools/apache24/ ├── bin/ │ ├── httpd.exe │ └── ... ├── conf/ │ ├── httpd.conf │ └── ... ├── logs/ │ ├── error.log │ └── access.log ├── modules/ │ └── ... └── publish/ └── {appname}/ └── default.vrd ``` ### Пост-распаковка 1. `Expand-Archive` распаковывает ZIP во временный каталог 2. Содержимое `Apache24/` перемещается в `{ApachePath}` 3. В `httpd.conf` патчится `ServerRoot`: ```apache Define SRVROOT "C:/path/to/apache24" ServerRoot "${SRVROOT}" ``` Путь `SRVROOT` — абсолютный, с forward slashes. ### Запуск ``` httpd.exe # foreground (для отладки) httpd.exe -k start # фоновый запуск (не работает без установки сервиса) ``` > Portable Apache запускается напрямую через `Start-Process httpd.exe` без установки Windows-сервиса. ### Остановка ``` httpd.exe -k stop # graceful shutdown (требует сервис) Stop-Process -Name httpd # принудительная остановка (portable) ``` ### Перезагрузка ``` httpd.exe -k restart # graceful restart (требует сервис) ``` Для portable варианта: остановка + запуск.