v8-runner

Веб-публикация

Выберите вариант по расположению базы и утилит. Обозначения схем и настройки файлов проекта описаны отдельно.

Файловая база и веб-сервер

Файловая база и веб-сервер Apache или IIS на одной машине с раннером. У базы два адреса: по файловому пути её администрируют и открывают Конфигуратором, толстым и тонким клиентом, по HTTP — открывают веб-клиентом и тем же тонким клиентом.

Конфигурация

Основной файл v8project.yaml описывает исходники на машине раннера.

workPath: .build         # журналы и временные файлы; можно удалить
format: DESIGNER         # исходники в формате платформы
source-set:
  - name: main           # локальное имя набора
    type: CONFIGURATION  # основная конфигурация
    path: src/cf         # путь от каталога v8project.yaml

v8project.local.yaml рядом с основным файлом:

infobases:
  origin:
    connection: "File=/srv/ib/demo"    # общий путь для раннера и веб-сервера
    web:
      server: apache22                 # Apache 2.2 на машине раннера
      wsdir: demo                      # виртуальный каталог
      dir: /var/www/demo               # существующий каталог публикации
      conf: /etc/apache2/apache2.conf  # конфигурация локального Apache
      url: "http://localhost/demo"     # адрес для клиента

Apache и раннер установлены на одной машине и видят базу /srv/ib/demo. После publish адрес http://localhost/demo открывает базу через веб-сервер. Для Apache 2.4 укажите apache24; conf для него необязателен.

Кластер с веб-публикацией — через кластер

Кластерная база, опубликованная на Apache или IIS. Веб-сервер держит подключение к кластеру по сети; файловый доступ к базе ему не нужен.

В YAML задана только connection: Конфигуратор и агент подключаются через кластер. Прямой канал ibcmd к СУБД не используется.

Конфигурация

Используйте тот же v8project.yaml, что в первом варианте этой страницы. Меняется локальный файл.

v8project.local.yaml рядом с основным файлом:

infobases:
  origin:
    connection: "Srvr=srv:1541;Ref=demo"  # кластер на сервере приложений
    web:
      server: apache24                    # веб-сервер на машине раннера
      wsdir: demo                         # виртуальный каталог
      dir: /var/www/demo                  # существующий каталог публикации
      conf: /etc/apache2/apache2.conf     # конфигурация локального Apache
      url: "http://localhost/demo"        # HTTP-адрес на машине раннера

Раннер и Apache стоят вместе; srv — отдельная машина с кластером. Веб-серверу нужен сетевой доступ к кластеру. База demo зарегистрирована заранее, каталог /var/www/demo существует.

Возможности операций — на странице Компоненты.

Прямой доступ ibcmd к СУБД не зависит от веб-публикации. Схема и настройка — в разделе «На другой машине, кластер остановлен».

Кластер с готовой веб-публикацией

База уже опубликована на Apache или IIS. Публикацией управляют вне раннера; раннер открывает браузер или тонкий клиент по её адресу.

Конфигурация

Используйте тот же v8project.yaml, что в первом варианте этой страницы. В v8project.local.yaml задайте адрес готовой публикации:

infobases:
  origin:
    connection: "Srvr=srv:1541;Ref=demo"  # операции с базой через кластер
    web:
      url: "https://web.example/demo"     # готовая веб-публикация
v8-runner launch web             # открыть в браузере
v8-runner launch thin --via web  # открыть тонким клиентом по HTTP

В этой конфигурации недоступны web publish и web publish --delete: параметры управления публикацией не заданы. Строка connection остаётся для операций с базой через кластер и не заменяется веб-адресом.

Управление публикацией на отдельном веб-сервере

webinst запускается на машине раннера. Для web publish каталог публикации должен быть доступен раннеру; для Apache 2.0 и 2.2 также нужен файл конфигурации.

Если каталог публикации смонтирован на машине раннера, можно задать параметры server, wsdir и dir. Для apache24 и iis поле conf необязательно; для apache2 и apache22 оно обязательно.

При монтировании каталога и конфигурации webinst записывает пути так, как их видит раннер. Веб-сервер должен видеть те же пути. Его модуль расширения должен соответствовать версии платформы; доступ к кластеру идёт по TCP, к файловой базе — по пути из default.vrd.

