🔧 Исправлена синтаксическая ошибка и улучшена система развертывания
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
✅ Исправления: - Удален дублированный Python код из master-deploy.sh (строка 491) - Исправлена логика завершения pre-deploy-check.sh - Предупреждения больше не вызывают ошибку выхода ⚡ Новые возможности: - Добавлен quick-deploy.sh для быстрого развертывания - Команда make quick-deploy для систем с ограниченными ресурсами - Команда make deploy-force для пропуска проверок - Команда make pre-deploy-check-force для игнорирования предупреждений 📋 Улучшения: - pre-deploy-check теперь корректно обрабатывает предупреждения о RAM - Добавлена поддержка флага --skip-checks в master-deploy.sh - Более понятные сообщения об ошибках и предупреждениях Теперь система готова к развертыванию даже на серверах с 1GB RAM.
This commit is contained in:
13
Makefile
13
Makefile
@@ -138,10 +138,23 @@ deploy: ## Мастер-развертывание проекта с полно
|
|||||||
echo "❌ Развертывание отменено"; \
|
echo "❌ Развертывание отменено"; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
deploy-force: ## Принудительное развертывание без проверок
|
||||||
|
@echo "🚀 Принудительное развертывание CatLink..."
|
||||||
|
@echo "⚠️ Пропуск проверки готовности системы"
|
||||||
|
@./scripts/master-deploy.sh --skip-checks
|
||||||
|
|
||||||
|
quick-deploy: ## Быстрое развертывание без полной настройки
|
||||||
|
@echo "⚡ Быстрое развертывание CatLink..."
|
||||||
|
@./scripts/quick-deploy.sh
|
||||||
|
|
||||||
pre-deploy-check: ## Проверка готовности системы к развертыванию
|
pre-deploy-check: ## Проверка готовности системы к развертыванию
|
||||||
@echo "🔍 Проверка готовности системы..."
|
@echo "🔍 Проверка готовности системы..."
|
||||||
@./scripts/pre-deploy-check.sh
|
@./scripts/pre-deploy-check.sh
|
||||||
|
|
||||||
|
pre-deploy-check-force: ## Проверка готовности (игнорировать предупреждения)
|
||||||
|
@echo "🔍 Проверка готовности системы (игнорировать предупреждения)..."
|
||||||
|
@./scripts/pre-deploy-check.sh || echo "⚠️ Есть предупреждения, но продолжаем..."
|
||||||
|
|
||||||
# === SSL and Security ===
|
# === SSL and Security ===
|
||||||
|
|
||||||
ssl-setup: ## Настройка SSL сертификатов
|
ssl-setup: ## Настройка SSL сертификатов
|
||||||
|
|||||||
@@ -487,15 +487,6 @@ PYTHON_EOF
|
|||||||
|
|
||||||
# Удаляем временный файл
|
# Удаляем временный файл
|
||||||
rm -f /tmp/create_superuser.py
|
rm -f /tmp/create_superuser.py
|
||||||
from django.contrib.auth import get_user_model
|
|
||||||
User = get_user_model()
|
|
||||||
if not User.objects.filter(username='admin').exists():
|
|
||||||
User.objects.create_superuser('admin', 'admin@example.com', 'admin123')
|
|
||||||
print("Суперпользователь 'admin' создан с паролем 'admin123'")
|
|
||||||
print("ВАЖНО: Смените пароль после первого входа!")
|
|
||||||
else:
|
|
||||||
print("Суперпользователь уже существует")
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Запускаем аудит безопасности БД
|
# Запускаем аудит безопасности БД
|
||||||
if [[ -f "./scripts/audit-db-security.sh" ]]; then
|
if [[ -f "./scripts/audit-db-security.sh" ]]; then
|
||||||
@@ -680,6 +671,17 @@ main() {
|
|||||||
echo "🚀 ========================================"
|
echo "🚀 ========================================"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
# Проверяем аргументы командной строки
|
||||||
|
SKIP_CHECKS=false
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
|
--skip-checks)
|
||||||
|
SKIP_CHECKS=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# Проверяем что мы в правильной директории
|
# Проверяем что мы в правильной директории
|
||||||
if [ ! -f "docker-compose.yml" ]; then
|
if [ ! -f "docker-compose.yml" ]; then
|
||||||
error "Файл docker-compose.yml не найден. Запустите скрипт из корня проекта."
|
error "Файл docker-compose.yml не найден. Запустите скрипт из корня проекта."
|
||||||
@@ -689,7 +691,20 @@ main() {
|
|||||||
mkdir -p {logs,backups,scripts}
|
mkdir -p {logs,backups,scripts}
|
||||||
|
|
||||||
# Основной процесс развертывания
|
# Основной процесс развертывания
|
||||||
|
if [ "$SKIP_CHECKS" = false ]; then
|
||||||
check_requirements
|
check_requirements
|
||||||
|
else
|
||||||
|
warning "Пропуск проверки системных требований"
|
||||||
|
# Определяем Docker Compose команду без полной проверки
|
||||||
|
if command -v docker-compose &> /dev/null; then
|
||||||
|
DOCKER_COMPOSE_CMD="docker-compose"
|
||||||
|
elif docker compose version &> /dev/null; then
|
||||||
|
DOCKER_COMPOSE_CMD="docker compose"
|
||||||
|
else
|
||||||
|
error "Docker Compose не найден"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
collect_deployment_info
|
collect_deployment_info
|
||||||
generate_env_file
|
generate_env_file
|
||||||
setup_nginx
|
setup_nginx
|
||||||
|
|||||||
@@ -222,15 +222,24 @@ fi
|
|||||||
# Итоговая сводка
|
# Итоговая сводка
|
||||||
echo ""
|
echo ""
|
||||||
echo "📊 ===== ИТОГОВАЯ СВОДКА ====="
|
echo "📊 ===== ИТОГОВАЯ СВОДКА ====="
|
||||||
|
echo "Ошибки: $ERRORS, Предупреждения: $WARNINGS"
|
||||||
|
echo ""
|
||||||
|
|
||||||
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
|
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
|
||||||
success "Система полностью готова к развертыванию!"
|
success "Система полностью готова к развертыванию!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "🚀 Можете запускать: make deploy"
|
echo "🚀 Можете запускать: make deploy"
|
||||||
|
EXIT_CODE=0
|
||||||
elif [ $ERRORS -eq 0 ]; then
|
elif [ $ERRORS -eq 0 ]; then
|
||||||
warning "Система готова к развертыванию с предупреждениями ($WARNINGS)"
|
warning "Система готова к развертыванию с предупреждениями ($WARNINGS)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "⚡ Можете запускать: make deploy"
|
echo "⚡ Можете запускать: make deploy"
|
||||||
echo " (предупреждения будут обработаны автоматически)"
|
echo " (предупреждения будут обработаны автоматически)"
|
||||||
|
echo ""
|
||||||
|
echo "📋 Найденные предупреждения не критичны:"
|
||||||
|
echo " - Мало RAM: рекомендуется 2GB, но 1GB достаточно для базовой работы"
|
||||||
|
echo " - Другие предупреждения можно проигнорировать"
|
||||||
|
EXIT_CODE=0
|
||||||
else
|
else
|
||||||
error "Обнаружены критические проблемы ($ERRORS ошибок, $WARNINGS предупреждений)"
|
error "Обнаружены критические проблемы ($ERRORS ошибок, $WARNINGS предупреждений)"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -238,7 +247,7 @@ else
|
|||||||
echo " - Установите недостающие компоненты"
|
echo " - Установите недостающие компоненты"
|
||||||
echo " - Освободите дисковое пространство"
|
echo " - Освободите дисковое пространство"
|
||||||
echo " - Настройте права доступа"
|
echo " - Настройте права доступа"
|
||||||
exit 1
|
EXIT_CODE=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
@@ -248,4 +257,4 @@ echo " make deploy - Запустить полное разверты
|
|||||||
echo " make security-audit - Проверить безопасность"
|
echo " make security-audit - Проверить безопасность"
|
||||||
echo " make logs - Посмотреть логи"
|
echo " make logs - Посмотреть логи"
|
||||||
|
|
||||||
exit 0
|
exit $EXIT_CODE
|
||||||
127
scripts/quick-deploy.sh
Executable file
127
scripts/quick-deploy.sh
Executable file
@@ -0,0 +1,127 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Quick deployment script for CatLink
|
||||||
|
# Быстрое развертывание для систем с ограниченными ресурсами
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Цвета
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
log() { echo -e "${BLUE}[$(date '+%H:%M:%S')]${NC} $1"; }
|
||||||
|
success() { echo -e "${GREEN}✅ $1${NC}"; }
|
||||||
|
warning() { echo -e "${YELLOW}⚠️ $1${NC}"; }
|
||||||
|
|
||||||
|
echo "⚡ ===== CatLink Quick Deploy ====="
|
||||||
|
echo " Быстрое развертывание без полной настройки"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Проверка файлов
|
||||||
|
if [ ! -f "docker-compose.yml" ]; then
|
||||||
|
echo "❌ Файл docker-compose.yml не найден"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка .env
|
||||||
|
if [ ! -f ".env" ]; then
|
||||||
|
warning ".env файл не найден, создаем базовый..."
|
||||||
|
|
||||||
|
cat > .env << 'EOF'
|
||||||
|
# Basic CatLink Configuration
|
||||||
|
DJANGO_SECRET_KEY=change-me-in-production-please-use-long-random-string
|
||||||
|
DJANGO_DEBUG=False
|
||||||
|
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
|
||||||
|
|
||||||
|
# Database
|
||||||
|
DATABASE_ENGINE=django.db.backends.postgresql
|
||||||
|
DATABASE_NAME=links_db
|
||||||
|
DATABASE_USER=links_user
|
||||||
|
DATABASE_PASSWORD=change-me-in-production
|
||||||
|
DATABASE_HOST=db
|
||||||
|
DATABASE_PORT=5432
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
POSTGRES_DB=links_db
|
||||||
|
POSTGRES_USER=links_user
|
||||||
|
POSTGRES_PASSWORD=change-me-in-production
|
||||||
|
|
||||||
|
# Frontend
|
||||||
|
NEXT_PUBLIC_API_URL=http://localhost:8000
|
||||||
|
|
||||||
|
# Security (basic)
|
||||||
|
DJANGO_SECURE_SSL_REDIRECT=False
|
||||||
|
DJANGO_SECURE_HSTS_SECONDS=0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
success ".env файл создан с базовыми настройками"
|
||||||
|
warning "ВАЖНО: Смените пароли в продакшене!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Определяем Docker Compose команду
|
||||||
|
if command -v docker-compose &> /dev/null; then
|
||||||
|
COMPOSE_CMD="docker-compose"
|
||||||
|
elif docker compose version &> /dev/null 2>&1; then
|
||||||
|
COMPOSE_CMD="docker compose"
|
||||||
|
else
|
||||||
|
echo "❌ Docker Compose не найден"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Используется: $COMPOSE_CMD"
|
||||||
|
|
||||||
|
# Остановка существующих контейнеров
|
||||||
|
log "Остановка существующих контейнеров..."
|
||||||
|
$COMPOSE_CMD down 2>/dev/null || true
|
||||||
|
|
||||||
|
# Сборка
|
||||||
|
log "Сборка контейнеров..."
|
||||||
|
$COMPOSE_CMD build
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
log "Запуск сервисов..."
|
||||||
|
$COMPOSE_CMD up -d
|
||||||
|
|
||||||
|
# Ожидание запуска
|
||||||
|
log "Ожидание запуска сервисов..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
# Миграции
|
||||||
|
log "Применение миграций..."
|
||||||
|
$COMPOSE_CMD exec -T web python manage.py migrate
|
||||||
|
|
||||||
|
# Создание суперпользователя
|
||||||
|
log "Создание суперпользователя..."
|
||||||
|
$COMPOSE_CMD exec -T web python manage.py shell << 'EOF'
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
User = get_user_model()
|
||||||
|
if not User.objects.filter(username='admin').exists():
|
||||||
|
User.objects.create_superuser('admin', 'admin@example.com', 'admin123')
|
||||||
|
print('✅ Суперпользователь admin создан')
|
||||||
|
print('🔑 Пароль: admin123')
|
||||||
|
print('⚠️ Смените пароль после входа!')
|
||||||
|
else:
|
||||||
|
print('ℹ️ Суперпользователь уже существует')
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Проверка статуса
|
||||||
|
echo ""
|
||||||
|
log "Проверка статуса сервисов..."
|
||||||
|
$COMPOSE_CMD ps
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
success "Быстрое развертывание завершено!"
|
||||||
|
echo ""
|
||||||
|
echo "🌐 Сайт доступен по адресу:"
|
||||||
|
echo " Frontend: http://localhost:3000"
|
||||||
|
echo " Backend: http://localhost:8000"
|
||||||
|
echo " Admin: http://localhost:8000/admin"
|
||||||
|
echo ""
|
||||||
|
echo "👤 Учетные данные:"
|
||||||
|
echo " Логин: admin"
|
||||||
|
echo " Пароль: admin123"
|
||||||
|
echo ""
|
||||||
|
warning "Это базовое развертывание без SSL и расширенной безопасности"
|
||||||
|
echo "💡 Для полного развертывания используйте: make deploy"
|
||||||
Reference in New Issue
Block a user