> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1unic.com/odatav4/llms.txt
> Use this file to discover all available pages before exploring further.

# Публикация на веб-сервере

> Как опубликовать HTTP-сервисы OData4 на Apache или IIS и настроить пул сеансов

OData4 — это два HTTP-сервиса расширения:

| Сервис | Адрес | Вход |
| - | - | - |
| `OData4` | `https://server/base/hs/odata/v4/` | Basic, пользователь 1С |
| `OData4T` | `https://server/base-svc/hs/odatat/v4/` | токен; отдельная публикация с фиксированным пользователем |

Для начала достаточно сервиса `OData4` на обычной публикации базы. Сервис токенов публикуется отдельно —
см. [Публикация токенов](/odatav4/install/token-publication).

## Публикация из конфигуратора

**Администрирование → Публикация на веб-сервере**:

<Frame caption="Администрирование → Публикация на веб-сервере">
  <img src="https://mintcdn.com/o-data-v4/8iesiGXq06VGcZxz/images/install/cfg-menu-publication.png?fit=max&auto=format&n=8iesiGXq06VGcZxz&q=85&s=94f0044e2ba60f1affd3301ee7a0d9b4" alt="Администрирование → Публикация на веб-сервере" width="706" height="426" data-path="images/install/cfg-menu-publication.png" />
</Frame>

1. Укажите имя публикации (оно станет частью адреса, `base` в примерах) и каталог.
2. Включите **«Публиковать HTTP-сервисы расширений по умолчанию»**.
3. Нажмите **«Опубликовать»**. На Windows конфигуратор должен быть запущен от имени администратора.

<Frame caption="Вкладка «HTTP сервисы»: флажок для HTTP-сервисов расширений и кнопка «Опубликовать»">
  <img src="https://mintcdn.com/o-data-v4/8iesiGXq06VGcZxz/images/install/cfg-publication-http.png?fit=max&auto=format&n=8iesiGXq06VGcZxz&q=85&s=dc2d9f1d0fd7fe791ac820ab544b8b13" alt="Вкладка «HTTP сервисы»: флажок для HTTP-сервисов расширений и кнопка «Опубликовать»" width="509" height="510" data-path="images/install/cfg-publication-http.png" />
</Frame>

## default.vrd

Те же настройки в файле публикации. Пример с явными параметрами сервиса `OData4`:

```xml default.vrd theme={null}
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/base"
       ib="Srvr=&quot;server&quot;;Ref=&quot;base&quot;;">
  <httpServices publishByDefault="true" publishExtensionsByDefault="true">
    <service name="OData4" rootUrl="odata" enable="true"
             reuseSessions="autouse" sessionMaxAge="20"
             poolSize="10" poolTimeout="5"/>
  </httpServices>
</point>
```

* `reuseSessions="autouse"` — запросы попадают в уже подготовленный сеанс: модель данных и `$metadata`
  не строятся заново на каждый запрос;
* `sessionMaxAge="20"` — сеанс живёт 20 секунд простоя;
* `poolSize` — сколько сеансов держит пул; задавайте соразмерно числу одновременных клиентов.

Параметры сервиса в `default.vrd` перекрывают значения из конфигурации расширения (там тоже
`reuseSessions = AutoUse`, `sessionMaxAge = 20`).

## Проверка

```bash theme={null}
curl -i -u "user:password" https://server/base/hs/odata/v4/
```

| Ответ | Что значит |
| - | - |
| `200` и список наборов | всё работает |
| `404` веб-сервера | HTTP-сервисы расширения не опубликованы или расширение не активно |
| `401` | неверные имя или пароль |
| `403` | пользователю не назначена роль расширения — см. [Роли](/odatav4/install/roles) |
| `503` «Состав стандартного интерфейса OData не сохранён» | выполните первый запрос от администратора |

## Память рабочего процесса

Новый сеанс строит не всю модель, а только индекс наборов и описания тех наборов, к которым обращались.
Полную модель строит только запрос `$metadata`: на время его построения процесс веб-сервера может занять
ориентировочно 180–300 МБ на большой конфигурации. Модуль веб-сервера 1С не возвращает память операционной
системе до завершения рабочего процесса (`httpd` или `w3wp`).

Рекомендации:

* держите `poolSize` соразмерным числу одновременных клиентов;
* не публикуйте лишние объекты: [состав публикации](/odatav4/admin/composition) определяет размер модели и `$metadata`;
* включите кэш `$metadata` между сеансами (по умолчанию включён), тогда новые сеансы берут готовый документ;
* перезапускайте рабочий процесс веб-сервера по расписанию или по достижении предела памяти
  (`MaxConnectionsPerChild` у Apache, переработка пула у IIS).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.