Веб-сервер в контейнере

Apache работает в контейнере на машине раннера. Каталог публикации доступен раннеру и веб-серверу через общий том, смонтированный по разным путям. Раннер обновляет default.vrd; виртуальный каталог и модуль платформы настроены в образе.

Конфигурация

Используйте основной v8project.yaml из примера веб-публикации. Меняется локальный файл.

v8project.local.yaml рядом с основным файлом:

infobases:
  origin:
    connection: "Srvr=srv:1541;Ref=demo"  # адрес кластера, доступный и контейнеру
    web:
      server: apache24                    # Apache 2.4 в контейнере
      wsdir: demo                         # каталог заранее объявлен в образе
      dir: /srv/web-publications/demo     # том публикации на машине раннера
      url: "http://localhost:8080/demo"   # HTTP-порт контейнера на хосте

Контейнер веб-сервера запущен на машине раннера. Каталог /srv/web-publications/demo смонтирован в контейнер, а порт HTTP опубликован как 8080. В образе заранее настроены виртуальный каталог demo и модуль платформы. conf отсутствует: publish обновляет default.vrd в общем томе.

Раннер пишет default.vrd по своему пути, а веб-сервер читает тот же файл по пути внутри контейнера. Сетевая строка Srvr=…;Ref=… должна быть доступна из контейнера. Для файловой базы путь из default.vrd должен указывать на ту же базу и быть доступен веб-серверу; одного общего тома публикации недостаточно.

В этом примере apache24 без conf обновляет только default.vrd. Конфигурация Apache остаётся в образе: пути к модулю и виртуальному каталогу внутри контейнера отличаются от путей раннера. Контейнер запущен вне раннера и им не управляется.

Возможности операций — на странице Компоненты.

Две базы, две веб-публикации

В кластере зарегистрированы две разные базы: origin и test. На Apache уже созданы публикации /origin и /test. Их каталоги /var/www/origin и /var/www/test содержат отдельные default.vrd; каждый подключает свою базу.

Конфигурация

Используйте тот же v8project.yaml, что в первом варианте этой страницы. В v8project.local.yaml объявите обе базы:

infobases:
  origin:
    connection: "Srvr=srv:1541;Ref=origin"
    web:
      url: "https://web.example/origin"
  test:
    connection: "Srvr=srv:1541;Ref=test"
    web:
      url: "https://web.example/test"
v8-runner launch web                              # origin по умолчанию
v8-runner launch web --infobase test               # публикация test
v8-runner launch thin --via web --infobase origin  # тонкий клиент: origin
v8-runner launch thin --via web --infobase test    # тонкий клиент: test

--infobase выбирает базу вместе с её строкой подключения и веб-адресом. Публикациями управляют вне раннера: в примере заданы только адреса, без параметров web publish.

Одна база, две веб-публикации План

Одна кластерная база demo опубликована на Apache дважды: как /demo и /demo_int. У каждой публикации свой каталог и свой default.vrd; обе подключаются к одной базе Ref=demo. Публичный и внутренний доступ настраиваются в Apache; суффикс _int служит именем публикации.

Настройки и выбор публикации

Именованные публикации задаются в web.publications внутри одной базы. Для двух публикаций не требуется объявлять одну и ту же базу дважды.

# Фрагмент v8project.local.yaml
infobases:
  origin:
    connection: "Srvr=srv:1541;Ref=demo"  # одна информационная база
    web:
      publications:
        demo:
          url: "https://web.example/demo"
        demo_int:
          url: "https://web.example/demo_int"
# Выбор публикации
v8-runner launch web --publication demo
v8-runner launch web --publication demo_int
v8-runner launch thin --via web --publication demo
v8-runner launch thin --via web --publication demo_int

Если публикаций несколько, имя обязательно; неизвестное имя означает ошибку. Единственная публикация выбирается автоматически. Ключ --publication применяется к launch web и launch thin --via web; при прямом подключении к базе и в других режимах он недопустим.

Прежний одиночный блок web сохраняется. В итоговой объединённой конфигурации его поля нельзя смешивать с web.publications. В этом примере заданы только адреса готовых публикаций; web publish и web publish --delete ими не управляют.