🔧 Исправлена синтаксическая ошибка и улучшена система развертывания
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 "❌ Развертывание отменено"; \
|
||||
fi
|
||||
|
||||
deploy-force: ## Принудительное развертывание без проверок
|
||||
@echo "🚀 Принудительное развертывание CatLink..."
|
||||
@echo "⚠️ Пропуск проверки готовности системы"
|
||||
@./scripts/master-deploy.sh --skip-checks
|
||||
|
||||
quick-deploy: ## Быстрое развертывание без полной настройки
|
||||
@echo "⚡ Быстрое развертывание CatLink..."
|
||||
@./scripts/quick-deploy.sh
|
||||
|
||||
pre-deploy-check: ## Проверка готовности системы к развертыванию
|
||||
@echo "🔍 Проверка готовности системы..."
|
||||
@./scripts/pre-deploy-check.sh
|
||||
|
||||
pre-deploy-check-force: ## Проверка готовности (игнорировать предупреждения)
|
||||
@echo "🔍 Проверка готовности системы (игнорировать предупреждения)..."
|
||||
@./scripts/pre-deploy-check.sh || echo "⚠️ Есть предупреждения, но продолжаем..."
|
||||
|
||||
# === SSL and Security ===
|
||||
|
||||
ssl-setup: ## Настройка SSL сертификатов
|
||||
|
||||
@@ -487,15 +487,6 @@ PYTHON_EOF
|
||||
|
||||
# Удаляем временный файл
|
||||
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
|
||||
@@ -680,6 +671,17 @@ main() {
|
||||
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
|
||||
error "Файл docker-compose.yml не найден. Запустите скрипт из корня проекта."
|
||||
@@ -689,7 +691,20 @@ main() {
|
||||
mkdir -p {logs,backups,scripts}
|
||||
|
||||
# Основной процесс развертывания
|
||||
check_requirements
|
||||
if [ "$SKIP_CHECKS" = false ]; then
|
||||
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
|
||||
generate_env_file
|
||||
setup_nginx
|
||||
|
||||
@@ -222,15 +222,24 @@ fi
|
||||
# Итоговая сводка
|
||||
echo ""
|
||||
echo "📊 ===== ИТОГОВАЯ СВОДКА ====="
|
||||
echo "Ошибки: $ERRORS, Предупреждения: $WARNINGS"
|
||||
echo ""
|
||||
|
||||
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
|
||||
success "Система полностью готова к развертыванию!"
|
||||
echo ""
|
||||
echo "🚀 Можете запускать: make deploy"
|
||||
EXIT_CODE=0
|
||||
elif [ $ERRORS -eq 0 ]; then
|
||||
warning "Система готова к развертыванию с предупреждениями ($WARNINGS)"
|
||||
echo ""
|
||||
echo "⚡ Можете запускать: make deploy"
|
||||
echo " (предупреждения будут обработаны автоматически)"
|
||||
echo ""
|
||||
echo "📋 Найденные предупреждения не критичны:"
|
||||
echo " - Мало RAM: рекомендуется 2GB, но 1GB достаточно для базовой работы"
|
||||
echo " - Другие предупреждения можно проигнорировать"
|
||||
EXIT_CODE=0
|
||||
else
|
||||
error "Обнаружены критические проблемы ($ERRORS ошибок, $WARNINGS предупреждений)"
|
||||
echo ""
|
||||
@@ -238,7 +247,7 @@ else
|
||||
echo " - Установите недостающие компоненты"
|
||||
echo " - Освободите дисковое пространство"
|
||||
echo " - Настройте права доступа"
|
||||
exit 1
|
||||
EXIT_CODE=1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -248,4 +257,4 @@ echo " make deploy - Запустить полное разверты
|
||||
echo " make security-audit - Проверить безопасность"
|
||||
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