This commit is contained in:
2026-05-11 22:08:50 +03:00
commit 9f4bf13276
11 changed files with 618 additions and 0 deletions

78
init.sh Normal file
View File

@@ -0,0 +1,78 @@
#!/usr/bin/env bash
# init.sh - Инициализация проекта OzonGuard на Ubuntu Linux
# ---------------------------------------------------------
# 1⃣ Проверка наличия Python
if ! command -v python3 >/dev/null 2>&1; then
echo "Error: Python3 не найден в PATH. Установите Python 3.9+ и повторите." >&2
exit 1
fi
# 2⃣ Создание виртуального окружения
VENV_DIR="venv"
if [ ! -d "$VENV_DIR" ]; then
python3 -m venv "$VENV_DIR"
echo "Виртуальное окружение создано в $VENV_DIR"
else
echo "Виртуальное окружение уже существует"
fi
# 3⃣ Активация venv
# shellcheck source=/dev/null
source "$VENV_DIR/bin/activate"
if [ $? -ne 0 ]; then
echo "Error: Не удалось активировать виртуальное окружение" >&2
exit 1
fi
echo "Виртуальное окружение активировано"
# 4⃣ Установка зависимостей backend
REQ_FILE="backend/requirements.txt"
if [ -f "$REQ_FILE" ]; then
pip install -r "$REQ_FILE"
echo "Зависимости backend установлены"
else
echo "Warning: requirements.txt не найден, пропускаем установку backend зависимостей"
fi
# 5⃣ Инициализация базы данных (если установлен psql)
if command -v psql >/dev/null 2>&1; then
INIT_SQL="db/init.sql"
if [ -f "$INIT_SQL" ]; then
ENV_FILE="backend/.env"
if [ -f "$ENV_FILE" ]; then
# Читаем DATABASE_URL из .env
DB_URL=$(grep '^DATABASE_URL=' "$ENV_FILE" | cut -d'=' -f2-)
if [ -n "$DB_URL" ]; then
# Преобразуем URL вида postgresql://user:pass@host:port/db
# Используем pgsql параметр -d <db> -h <host> -p <port> -U <user>
# Сохраняем пароль в переменной окружения PGPASSWORD
URI=$(python3 -c "import sys, urllib.parse as u; print(u.urlparse('$DB_URL')._replace(scheme=''))." )
# Extract components using awk (fallback if python not available)
USER=$(echo "$DB_URL" | sed -E 's|postgresql://([^:]+):([^@]+)@.*|\1|')
PASS=$(echo "$DB_URL" | sed -E 's|postgresql://([^:]+):([^@]+)@.*|\2|')
HOST=$(echo "$DB_URL" | sed -E 's|postgresql://[^@]+@([^:/]+).*|\1|')
PORT=$(echo "$DB_URL" | sed -E 's|postgresql://[^@]+@[^:]+:([0-9]+).*|\1|')
DBNAME=$(echo "$DB_URL" | sed -E 's|.*/([^?]+).*|\1|')
export PGPASSWORD="$PASS"
echo "Инициализируем базу данных..."
psql -h "$HOST" -p "${PORT:-5432}" -U "$USER" -d "$DBNAME" -f "$INIT_SQL"
echo "База данных инициализирована"
unset PGPASSWORD
else
echo "Warning: DATABASE_URL не найден в .env, пропускаем инициализацию БД"
fi
else
echo "Warning: .env файл не найден, пропускаем инициализацию БД"
fi
else
echo "Warning: init.sql не найден, пропускаем инициализацию БД"
fi
else
echo "Warning: psql не найден в PATH. Запустите 'psql -f db/init.sql' вручную, используя параметры из .env."
fi
# 6⃣ Запуск Flask сервера
echo "Запуск Flask сервера..."
python3 backend/app.py