Лого
_

Инструкция по установке экземпляра программного обеспечения

Развёртывание стека: подготовка сервера (Docker, Node.js, PostgreSQL, Redis, Nginx), backend и ML-модели, сборка Vue.js frontend, Nginx, Docker Compose, Kubernetes, пост-настройка, проверка, обновление и деинсталляция.

Ниже приведён полный текст разделов; для навигации используйте оглавление слева или якорные ссылки на мобильных устройствах.

1. ПОДГОТОВКА К УСТАНОВКЕ

1.1. Системные требования

1.1.1. Минимальные требования

Hardware:

CPU: 8 cores (Intel Xeon E5-2600 v3 или выше)

RAM: 32 GB DDR4

Storage:

- System: 100 GB SSD

- Data: 400 GB SSD

Network: 1 Gbps Ethernet

GPU: Опционально (NVIDIA Tesla T4 для ML-задач)

Software:

OS: Ubuntu 20.04 LTS / CentOS 8 / Astra Linux SE

Docker: 20.10+

Docker Compose: 2.0+

Node.js: 18.x LTS

Python: 3.9+

PostgreSQL: 13+

Redis: 6.2+

Nginx: 1.20+

1.1.2. Рекомендуемые требования для production

Hardware:

CPU: 16+ cores (Intel Xeon Gold 6200 или выше)

RAM: 64 GB DDR4 ECC

Storage:

- System: 200 GB NVMe SSD

- Data: 1 TB NVMe SSD (RAID 10)

- Backup: 2 TB HDD

Network: 10 Gbps Ethernet (redundant)

GPU: NVIDIA Tesla V100 (для ML-задач)

Cluster:

Nodes: минимум 3 для HA

Load Balancer: отдельный сервер

Database: отдельный сервер или кластер

1.2. Предварительная подготовка

1.2.1. Проверка системы

#!/bin/bash

# check_system.sh - Скрипт проверки готовности системы

echo "=== Проверка системных требований для НИКА ==="

# Проверка ОС

echo -n "Проверка операционной системы... "

if [[ -f /etc/os-release ]]; then

. /etc/os-release

echo "$NAME $VERSION"

else

echo "ОШИБКА: Не удалось определить ОС"

exit 1

fi

# Проверка CPU

echo -n "Проверка процессора... "

CPU_CORES=$(nproc)

if [ $CPU_CORES -lt 8 ]; then

echo "ПРЕДУПРЕЖДЕНИЕ: Обнаружено $CPU_CORES ядер (минимум 8)"

else

echo "OK: $CPU_CORES ядер"

fi

# Проверка RAM

echo -n "Проверка оперативной памяти... "

RAM_GB=$(free -g | awk '/^Mem:/{print $2}')

if [ $RAM_GB -lt 32 ]; then

echo "ОШИБКА: Обнаружено $RAM_GB GB (минимум 32 GB)"

exit 1

else

echo "OK: $RAM_GB GB"

fi

# Проверка дискового пространства

echo -n "Проверка дискового пространства... "

DISK_AVAILABLE=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//')

if [ $DISK_AVAILABLE -lt 500 ]; then

echo "ПРЕДУПРЕЖДЕНИЕ: Доступно $DISK_AVAILABLE GB (рекомендуется 500+ GB)"

else

echo "OK: Доступно $DISK_AVAILABLE GB"

fi

# Проверка сети

echo -n "Проверка сетевого соединения... "

if ping -c 1 google.com &> /dev/null; then

echo "OK: Интернет доступен"

else

echo "ПРЕДУПРЕЖДЕНИЕ: Нет доступа к интернету"

fi

echo "=== Проверка завершена ==="

1.2.2. Установка базовых зависимостей

#!/bin/bash

# install_dependencies.sh

echo "Обновление системы..."

sudo apt-get update && sudo apt-get upgrade -y

echo "Установка базовых пакетов..."

sudo apt-get install -y curl wget git vim htop build-essential software-properties-common apt-transport-https ca-certificates gnupg lsb-release python3-pip python3-venv ufw fail2ban

echo "Установка Docker..."

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo usermod -aG docker $USER

sudo systemctl enable docker

sudo systemctl start docker

echo "Установка Node.js 18..."

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt-get install -y nodejs

echo "Установка PostgreSQL 13..."

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get install -y postgresql-13 postgresql-client-13

echo "Установка Redis..."

sudo apt-get install -y redis-server

sudo systemctl enable redis-server

echo "Установка Nginx..."

sudo apt-get install -y nginx

