113 lines
7.3 KiB
Markdown
113 lines
7.3 KiB
Markdown
# 1С:Предприятие — веб-публикация для DFWebOS
|
||
|
||
Контейнер с Apache 2.4 и модулем веб-сервера 1С:Предприятие 8.3, публикующий информационную базу 1С по пути `/BuhBase`.
|
||
|
||
> Это веб-фронтенд. Сам **сервер 1С:Предприятие** должен быть запущен отдельно (на той же машине или в локальной сети) — приложение лишь публикует информационную базу через Apache.
|
||
|
||
Адаптация репозитория [petrmyazin/docker-apache-1c-example](https://github.com/petrmyazin/docker-apache-1c-example) под фреймворк приложений DFWebOS.
|
||
|
||
## Структура каталога
|
||
|
||
```
|
||
web-1c/
|
||
├── dfwebos-app.yml # манифест приложения для DFWebOS
|
||
├── docker-compose.yml # ссылается на готовый локальный образ
|
||
├── README.md # этот файл
|
||
├── docker/ # build-контекст образа Apache + модуль 1С
|
||
│ ├── Dockerfile
|
||
│ ├── httpd.conf # преднастроенный конфиг Apache + публикация /BuhBase
|
||
│ ├── default.vrd # дефолт, запекается в образ; в рантайме перекрывается томом
|
||
│ ├── build-image.sh # скрипт локальной сборки образа
|
||
│ ├── .gitignore # исключает deb64.tar.gz из git
|
||
│ └── deb64.tar.gz # ⚠️ положить вручную, см. ниже
|
||
└── data/
|
||
└── vrd/
|
||
└── default.vrd # рабочие настройки подключения, монтируются в контейнер
|
||
```
|
||
|
||
## Почему образ собирается отдельно
|
||
|
||
Все остальные приложения DFWebOS используют готовые образы из публичных registry, и манифесты с директивой `build:` в `docker-compose.yml` **не показываются в магазине**. Поэтому образ для 1С нужно собрать **локально один раз** на той же машине, где работает DFWebOS, и docker-compose поднимает уже готовый образ из локального Docker daemon — без обращения к публичному registry.
|
||
|
||
Дополнительная причина — лицензионные ограничения: проприетарные deb-пакеты сервера 1С:Предприятие нельзя публиковать в публичных Docker-реестрах.
|
||
|
||
## Подготовка перед установкой
|
||
|
||
### 1. Скачать дистрибутив сервера 1С:Предприятие
|
||
|
||
1. Откройте [releases.1c.ru](https://releases.1c.ru).
|
||
2. Перейдите в раздел **Технологическая платформа 8.3 → Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем**.
|
||
3. Скачайте архив версии **8.3.23.1912** (или другой — см. примечание ниже).
|
||
4. Сохраните файл как:
|
||
|
||
```
|
||
web-1c/docker/deb64.tar.gz
|
||
```
|
||
|
||
> При смене версии платформы обновите путь к `wsap24.so` в [docker/httpd.conf](docker/httpd.conf) (строка `LoadModule _1cws_module /opt/1cv8/x86_64/<версия>/wsap24.so`), теги в [docker/build-image.sh](docker/build-image.sh) и [docker-compose.yml](docker-compose.yml), и поле `version` в [dfwebos-app.yml](dfwebos-app.yml).
|
||
|
||
### 2. Собрать образ локально
|
||
|
||
На той же машине, где работает DFWebOS:
|
||
|
||
```sh
|
||
cd web-1c/docker
|
||
./build-image.sh
|
||
```
|
||
|
||
Скрипт соберёт и зарегистрирует в локальном Docker daemon образ `dfwebos/apache-1c:8.3.23.1912`. Сборка занимает несколько минут и съедает ~1.5 ГБ места.
|
||
|
||
Проверить, что образ доступен:
|
||
|
||
```sh
|
||
docker images dfwebos/apache-1c
|
||
```
|
||
|
||
### 3. Настроить подключение к серверу 1С
|
||
|
||
Отредактируйте файл [data/vrd/default.vrd](data/vrd/default.vrd), указав:
|
||
|
||
- адрес вашего сервера 1С:Предприятие (`Srvr=`),
|
||
- имя информационной базы (`Ref=`).
|
||
|
||
Пример:
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
|
||
base="/app-web-1c/BuhBase"
|
||
ib="Srvr=192.168.10.195;Ref=УПФ"
|
||
enableStandardOData="true">
|
||
<ws publishExtensionsByDefault="true"/>
|
||
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
|
||
</point>
|
||
```
|
||
|
||
Файл смонтирован томом — изменения подхватываются перезапуском приложения, **без пересборки образа**.
|
||
|
||
Для DFWebOS с запуском через прокси `base` должен оставаться `/app-web-1c/BuhBase`: Apache внутри контейнера добавляет этот префикс перед передачей запроса 1С-handler'у, а браузер получает корректные абсолютные ссылки через `/app-web-1c/...`.
|
||
|
||
### 4. (Опционально) добавить DNS-имена сервера 1С
|
||
|
||
Если в `default.vrd` используется DNS-имя сервера 1С (а не IP), которое не разрешается из контейнера, раскомментируйте блок `extra_hosts:` в [docker-compose.yml](docker-compose.yml) и пропишите соответствие имени и IP-адреса.
|
||
|
||
## Установка в DFWebOS
|
||
|
||
После того как образ собран, а `data/vrd/default.vrd` настроен, приложение можно устанавливать стандартным способом DFWebOS — оно появится в магазине в категории **developer** под именем «1С:Предприятие (веб-публикация)».
|
||
|
||
После установки информационная база будет доступна по адресу:
|
||
|
||
```
|
||
http://<dfwebos-host>:8180/BuhBase/
|
||
```
|
||
|
||
## Несколько информационных баз
|
||
|
||
Чтобы опубликовать вторую базу:
|
||
|
||
1. Подготовьте отдельный `.vrd` (например, `another.vrd`) рядом с `default.vrd` в `data/vrd/`.
|
||
2. Добавьте в [docker/Dockerfile](docker/Dockerfile) копирование своего `.vrd` в каталог `/usr/local/apache2/htdocs/<AnotherBase>/`.
|
||
3. Раскомментируйте и адаптируйте блок второй базы в [docker/httpd.conf](docker/httpd.conf) (см. конец файла).
|
||
4. Смонтируйте новый `.vrd` томом в [docker-compose.yml](docker-compose.yml).
|
||
5. Пересоберите образ (`./build-image.sh`) и переустановите приложение в DFWebOS.
|