# Локальное развертывание

Веб-служба Tisane может быть развернута за пределами публичного облака Tisane Labs на территории клиента, в частном центре обработки данных или в частном облаке.

Методы API в локальных установках такие же, как и в нашем публичном облаке. (Рекомендуем ознакомиться: [Справка по API Tisane](/apis/tisane-api-short)). Заголовки аутентификации не требуются.

Локальные лицензии выдаются в индивидуальном порядке. [Свяжитесь с нами, чтобы обсудить ваши потребности](https://tisane.ai/on-prem).

Для интеграции Tisane в качестве компонента в процессе см.: [Встроенные SDK Tisane](/sdks)

## Требования к оперативной памяти

**Замедленная загрузка**: 50 МБ фиксированной квоты + 50–100 МБ на языковую модель
**Полная загрузка** : от 400 МБ до 2 ГБ на языковую модель

Подробнее: [Сравнение режима замедленной загрузки с режимом полной загрузки](/sdks/lazyloading)

## Linux

Tisane Web Service для Linux — это исполняемый файл, размещенный на собственном сервере (`tisane`) работает как веб-служба, опционально как системная служба. Несколько экземпляров могут работать в одной и той же языковой базе данных, на одном и том же компьютере и с использованием одной и той же конфигурации. Для каждого экземпляра требуется отдельный порт.

### Требования

Версия ядра 6.0.0+

### Параметры командной строки

**Без параметров**

Запускает простой тест, выводит его результат и завершает работу.

**-port**

Запускает службу, прослушивающую указанный порт со следующими параметрами:

* *Параметр 1*: действительный номер порта


**-parse**

Запускает один вызов синтаксического анализа и выводит его результат со следующими параметрами:

* *Параметр 1*: код языка
* *Параметр 2*: содержание
* *Параметр 3*: настройки (должны быть заключены в `{}` )


**-transform**

Запускает одиночный вызов преобразования и выводит его результат со следующими параметрами:

* *Параметр 1*: исходный код языка
* *Параметр 2*: код(ы) целевого языка
* *Параметр 3*: содержание
* *Параметр 4*: настройки (должны быть заключены в `{}` )


**--version**

Выводит версию среды выполнения.

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

Файлы конфигурации Linux от Tisane используют [формат TOML](https://en.wikipedia.org/wiki/TOML) . Все настройки находятся в разделе *[main]*. Настройки следующие:

* *path* (строка, обязательно) — папка, в которой находятся файлы данных Tisane. Относительный путь допустим, поэтому, если он находится в той же папке, `./` работает.
* *preload* (массив строк, необязательно) — коды языков для полной загрузки при запуске. Остальные будут использовать замедленную загрузку (загрузку по требованию). Рекомендуется предварительно загружать не более одной или двух языковых моделей, если только в среде очень часто не используется несколько языков. Читайте также: [Сравнение режима замедленной загрузки с режимом полной загрузки](/sdks/lazyloading)
* *daemon* (логическое значение, необязательный) - если *true*, Tisane будет запущен как системная служба.
* *limit* (целое число, необязательно) - максимальная длина запроса в байтах.


Например:


```bash
[main]
path = "./"
preload = ["en", "es"]
daemon = true
```

Не используйте опцию `daemon` при использовании Docker.

### Установка

После запуска с указанным параметром ` -port`, `tisane` принимает HTTP-запросы и отвечает на них. Для установки просто убедитесь, что исполняемый файл запускается при загрузке системы. Самый простой способ — использовать пакет `systemd`.

Мы предоставляем скрипт Bash для настройки `systemd` для запуска нескольких экземпляров веб-службы Tisane: [install.sh](/assets/install.ebdd18c8e1b55848d88b64f18891a81d574b9d0b85efed12cf7367791139abc8.a532ac60.sh)

Еще больше вспомогательных скриптов Bash:

* остановите все запущенные экземпляры Tisane: [stop.sh](/assets/stop.c29959afd378d5e35547e52b895e1ff658e298c9f82604b2234e90686d5a1d83.a532ac60.sh)
* запустите экземпляры Tisane, управляемые `systemd` : [startall.sh](/assets/startall.beb101fe607f243640001bc6feff9dbfd0a592c9b96d0e47efb349b6c7f99d41.a532ac60.sh)


#### Параметры install.sh

Параметры:

- -f : Путь к zip-файлу tisane  (пакет установки или обновления)
- -p : Список портов, разделенных запятыми, на которых вы хотите запустить службу
- -d : Если вы не хотите запускать tisane как системную службу, установите значение «simple» (простой) и обновите файл конфигурации. (Рекомендуется не менять этот параметр, по умолчанию используется форкинг для системных служб)
- -u : Если использовать эту опцию, будет предпринята попытка принудительной установки Tisane путем удаления всех старых файлов и остановки всех запущенных служб.


### Обновления

Для обновления:

1. Завершите работу всех запущенных экземпляров Tisane, подключенных к целевой лингвистической базе данных.
2. Разверните обновление.
3. Запустите экземпляры снова.


Дополнительные скрипты Bash для распространения и мониторинга доступны по запросу.

## Windows

Tisane Runtime — это приложение ASP.NET для Windows. Tisane Runtime работает только как служба. Несколько экземпляров могут работать на одной машине на разных портах.

После установки экземпляры становятся доступны в консоли управления службами Windows, как показано на снимке экрана ниже.

![Tisane Windows services](/assets/tisanewindowsservices.6d69769a9d8d3a2eab33327be4bca8d00b54015097783f9e5f8404559e6ee879.9bb1daa4.png)

Tisane Runtime размещается на собственном хостинге и не требует внешнего веб-сервера (IIS, Apache, nginx и т. д.).

### Требования

Среда выполнения ASP.NET Core 8+

[Download .NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) (.NET Runtime package is required as well)

### Установка

1. Убедитесь, что установлены ASP.NET Code 8+ и .NET Runtime 8+.
2. Создайте папку на сервере (например, `C:\Tisane` ).
3. Создайте подпапку для двоичных файлов (например, `C:\Tisane\bin`).
4. Скопируйте двоичные файлы Tisane и файл конфигурации (` Tisane.Runtime.Service.dll.config`) в исполняемую(-ые) подпапку(-и). Не забудьте подпапку `native` для библиотек RocksDB. В отличие от версии Linux, каждый экземпляр должен иметь свою собственную папку, поскольку мы полагаемся на файл конфигурации для установки порта, на котором будет работать служба.
5. Выполните `Tisane.Runtime.Service.exe -i` для установки.
6. Скопируйте языковые модели в папку, указанную в конфигурации (например, `C:\Tisane` или `C:\Tisane\db`).


#### Параметры командной строки

* `-i` — установить новую службу для двоичных файлов в текущей папке
* `-u` — удалить службу, связанную с текущей папкой
* `-r` — переустановить службу, связанную с текущей папкой


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

Файл конфигурации (`Tisane.Runtime.Service.dll.config`) — это стандартный файл формата Configuration Manager (XML), содержащий настройки, используемые службой Tisane в ее разделе `appSettings`:

* `DbPath` - (обязательно) папка, в которой находятся файлы данных Tisane. Абсолютный путь, должен заканчиваться на `\` или `/`.
* `Port` - (обязательно) порт для запуска службы. Не должен использоваться чем-то другим.
* `PreloadLanguages` - список кодов языков, разделенных запятыми, для полной загрузки при запуске. Остальные будут использовать замедленную загрузку (загрузку по требованию). Рекомендуется предварительно загружать не более одной или двух языковых моделей, если только в среде очень часто не используется несколько языков. Читайте также: [Сравнение режима замедленной загрузки с режимом полной загрузки](/sdks/lazyloading)


Например:


```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
      <add key="DbPath" value="C:\Tisane\" />
      <add key="Port" value="3780" /> <!-- run on port 3780 -->
      <add key="PreloadLanguages" value="en,fr" /> <!-- preload English and French -->
   </appSettings>
</configuration>
```

### Обновления

1. Завершите работу всех служб Tisane. Убедитесь, что никакие внешние приложения не получают доступ к файлам данных и двоичным файлам Tisane.
2. Скопируйте новые файлы Tisane с заменой существующих файлов.
3. Запустите службы снова.


Ни в коем случае **не перезаписывайте существующий файл конфигурации**.

## Рекомендуемые методы

Tisane является потокобезопасным, поэтому к одному и тому же экземпляру могут подключаться несколько вызывающих программ. При загрузке нескольких языковых моделей полезно поддерживать небольшое количество экземпляров. Тем не менее, рекомендуется поддерживать разумное количество одновременных запросов.

По нашему опыту, оптимальным вариантом является 3 экземпляра для 4-ядерной машины 8 Гб.