From bffff5a7acd6f83024a2d518f9b7de48685f390d Mon Sep 17 00:00:00 2001 From: ascet Date: Mon, 12 Jan 2026 20:39:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20scripts/deploy=5Fs.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/deploy_s.yml | 172 ++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 100 deletions(-) diff --git a/scripts/deploy_s.yml b/scripts/deploy_s.yml index cf6010d..db713a6 100644 --- a/scripts/deploy_s.yml +++ b/scripts/deploy_s.yml @@ -1,4 +1,4 @@ -name: Deploy to Production +name: Deploy via SSH on: push: @@ -13,114 +13,86 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Show structure + - name: Setup SSH run: | - echo "Структура проекта:" - ls -la - echo "Текущая директория: $(pwd)" - echo "Пользователь: $(whoami)" + echo "🔧 Настраиваем SSH соединение..." - - name: Backup current site - run: | - # Создаем бэкап в /var/backups/arseny.ahtamov.ru/ - BACKUP_DIR="/var/backups/arseny.ahtamov.ru/$(date +%Y%m%d-%H%M%S)" - echo "Создаем бэкап в: $BACKUP_DIR" - - mkdir -p "$BACKUP_DIR" - - if [ -d "/var/www/arseny.ahtamov.ru/html" ]; then - # Копируем с сохранением прав и владельцев - cp -rp /var/www/arseny.ahtamov.ru/html/* "$BACKUP_DIR/" 2>/dev/null || echo "Некоторые файлы не скопированы" - - # Создаем файл с информацией о бэкапе - echo "Backup created: $(date)" > "$BACKUP_DIR/BACKUP_INFO.txt" - echo "From: /var/www/arseny.ahtamov.ru/html" >> "$BACKUP_DIR/BACKUP_INFO.txt" - echo "Files count: $(find "$BACKUP_DIR" -type f | wc -l)" >> "$BACKUP_DIR/BACKUP_INFO.txt" - - echo "✅ Бэкап создан в: $BACKUP_DIR" - echo "📊 Файлов в бэкапе: $(find "$BACKUP_DIR" -type f | wc -l)" + # Убедимся, что ключ существует + if [ -f "/var/lib/act_runner/.ssh/id_ed25519" ]; then + echo "✅ SSH ключ найден" + chmod 600 /var/lib/act_runner/.ssh/id_ed25519 else - echo "⚠️ Целевая директория не существует, бэкап пропущен" + echo "❌ SSH ключ не найден!" + exit 1 fi - - name: Clean old backups + # Настраиваем known_hosts + ssh-keyscan -H localhost >> /var/lib/act_runner/.ssh/known_hosts 2>/dev/null || true + ssh-keyscan -H 127.0.0.1 >> /var/lib/act_runner/.ssh/known_hosts 2>/dev/null || true + + # Тестируем подключение + ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "echo '✅ SSH соединение установлено'" + + - name: Backup and deploy run: | - # Удаляем бэкапы старше 7 дней - echo "Очистка старых бэкапов (старше 7 дней)..." - find /var/backups/arseny.ahtamov.ru/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true + echo "🚀 Выполняем бэкап и деплой..." - # Показываем оставшиеся бэкапы - echo "Текущие бэкапы:" - ls -la /var/backups/arseny.ahtamov.ru/ 2>/dev/null || echo "Директория бэкапов пуста" + # Создаем бэкап + ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost " + echo '💾 Создаем бэкап...' + BACKUP_DIR=\"/var/backups/arseny.ahtamov.ru/\$(date +%Y%m%d-%H%M%S)\" + mkdir -p \"\$BACKUP_DIR\" + + if [ -d \"/var/www/arseny.ahtamov.ru/html\" ]; then + cp -rp /var/www/arseny.ahtamov.ru/html/* \"\$BACKUP_DIR/\" 2>/dev/null || echo 'Некоторые файлы не скопированы' + echo \"✅ Бэкап создан в: \$BACKUP_DIR\" + else + echo \"⚠️ Целевая директория не существует\" + fi + + # Очистка старых бэкапов + echo '🧹 Очищаем старые бэкапы...' + find /var/backups/arseny.ahtamov.ru/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true + " - - name: Deploy files + echo "📁 Копируем файлы на сервер..." + + # Копируем файлы через SCP + scp -i /var/lib/act_runner/.ssh/id_ed25519 -r ./html/* deployer@localhost:/var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Файлы скопированы" + + echo "🔧 Настраиваем права..." + + # Устанавливаем права + ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost " + chown -R deployer:www-data /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || true + find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; 2>/dev/null || true + find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; 2>/dev/null || true + " + + - name: Restart nginx run: | - echo "🚀 Начинаем деплой в /var/www/arseny.ahtamov.ru/html/" - - # Создаем целевую директорию если нет - mkdir -p /var/www/arseny.ahtamov.ru/html - - # Удаляем старые файлы (кроме .htaccess и .user.ini) - echo "Очистка старого содержимого..." - find /var/www/arseny.ahtamov.ru/html -type f ! -name '.htaccess' ! -name '.user.ini' -delete 2>/dev/null || true - find /var/www/arseny.ahtamov.ru/html -type d -mindepth 1 -exec rm -rf {} \; 2>/dev/null || true - - # Копируем новые файлы - echo "Копирование новых файлов..." - cp -r ./html/* /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Некоторые файлы не скопированы" - - echo "✅ Файлы скопированы" - - - name: Set correct permissions - run: | - echo "Установка прав..." - - # Основные права - chown -R www-data:www-data /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Не удалось изменить владельца" - - # Права на директории - find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; 2>/dev/null || true - - # Права на файлы - find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; 2>/dev/null || true - - # Специальные права для скриптов - find /var/www/arseny.ahtamov.ru/html/ -name "*.php" -exec chmod 755 {} \; 2>/dev/null || true - find /var/www/arseny.ahtamov.ru/html/ -name "*.cgi" -exec chmod 755 {} \; 2>/dev/null || true - find /var/www/arseny.ahtamov.ru/html/ -name "*.pl" -exec chmod 755 {} \; 2>/dev/null || true - find /var/www/arseny.ahtamov.ru/html/ -name "*.sh" -exec chmod 755 {} \; 2>/dev/null || true - - echo "✅ Права установлены" + echo "🔄 Перезапускаем nginx..." + ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost " + sudo nginx -t 2>/dev/null && echo '✅ Конфигурация nginx проверена' || echo '⚠️ Ошибка проверки конфигурации' + sudo systemctl reload nginx 2>/dev/null && echo '✅ Nginx перезагружен' || echo '⚠️ Не удалось перезагрузить nginx' + " - name: Verify deployment run: | - echo "🔍 Проверка деплоя..." - - echo "1. Количество файлов:" - find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l - - echo "2. Размер директории:" - du -sh /var/www/arseny.ahtamov.ru/html/ - - echo "3. Последние 5 файлов:" - ls -laht /var/www/arseny.ahtamov.ru/html/ | head -10 - - echo "4. Проверка index.html/index.php:" - if [ -f "/var/www/arseny.ahtamov.ru/html/index.html" ]; then - echo " ✅ index.html существует" - elif [ -f "/var/www/arseny.ahtamov.ru/html/index.php" ]; then - echo " ✅ index.php существует" - else - echo " ⚠️ Нет index.html или index.php" - fi - - - name: Restart nginx (if needed) - run: | - echo "🔄 Проверка конфигурации nginx..." - nginx -t 2>&1 || echo "Проверка конфигурации не удалась" - - echo "Перезагрузка nginx..." - systemctl reload nginx 2>&1 || echo "Перезагрузка через systemctl не удалась, пробуем signal..." - nginx -s reload 2>&1 || echo "Перезагрузка через signal не удалась" - - echo "✅ Деплой завершен успешно!" \ No newline at end of file + echo "🔍 Проверяем деплой..." + ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost " + echo '1. Количество файлов:' + find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l + + echo '2. Размер директории:' + du -sh /var/www/arseny.ahtamov.ru/html/ + + echo '3. Проверка index.html:' + if [ -f \"/var/www/arseny.ahtamov.ru/html/index.html\" ]; then + echo ' ✅ index.html существует' + else + echo ' ⚠️ Нет index.html' + fi + + echo '✅ Деплой завершен успешно!' + " \ No newline at end of file