diff --git a/deploy/.gitignore b/deploy/.gitignore index d8fccee..260c3e3 100644 --- a/deploy/.gitignore +++ b/deploy/.gitignore @@ -50,8 +50,5 @@ secrets/ *.pem # Деплой -deploy.sh -nginx-setup.sh -ssl-setup.sh -dev.sh -README.md \ No newline at end of file +# deploy.sh, nginx-setup.sh, ssl-setup.sh, dev.sh теперь коммитятся (не содержат секретов) +# README.md оставлен в игноре (может содержать реальные данные) \ No newline at end of file diff --git a/deploy/backup.sh b/deploy/backup.sh index 364fa37..33c1e45 100644 --- a/deploy/backup.sh +++ b/deploy/backup.sh @@ -17,7 +17,7 @@ mkdir -p $BACKUP_DIR # Создание архива cd $APP_DIR tar -czf $BACKUP_DIR/$BACKUP_NAME \ - cabinet_service/users.db \ + users.db \ cabinet_service/media \ --exclude='cabinet_service/media/*' \ --exclude='venv' \ diff --git a/deploy/deploy.sh b/deploy/deploy.sh new file mode 100755 index 0000000..9f8f179 --- /dev/null +++ b/deploy/deploy.sh @@ -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 < /dev/null < http://127.0.0.1:$PORT" +echo "" +echo "Следующий шаг — SSL: ./ssl-setup.sh $DOMAIN" diff --git a/deploy/restore.sh b/deploy/restore.sh index 5c19509..1b05095 100644 --- a/deploy/restore.sh +++ b/deploy/restore.sh @@ -38,7 +38,7 @@ mkdir -p $APP_DIR/cabinet_service # Восстановление базы данных 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 "Восстановление медиа..." diff --git a/deploy/ssl-setup.sh b/deploy/ssl-setup.sh new file mode 100755 index 0000000..8d84f12 --- /dev/null +++ b/deploy/ssl-setup.sh @@ -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"