# Установка "Первой Формы"

## SQL сервер

1\. Настройте SQL сервер согласно [инструкции](https://help.1forma.ru/maintenance_guide/installation/databases/mssql/tech_req_1f_prepare.md).

2\. Создайте пользователя D10TaskUser (public, sysadmin) — sysadmin он нужен для анализа работы SQL посредством Blitz отчетов.

3\. Выполните в SQL SQL\_advances.sql – настройка SQL по требованиями.

4\. Для проверки производительности установите Blitz отчеты в [master](https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit).

5\. Восстановите базы D10Task, TaskFilesDB из архива.

6\. Удалите из восстановленных баз D10Task, TaskFilesDB пользователя D10TaskUser, а в настройках созданного пользователя выдайте доступ db\_owner на восстановленные базы.

7\. В настройках восстановленных баз выставите максимальный уровень совместимости.

8\. Выполните в SQL [grant.sql](https://help.1forma.ru/files/grant.sql) для базы D10Task — выдача прав для работы хранимых процедур.

## Web сервер

1\. Настройте Web-сервер согласно [инструкции](https://help.1forma.ru/maintenance_guide/installation/application/required_software_components.md).

2\. Установите следующие файлы:

- .NET Framework  4.8

- urlrewrite2

- ARRv3\_0

- dotnet-hosting-9.0.1-win

- dotnet-sdk-9.0.102-win-x64

3\. Перезагрузите сервер.

4\. Скопируйте папку из архива 1Forma в C:\\inetpub\\wwwroot.

5\. Скопируйте папку из архива 1Forma\_net\_core в C:\\inetpub\\wwwroot.

6\. Создайте приложения, выполните настройку IIS. Для каждого приложения "Первой Формы" используется отдельный пул.

Создайте сайт – 1Forma. В качестве каталога содержимого для него укажите папку 1Forma.

Измените настройки пула приложения (настройки пулов см. в [инструкции по настройке IIS](https://help.1forma.ru/maintenance_guide/installation/application/iis-deployment/iis_deploy.md)).

В поле Версия среды .NET укажите версию 4.

В дополнительных параметрах пула измените следующие параметры:

| Параметр | Значение | Комментарий |
| --- | --- | --- |
| Разрешены 32-разрядные приложения | False | Это необходимо для корректной работы дизайнера бизнес-процессов |
| Режим запуска | AlwaysRunning |  |
| Максимальное число рабочих процессов | 1 |  |
| Тайм-аут простоя (в минутах) | 0 |  |
| Удостоверение | LocalSystem | При желании можно использовать отдельную служебную административную учетную запись |
| Моменты точного времени для перезапуска |  | Рекомендуется настроить перезапуск пула на определенное время, например, в ночные часы |
| Постоянный временной интервал | 0 | Иначе возможен перезапуск пула в рабочее время |

Создайте сайт – 1Forma\_net\_core. В качестве каталога содержимого для него укажите папку 1Forma\_net\_core. Сразу можно указать порт https, например 450.

Измените настройки пула приложения. Проверьте настройку Enable proxy — для этого перейдите в настройки IIS.

Затем перейдите в Настройки прокси-сервера.

Если настройка Enable proxy не включена, её необходимо включить.

> ℹ️ При использовании длинных URL (например, создание задачи через ExtParamString с заполнением нескольких ДП) стандартный лимит IIS на длину URL/query string (2048 байт) может быть недостаточным. В этом случае нужно увеличить параметры Maximum URL length и Maximum query string в IIS Manager → сайт → Security → Request Filtering → Edit Feature Settings. Альтернативно — через web.config

## Настройки конфигов

1\. В папке 1Forma откройте файл web.config

2\. В секции TCConnectionString  укажите актуальные данные и сохраните изменения.

Если не получается сохранить файл в ту же папку, сохраните его в другую папку и затем скопируйте в нужную.

> ℹ️ Обратите внимание, при сохранении тип документа должен быть "All Files (\*.\*)"

- data source=;   имя сервера, на котором находится база

- initial catalog=; имя базы по умолчанию D10Task

- password=; пароль, который был задан для D10TaskUser

Пример ConnectionString (строки подключения):

```xml
<add name="TCConnectionString" connectionString="packet size=4096;user id=ПОЛЬЗОВАТЕЛЬ_SQL;data source=НАЗВАНИЕ_SQL_СЕРВЕРА;
persist security info=True;initial catalog=НАЗВАНИЕ_БД;password=ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_SQL;Max Pool Size=2500;MultipleActiveResultSets=false"
providerName="System.Data.SqlClient" />
```

> ℹ️ Параметр MultipleActiveResultSets должен быть установлен в значении false. Значение true допустимо только в строке подключения RebusConnectionString

3\. В строке должен быть указан актуальный порт для net core приложения:

`<action type="Rewrite" url="https://localhost:450/net-core-api/{R:1}" />`

4\. В папке 1Forma\_net\_core откройте файл appsettings.json ([Описание ключей appsettings.json](https://help.1forma.ru/maintenance_guide/maintenance/app-files/appsettings_json.md))

5\.  В секции TCConnectionString  укажите актуальные данные и сохраните изменения.

Если не получается сохранить файл в ту же папку, сохраните его в другую папку, а затем скопируйте в нужную.

> ℹ️ Обратите внимание, при сохранении тип документа должен быть "All Files (\*.\*)"

- data source=;   имя сервера, на котором находится база

- initial catalog=; имя базы по умолчанию D10Task

- password=; пароль, который был задан для D10TaskUser

6\. В строке должен быть указан актуальный порт для net core приложения:

`"Urls": "https://localhost:450"`

## Push уведомления

Для работы push-уведомлений нужно указать публичный стек сетей.

- для Android-устройств: fcm.googleapis.com: TCP/443, 5228-5230, android.googleapis.com: TCP/443, 5228-5230, 5235, 5236

- для iOS-устройств: api.push.apple.com 443, api.development.push.apple.com 443

> ℹ️ На всех серверах должны стоять Windows Update

## Подключение файловой базы

В системе "Первая Форма" в интерфейсе администратора откройте страницу Провайдеры загружаемых файлов и внесите правки в строку подключения, указав:

- data source=;   имя сервера, на котором находится база

- initial catalog=; имя базы по умолчанию TaskFilesDB

- password=; пароль, который был задан для D10TaskUser