sudo systemctl enable nginx

echo "Установка зависимостей завершена!"

2. УСТАНОВКА BACKEND КОМПОНЕНТОВ

2.1. Клонирование репозитория

sudo mkdir -p /opt/nika

sudo chown $USER:$USER /opt/nika

cd /opt/nika

git clone https://github.com/your-org/nika-backend.git backend

git clone https://github.com/your-org/nika-frontend.git frontend

mkdir -p {data,logs,backups,models,uploads,config}

2.2. Настройка базы данных

2.2.1. PostgreSQL

sudo -u postgres psql << EOF

CREATE USER nika_user WITH PASSWORD 'SecurePassword123!';

CREATE DATABASE nika_production OWNER nika_user;

GRANT ALL PRIVILEGES ON DATABASE nika_production TO nika_user;

CREATE DATABASE nika_analytics OWNER nika_user;

CREATE DATABASE nika_logs OWNER nika_user;

EOF

sudo vim /etc/postgresql/13/main/postgresql.conf

# postgresql.conf (пример):

listen_addresses = 'localhost'

max_connections = 200

shared_buffers = 8GB

effective_cache_size = 24GB

maintenance_work_mem = 2GB

checkpoint_completion_target = 0.9

wal_buffers = 16MB

work_mem = 20MB

min_wal_size = 1GB

max_wal_size = 4GB

2.2.2. Redis настройка

sudo vim /etc/redis/redis.conf

bind 127.0.0.1, protected-mode yes, port 6379, save, maxmemory 4gb, maxmemory-policy allkeys-lru, appendonly yes

sudo systemctl restart redis-server

2.3. Установка Python backend

2.3.1. Создание виртуального окружения

cd /opt/nika/backend && python3.9 -m venv venv && source venv/bin/activate

pip install --upgrade pip setuptools wheel

2.3.2. Установка зависимостей

pip install -r requirements.txt

# requirements.txt: fastapi, uvicorn, pydantic, sqlalchemy, alembic, psycopg2-binary, redis, celery, tensorflow, torch, transformers, spacy, nltk и др.

2.3.3. Загрузка ML моделей

MODEL_DIR=/opt/nika/models; mkdir -p $MODEL_DIR

python -c "from transformers import AutoModel, AutoTokenizer; ..." # rubert-base-cased

python -m spacy download ru_core_news_lg

python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords'); nltk.download('wordnet')"

2.4. Настройка конфигурации

2.4.1. Создание .env (APP_NAME, DATABASE_URL, REDIS_URL, SECRET_KEY, JWT, MODEL_PATH, UPLOAD_PATH, LOG_LEVEL, ELASTICSEARCH_URL, RABBITMQ_URL, RATE_LIMIT, PROMETHEUS)

2.4.2. Инициализация базы данных

alembic upgrade head && python scripts/init_db.py

# scripts/init_db.py: create_engine, Role/User, admin@nika.local, get_password_hash

async def init_db(): ...

if __name__ == "__main__": asyncio.run(init_db())

3. УСТАНОВКА FRONTEND (Vue.js)

3.1. Подготовка Frontend приложения

3.1.1. Установка зависимостей

cd /opt/nika/frontend && npm install

# package.json: vue, vue-router, vuex, axios, socket.io-client, element-plus, chart.js, vite, typescript и др.

3.1.2. Конфигурация окружения

cat > /opt/nika/frontend/.env.production << 'EOF'

# VITE_API_BASE_URL, VITE_WS_URL, VITE_AUTH_*, VITE_MAX_FILE_SIZE, VITE_APP_TITLE=ИИ НИКА

EOF

3.1.3. Сборка приложения

npm run build && ls -la dist/

3.2. Настройка Nginx

3.2.1. Конфигурация сайта /etc/nginx/sites-available/nika

