# Инструкция по ручному развертыванию Wisla-wiprobe-agregator для Wisla

В данной инструкции описано как установить Wisla WiProbe Aggregator в ручном режиме без использования скрипта предварительной настройки системы.

**<span style="color: rgb(35, 111, 161);">Этап 1.</span>** Переход под пользователя wisla:

На первом этапе необходимо перейти под пользователя Wisla используя команду:

```bash
sudo su - wisla
```

<details id="bkmrk-redos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-%D1%81"><summary>Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.</summary>

1.Команда создания пользователя:

```bash
sudo useradd -d /home/wisla -m -s /bin/bash wisla
```

2.Команда установки пароля:

```bash
sudo passwd wisla
```

3.Добавление пользователя в файлы sudoers:

```bash
echo "wisla    ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/wisla
```

4.Настройка системных лимитов для пользователя wisla:

```bash
# Создаем файл лимитов
cat > /etc/security/limits.d/wisla << 'EOF'
wisla   soft      nofile  32768
wisla   hard     nofile  32768
wisla   soft      nproc   32768
wisla   hard     nproc   32768
EOF
```

5\. Добавляем в PAM (если нет):

```bash
echo "session required pam_limits.so" >> /etc/pam.d/common-session
```

</details><span style="color: rgb(35, 111, 161);">**Этап 2.** </span>Подготовка каталога Wisla-wiprobe-agregator.

После перехода под пользователя wisla вам необходимо создать каталог где будет располагаться Wisla-wiprobe-agregator, использую следующие команды:

1.Создание директории в /opt/:

```bash
sudo mkdir -p /opt/aggr-wisla
sudo mkdir -p /opt/aggr-wisla/config
sudo mkdir -p /opt/aggr-wisla/logs
```

 2.Проверить кому принадлежит каталог kafka:

```bash
ls -l /opt/
```

3.Сменить пользователя для каталога agg-wisla если принадлежит не wisla используя следующую команду:

```
sudo chown -R wisla:wisla /opt/aggr-wisla
```

4.Переходим в каталог:

```bash
cd /opt/aggr-wisla
```

**<span style="color: rgb(35, 111, 161);">Этап 3.</span>** Копирование архива Java**:**  
Предполагается, что архив OpenJDK11U-jdk\_x64\_linux\_hotspot\_11.0.28\_6.tar.gz уже передан или скачан с корпоративного файла обменника.

1.Скопируем его из домашней директории wisla используя следующую команду:

```bash
sudo cp ~/OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz /opt/aggr-wisla/
```

2.Распаковка архива Java:

```bash
sudo tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz
```

3.Добавление в переменные среды:

```bash
JAVA_HOME="/opt/aggr-wisla/$(ls -d jdk-11* 2>/dev/null | head -1)"
echo "Java Home: $JAVA_HOME"
```

4.Проверка java:

```bash
$JAVA_HOME/bin/java -version
```

**<span style="color: rgb(35, 111, 161);">Этап 4.</span>** Настройка переменного окружения:  
  
Выполнить следующие команды для добавления переменных окружений для пользователя wisla:

```bash
sudo -u wisla bash -c "echo 'export JAVA_HOME=\"$JAVA_HOME\"' >> /home/wisla/.bashrc"
```

```bash
sudo -u wisla bash -c "echo 'export PATH=\"\$JAVA_HOME/bin:\$PATH\"' >> /home/wisla/.bashrc"
```

**<span style="color: rgb(35, 111, 161);">Этап 5.</span>** Копирование JAR файла:

Предполагается, что архив wisla-wiprobe-aggregator.jar уже передан или скачан с корпоративного файла обменника.

1.Скопируем его из домашней директории wisla используя следующую команду:

```bash
sudo cp ~/wisla-wiprobe-aggregator.jar /opt/aggr-wisla/
```

2.Выдача прав на исполнение и изменение владельца:

```bash
sudo chmod +x /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
```

```bash
sudo chown wisla:wisla /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
```

3.Создаем конфигурационный файл

```bash
sudo cat > /opt/aggr-wisla/config/application.properties << EOF
server.servlet.context-path=/aggregator
server.port=18080
aggregator.kafka-enabled=true
aggregator.wisla-kafka.bootstrap.servers="Указать Ip Адресс сервера кафка :9092"
aggregator.wisla-kafka.consumer-threads-count=4
aggregator.id=1
aggregator.buffered-data-processing.interval=5000
aggregator.refresh-data-senders.interval=30000
aggregator.data-batch-length.limit=1000000
aggregator.buffer-size.limit=1500
aggregator.wisla.dc-nodes="Указать Ip Адресс сервера кафка :8080"
aggregator.round.robbin.algorithm=true
spring.servlet.multipart.enabled=true
spring.application.name=wisla-wiprobe-aggregator
logging.level.root=WARN
logging.level.com.wisla=INFO
logging.file.name=/opt/aggr-wisla/logs/aggregator.log
logging.pattern.console=
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
management.endpoints.web.exposure.include=health,info,metrics
management.endpoint.health.show-details=always
EOF
```

4.Изменение пользователя:

```bash
sudo chown wisla:wisla /opt/aggr-wisla/config/application.properties
```

5.Создать юнит для wisla-wiprobe-aggregator:

```bash
sudo cat > /etc/systemd/system/wisla-wiprobe-aggregator.service << EOF
[Unit]
Description=Wisla WiProbe Aggregator Service
After=network.target kafka.service

[Service]
Type=simple
User=wisla
Group=wisla
WorkingDirectory=/opt/aggr-wisla
Environment="JAVA_HOME=$JAVA_HOME"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=$JAVA_HOME/bin/java -jar /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
SuccessExitStatus=143
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
```

**<span style="color: rgb(35, 111, 161);">Этап 6.</span>** Запуск и проверка:

Обновляем systemd:

```bash
sudo systemctl daemon-reload
```

Включаем автозагрузку:

```bash
sudo systemctl enable wisla-wiprobe-aggregator
```

Запускаем Kafka:

```bash
sudo systemctl start wisla-wiprobe-aggregator
```

Проверяем статус:

```bash
sudo systemctl status wisla-wiprobe-aggregator
```