diff --git a/.gitea/workflows/deploy2.yml b/.gitea/workflows/deploy2.yml new file mode 100644 index 0000000..e931a74 --- /dev/null +++ b/.gitea/workflows/deploy2.yml @@ -0,0 +1,70 @@ +name: Deploy to Production + +on: + push: + branches: [main, master] + workflow_dispatch: + +jobs: + deploy: + runs-on: self-hosted + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Show structure + run: | + echo "Структура проекта:" + ls -la + echo "Текущая директория: $(pwd)" + + - name: Prepare for deployment + run: | + echo "Проверяем права на целевой директории..." + ls -la /var/www/arseny.ahtamov.ru/ + echo "Пользователь: $(whoami)" + + - name: Backup current site (optional) + run: | + # Создаем бэкап во временной директории + BACKUP_DIR="/tmp/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 -r /var/www/arseny.ahtamov.ru/html/* "$BACKUP_DIR/" 2>/dev/null || true + echo "Backup создан в: $BACKUP_DIR" + else + echo "Целевая директория не существует, бэкап пропущен" + fi + + - name: Deploy files + run: | + echo "Деплой файлов в /var/www/arseny.ahtamov.ru/html/" + + # Создаем целевую директорию если нет + mkdir -p /var/www/arseny.ahtamov.ru/html + + # Копируем файлы (без удаления существующих скрытых файлов) + # Используем rsync для более безопасного копирования + rsync -av --exclude='.*' --exclude='.git*' ./html/ /var/www/arseny.ahtamov.ru/html/ + + - name: Set correct permissions + run: | + # Меняем владельца на www-data для веб-сервера + chown -R www-data:www-data /var/www/arseny.ahtamov.ru/html/ || true + + # Устанавливаем безопасные права + find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; || true + find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; || true + + # Для PHP/CGI скриптов (если есть) даем права на выполнение + 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 + + - name: Verify deployment + run: | + echo "Проверка деплоя:" + echo "Количество файлов в целевой директории:" + find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l + echo "Размер директории:" + du -sh /var/www/arseny.ahtamov.ru/html/ diff --git a/.gitea/workflows/deploy_s.yml b/.gitea/workflows/deploy_s.yml new file mode 100644 index 0000000..43a5ee5 --- /dev/null +++ b/.gitea/workflows/deploy_s.yml @@ -0,0 +1,126 @@ +name: Deploy to Production + +on: + push: + branches: [main, master] + workflow_dispatch: + +jobs: + deploy: + runs-on: self-hosted + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Show structure + run: | + echo "Структура проекта:" + ls -la + echo "Текущая директория: $(pwd)" + echo "Пользователь: $(whoami)" + + - 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)" + 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/" + + # Создаем целевую директорию если нет + 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 "✅ Права установлены" + + - 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 "✅ Деплой завершен успешно!"