server { listen 80; server_name nika.example.com; return 301 https://$server_name$request_uri; }

server { listen 443 ssl http2; root /opt/nika/frontend/dist; try_files $uri $uri/ /index.html;

location /api { proxy_pass http://localhost:8000; proxy_set_header Host $host; }

location /ws { proxy_pass http://localhost:8000/ws; Upgrade, Connection Upgrade; }

3.2.2. Активация

sudo ln -s /etc/nginx/sites-available/nika /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx

4. УСТАНОВКА С DOCKER

4.1. Docker Compose конфигурация

version: '3.9' — services: postgres, redis, backend, frontend, celery, celery-beat, elasticsearch, kibana

volumes: postgres_data, redis_data, elastic_data; networks: nika-network

4.1.2. Dockerfile Backend: FROM python:3.9-slim, pip install -r requirements.txt, uvicorn app.main:app

4.1.3. Dockerfile Frontend: node:18-alpine build, nginx:alpine, COPY dist

4.2. Запуск

cd /opt/nika && cat > .env # SECRET_KEY, JWT_SECRET_KEY

docker-compose build && docker-compose up -d && docker-compose ps

docker-compose logs -f / docker-compose down / docker-compose down -v

5. УСТАНОВКА В KUBERNETES

5.1. Манифесты

k8s/namespace.yaml — nika-production

k8s/configmap.yaml — APP_NAME, APP_ENV, API_URL, LOG_LEVEL

k8s/secrets.yaml — DATABASE_URL, REDIS_URL, SECRET_KEY, JWT_SECRET_KEY

k8s/backend-deployment.yaml — replicas 3, resources, liveness/readiness, volumes PVC

k8s/services.yaml — ClusterIP backend/frontend

k8s/ingress.yaml — TLS, hosts nika.example.com, api.nika.example.com

5.2. Развёртывание

kubectl apply -f k8s/*.yaml

kubectl get all -n nika-production

kubectl logs -f deployment/nika-backend -n nika-production

kubectl scale deployment nika-backend --replicas=5 -n nika-production

kubectl set image deployment/nika-backend backend=registry.example.com/nika-backend:v1.1.0 -n nika-production

6. ПОСТ-УСТАНОВОЧНАЯ НАСТРОЙКА

6.1. Первоначальная настройка

6.1.1. Создание администратора

python manage.py create_admin --email admin@example.com --password AdminPass123!

curl -X POST https://api.nika.example.com/api/auth/setup -H "Content-Type: application/json" -d '{...}'

6.1.2. SSL: certbot --nginx -d nika.example.com -d api.nika.example.com; certbot renew

6.2. Мониторинг

prometheus.yml — scrape nika-backend /metrics, postgres, redis, node_exporter

6.2.2. Node Exporter: systemd unit, systemctl enable node_exporter

6.3. Резервное копирование

6.3.1. /opt/nika/scripts/backup.sh — pg_dump, redis --rdb, tar uploads/models/config

6.3.2. cron: 0 2 * * * /opt/nika/scripts/backup.sh

7. ПРОВЕРКА УСТАНОВКИ

7.1. Тестирование компонентов

curl http://localhost:8000/health

curl http://localhost:8000/api/v1/status

curl -X POST http://localhost:8000/api/auth/login -d '{"email":"admin@example.com","password":"..."}'

curl -I https://nika.example.com

wscat -c wss://nika.example.com/ws

7.2. Функциональное тестирование (Python requests: login, upload test_document.pdf)

8. УСТРАНЕНИЕ ПРОБЛЕМ

8.1. Частые проблемы

Проблема Решение

Backend не запускается БД, права, логи /opt/nika/logs

Frontend 502 nginx, статус backend

Ошибка загрузки моделей /opt/nika/models, права

WebSocket nginx proxy, firewall

PostgreSQL service, credentials

Redis status, пароль, bind

8.2. Диагностика: systemctl, netstat, tail logs, journalctl, docker/kubectl команды

9. ОБНОВЛЕНИЕ СИСТЕМЫ

9.1. Процедура update_nika.sh

backup → stop nika-backend, celery → git pull backend/frontend → pip/npm install → alembic upgrade → npm run build → start services → reload nginx

10. ДЕИНСТАЛЛЯЦИЯ

10.1. uninstall_nika.sh: подтверждение, остановка сервисов, удаление systemd units, nginx config, backup в /tmp, rm -rf /opt/nika, опционально DROP DATABASE, docker-compose down -v

11. ЗАКЛЮЧЕНИЕ

Установка системы «Искусственный интеллект НИКА» завершена.

Ключевые точки доступа:

• Web: https://nika.example.com

• API: https://api.nika.example.com

• Документация API: https://api.nika.example.com/docs

• Мониторинг: http://localhost:3000 (Grafana)

• Логи: http://localhost:5601 (Kibana)

Сделайте правильный
выбор - выберите

Индустрию
Цифровых
Инноваций

Телефон:

8 (3452) 696-001

ИНН:

7203558650

КПП:

722401001

Почта:

INFO@DI-INDUSTRY.RU

Адрес:

625019, Тюменская область, г. Тюмень,
ул. Республики,д 250, стр. 5, оф 309.