feat: add deploy scripts (deploy, nginx-setup, ssl-setup) and fix backup paths

This commit is contained in:
apuc committed 2026-08-27 17:33:54 +03:00
1 parent c6048aeea0
commit a506e5b2ee
6 files changed
+167 -7

No files matched your search

+2 -5
View File
@@ -50,8 +50,5 @@ secrets/
*.pem *.pem
# Деплой # Деплой
deploy.sh # deploy.sh, nginx-setup.sh, ssl-setup.sh, dev.sh теперь коммитятся (не содержат секретов)
nginx-setup.sh # README.md оставлен в игноре (может содержать реальные данные)
ssl-setup.sh
dev.sh
README.md
+1 -1
View File
@@ -17,7 +17,7 @@ mkdir -p $BACKUP_DIR
# Создание архива # Создание архива
cd $APP_DIR cd $APP_DIR
tar -czf $BACKUP_DIR/$BACKUP_NAME \ tar -czf $BACKUP_DIR/$BACKUP_NAME \
cabinet_service/users.db \ users.db \
cabinet_service/media \ cabinet_service/media \
--exclude='cabinet_service/media/*' \ --exclude='cabinet_service/media/*' \
--exclude='venv' \ --exclude='venv' \
+75
View File
@@ -0,0 +1,75 @@
#!/bin/bash
# === Деплой ИИ Пресс-секретарь ===
# Клонирует/обновляет код, ставит зависимости, настраивает systemd-сервис.
set -e
APP_DIR="/opt/pressa"
REPO_URL="https://github.com/apuc/telegram-bussiness-bot.git"
SERVICE_NAME="pressa"
PYTHON_BIN="$APP_DIR/venv/bin/python"
echo "=== Деплой ИИ Пресс-секретарь ==="
echo ""
# 1. Клонирование или обновление кода
if [ -d "$APP_DIR/.git" ]; then
echo "[1/5] Обновление кода из git..."
cd "$APP_DIR"
git pull origin main
else
echo "[1/5] Клонирование репозитория..."
sudo mkdir -p "$APP_DIR"
sudo chown "$USER":"$USER" "$APP_DIR"
git clone "$REPO_URL" "$APP_DIR"
cd "$APP_DIR"
fi
# 2. Виртуальное окружение и зависимости
echo "[2/5] Установка зависимостей..."
if [ ! -d "$APP_DIR/venv" ]; then
python3 -m venv "$APP_DIR/venv"
fi
"$APP_DIR/venv/bin/pip" install --upgrade pip
"$APP_DIR/venv/bin/pip" install -r "$APP_DIR/requirements.txt"
# 3. Проверка .env
echo "[3/5] Проверка .env..."
if [ ! -f "$APP_DIR/.env" ]; then
echo "⚠️ Файл .env не найден!"
echo " Скопируй его на сервер: scp .env apuc@SERVER:/opt/pressa/.env"
echo " Или создай вручную по образцу config.py"
fi
# 4. systemd-сервис
echo "[4/5] Настройка systemd-сервиса..."
sudo tee /etc/systemd/system/$SERVICE_NAME.service > /dev/null <<EOF
[Unit]
Description=AI Press Secretary (Telegram bot + Cabinet)
After=network.target
[Service]
Type=simple
User=$USER
WorkingDirectory=$APP_DIR
EnvironmentFile=$APP_DIR/.env
ExecStart=$PYTHON_BIN $APP_DIR/main.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable $SERVICE_NAME
# 5. Перезапуск
echo "[5/5] Перезапуск сервиса..."
sudo systemctl restart $SERVICE_NAME
echo ""
echo "=== Деплой завершён! ==="
echo "Статус: sudo systemctl status $SERVICE_NAME"
echo "Логи: sudo journalctl -u $SERVICE_NAME -f"
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
# === Настройка Nginx для ИИ Пресс-секретарь ===
# Создаёт reverse-proxy конфиг для домена на порт 8061.
set -e
DOMAIN="${1:-press.my-dpr.ru}"
PORT="${2:-8061}"
echo "=== Настройка Nginx для $DOMAIN ==="
echo ""
# Проверяем, что конфиг ещё не существует
if [ -f "/etc/nginx/sites-available/$DOMAIN" ]; then
echo "⚠️ Конфиг /etc/nginx/sites-available/$DOMAIN уже существует."
read -p "Перезаписать? (y/N): " CONFIRM
if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
echo "Отмена"
exit 0
fi
fi
# Создаём конфиг (HTTP, SSL добавит certbot)
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <<EOF
server {
listen 80;
server_name $DOMAIN;
client_max_body_size 20M;
location / {
proxy_pass http://127.0.0.1:$PORT;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_connect_timeout 60s;
proxy_read_timeout 300s;
}
}
EOF
# Включаем сайт
sudo ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/$DOMAIN
# Проверяем конфиг
echo "Проверка конфигурации Nginx..."
sudo nginx -t
# Перезагружаем Nginx
echo "Перезагрузка Nginx..."
sudo systemctl reload nginx
echo ""
echo "=== Nginx настроен! ==="
echo "Домен: http://$DOMAIN -> http://127.0.0.1:$PORT"
echo ""
echo "Следующий шаг — SSL: ./ssl-setup.sh $DOMAIN"
+1 -1
View File
@@ -38,7 +38,7 @@ mkdir -p $APP_DIR/cabinet_service
# Восстановление базы данных # Восстановление базы данных
echo "Восстановление базы данных..." echo "Восстановление базы данных..."
tar -xzf $BACKUP_DIR/$BACKUP_FILE -C $APP_DIR cabinet_service/users.db tar -xzf $BACKUP_DIR/$BACKUP_FILE -C $APP_DIR users.db
# Восстановление медиа # Восстановление медиа
echo "Восстановление медиа..." echo "Восстановление медиа..."
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# === Настройка SSL (Let's Encrypt) для ИИ Пресс-секретарь ===
set -e
DOMAIN="${1:-press.my-dpr.ru}"
echo "=== Настройка SSL для $DOMAIN ==="
echo ""
# Проверяем наличие certbot
if ! command -v certbot &> /dev/null; then
echo "Установка certbot..."
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
fi
# Выпускаем сертификат и настраиваем Nginx автоматически
echo "Выпуск SSL-сертификата..."
sudo certbot --nginx -d "$DOMAIN" --non-interactive --agree-tos --redirect
echo ""
echo "=== SSL настроен! ==="
echo "Домен: https://$DOMAIN"
echo ""
echo "Проверка:"
echo " sudo certbot certificates"
echo " sudo systemctl status nginx"