﻿# Установить сервисы для интеграции с Госключом

> [HTML Version](kedo-goskey-install-services.html)

После установки решения **Интеграция с Госключом **установите на сервер следующие сервисы:

- **rutokensign** — реализует автоматическое подписание документов на стороне сервера, генерирует технологические подписи к API-ключу;

- **signimprover** — нужен для корректной работы сервиса **rutokensign**;

- **node-jszip** — архивирует документы.

Менеджер ELMA365 предоставит вам архив с файлами для установки этих сервисов. 

## Предварительные настройки для установки сервисов

Перед тем, как установить сервисы, выполните следующие действия:

1. Обеспечьте доступ к Рутокену с обезличенным сертификатом электронной подписи юридического лица на сервере, где будут установлены сервисы. При этом:

	- на физическом сервере с прямым доступом к Рутокену — убедитесь, что к серверу будет доступ из сети, в которой развёрнута ELMA365;

	- на виртуальной машине — обеспечьте доступ к Рутокену через гипервизор.

2. Установите следующие пакеты для работы сервисов на сервере (список пакетов указан для ОС Linux):

	- **pcscd**;

	- **opensc**;

	- **openssl**;

	- **libengine-pkcs11-openssl**;

	- **librtpkcs11ecp **— пакет формата **.deb** , входит в состав архива;

	- **openjdk **— не ниже версии 19. Например, установите **njdk-19-jre**. Для ОС Astra Linux и подобных российских систем можно использовать [ГосJava](https://lab50.net/gosjava/);

	- **docker** — нужен только для поставки SaaS.

## Состав архива для установки сервисов

Содержимое архива для установки сервисов, предоставленный менеджером ELMA365,  позволяет:

- файл** init.sh** — запустить файлы **set\_services.sh** и **run\_services.sh**. Также выполнить запуск Docker-контейнера с сервисом **node-jszip**, если команда содержит флаг \[OBJECT\];

- файл** set\_services.sh** — задать инструкции в утилите **crontab**, чтобы в случае перезагрузки сервера автоматически запускались сервисы **rutokensign** и **signimprover**;

- файл** run\_services.sh **— создать необходимые переменные окружения. Также остановить работу сервисов **rutokensign** и **signimprover**, если они ранее были запущены, и затем последовательно запустить их. Выполнить запуск Docker-контейнера с сервисом **node-jszip**, если команда содержит флаг \[OBJECT\];

- файл** kill\_services.sh **— остановить работу сервисов **rutokensign** и **signimprover**, запущенных на портах **8080** и **8000**;

- пакет** librtpkcs11ecp\_2.15.1.0-1\_amd64.deb **— обеспечить работу системы с Рутокеном. Устанавливается с помощью пакетного менеджера **dpkg**;

- папка **services **— хранить JAR-архивы сервисов. Содержит файлы **signimprover-0.0.1-SNAPSHOT.jar** и **signrutoken-0.0.1-SNAPSHOT.jar**, а также папку с логами **logs**;

- папка **services/logs **— хранить логи. Новый файл в этой папке создаётся при каждом запуске сервисов, название файла содержит временную метку.

## Установка сервисов

Выполните следующие шаги, чтобы установить сервисы решения:

1. Убедитесь, что на вашем сервере открыт порт **8080** для входящих подключений. Если вы используете поставку SaaS, также нужен открытый порт **3000** для **docker**.

2. Распакуйте архив для установки сервисов в отдельную папку на сервере.

3. Убедитесь, что [установлены все пакеты](#install-packages) для работы сервисов.

4. Из корневой папки, куда вы распаковали архив и которая содержит файлы формата **.sh**, выполните команду \[OBJECT\], чтобы выдать права на исполнение bash-скриптов в этой папке.

5. Запустите файл **init.sh**. Если не возникли ошибки в консоли, то сервисы успешно запустились. Чтобы в поставке Saas скачать образ для **docker** и развернуть контейнер с образом, используйте в команде флаг \[OBJECT\].

6. Выполните команду \[OBJECT\] для итоговой проверки. Если сервисы успешно запущены, вы получите ответ с HTTP-кодом \[OBJECT\]. Это означает, что сервис подключён и работает корректно.

## Решение ошибок при установке сервисов

| | |
|------|------|
| **Описание ошибки** | **Решение** |
| 1. Не загружается образ из Docker Hub | Проверьте наличие доступа до hub.docker.com и затем повторите запрос. |
| 2. Сервисы не запускаются из-за внутренней ошибки | Проверьте содержание логов в папке **services/logs**, чтобы понять причину. Чаще всего причиной является неактуальная версия Java либо установлены не все пакеты. |
| 3. Сервисы не запускаются автоматически после перезагрузки сервера | Проверьте утилиту **crontab** с помощью команды \[OBJECT\], и в ответе проверьте наличие строки вида \[OBJECT\]<br>Далее:<br>- если такой строки нет — запустите файл **set\_services.sh** из папки с сервисами или добавьте строку вручную;<br>- если строка есть, но сервисы не запущены — проверьте \[OBJECT\] у других пользователей командой \[OBJECT\]. Если в ответе строка отсутствует, продублируйте её из ответа первой команды. |
| 4. При запросе к сервису возникает ошибка с таймаутом | Нет доступа до сервера. Выясните и устраните причину этого. |
