diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d772847..1b80740 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,76 +1,129 @@ +cd /var/www/WWW +cat > .gitea/workflows/deploy.yml << 'EOF' name: Deploy to Production on: push: branches: [main, master] - workflow_dispatch: # Ручной запуск из интерфейса + workflow_dispatch: jobs: deploy: - runs-on: self-hosted # Используем ваш act_runner без Docker + runs-on: self-hosted steps: - name: Checkout code uses: actions/checkout@v4 - with: - fetch-depth: 0 - + - name: Show structure run: | echo "Структура проекта:" ls -la echo "Текущая директория: $(pwd)" + echo "Пользователь: $(whoami)" - name: Backup current site run: | - BACKUP_DIR="/var/backups/arseny.ahtamovru.ru/$(date +%Y%m%d-%H%M%S)" - echo "Backup будет создан в: $BACKUP_DIR" - mkdir -p $BACKUP_DIR - cp -r /var/www/arseny.ahtamov.ru/html/* $BACKUP_DIR/ 2>/dev/null || true - echo "Backup создан в: $BACKUP_DIR" + # Создаем бэкап в /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)" + else + echo "⚠️ Целевая директория не существует, бэкап пропущен" + fi + + - name: Clean old backups + run: | + # Удаляем бэкапы старше 7 дней + echo "Очистка старых бэкапов (старше 7 дней)..." + find /var/backups/arseny.ahtamov.ru/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true + + # Показываем оставшиеся бэкапы + echo "Текущие бэкапы:" + ls -la /var/backups/arseny.ahtamov.ru/ 2>/dev/null || echo "Директория бэкапов пуста" - name: Deploy files run: | - echo "Деплой файлов в /var/www/arseny.ahtamov.ru/html/" + echo "🚀 Начинаем деплой в /var/www/arseny.ahtamov.ru/html/" - # Удаляем старые файлы (кроме скрытых системных) - find /var/www/arseny.ahtamov.ru/html/ -type f \ - ! -name '.htaccess' \ - ! -name '.user.ini' \ - ! -name '.well-known' \ - -delete 2>/dev/null || true + # Создаем целевую директорию если нет + 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 # Копируем новые файлы - cp -r ./* /var/www/arseny.ahtamov.ru/html/ + echo "Копирование новых файлов..." + cp -r ./html/* /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Некоторые файлы не скопированы" - # Устанавливаем правильные права - chown -R www-data:www-data /var/www/arseny.ahtamov.ru/html/ - find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; - find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; + 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 - - name: Restart nginx - run: | - echo "Проверяем конфигурацию nginx" - nginx -t - - echo "Перезагружаем nginx" - systemctl reload nginx || nginx -s reload - - echo "Проверяем статус nginx" - systemctl status nginx --no-pager || true + echo "✅ Права установлены" - name: Verify deployment run: | - echo "Проверка деплоя:" - echo "Количество файлов в целевой директории:" + echo "🔍 Проверка деплоя..." + + echo "1. Количество файлов:" find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l - echo "Размер директории:" + echo "2. Размер директории:" du -sh /var/www/arseny.ahtamov.ru/html/ - echo "Последние измененные файлы:" - ls -lht /var/www/arseny.ahtamov.ru/html/ | head -10 + 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 "✅ Деплой завершен успешно!" +EOF \ No newline at end of file