Files
smartsoltech_site/docs/DEPLOYMENT.md
Andrey K. Choi 19d523213b 📚 Project restructuring and CI/CD setup
 Major reorganization:
- Move all documentation to docs/ directory
- Clean up root directory from temporary files
- Add comprehensive project documentation
- Implement Drone CI/CD pipeline

📁 Structure changes:
- docs/SCRIPTS_README.md - Complete scripts guide
- docs/DEPLOYMENT.md - Production deployment guide
- docs/API.md - Comprehensive API documentation
- patch/ - Temporary and test files
- Clean .gitignore with proper exclusions

🚀 CI/CD Pipeline (.drone.yml):
- Code quality checks (flake8, black, bandit)
- Unit and integration testing
- Docker image building and security scanning
- Staging deployment automation
- Production deployment on tags
- Telegram notifications
- Scheduled maintenance tasks

📖 Enhanced README.md:
- Technology stack badges with icons
- Drone CI build status badge
- Comprehensive quick start guide
- Clear project architecture
- Links to all documentation

🔧 Additional improvements:
- MIT License added
- .gitkeep files for important directories
- Improved .gitignore patterns
- Professional project presentation

🎯 Result: Clean, professional project structure ready for production
2025-11-25 07:00:36 +09:00

7.9 KiB
Raw Permalink Blame History

🚀 Руководство по развертыванию SmartSolTech

📋 Подготовка сервера

Системные требования

  • OS: Ubuntu 20.04+ / CentOS 8+ / Debian 11+
  • RAM: Минимум 2GB, рекомендуется 4GB+
  • Storage: Минимум 20GB свободного места
  • Network: Открытые порты 80, 443, 8000, 5432, 8080

Установка Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# Добавление пользователя в группу docker
sudo usermod -aG docker $USER

# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

🔧 Настройка проекта

1. Клонирование репозитория

git clone https://github.com/smartsoltech/smartsoltech.kr.git
cd smartsoltech.kr

2. Конфигурация переменных окружения

# Копирование примера конфигурации
cp smartsoltech/.env.example smartsoltech/.env

# Редактирование конфигурации
nano smartsoltech/.env

Основные переменные:

DEBUG=False
SECRET_KEY=your-super-secret-key
DATABASE_URL=postgresql://user:password@postgres_db:5432/smartsoltech
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com

3. Настройка Telegram Bot

# Обновление токена бота
./bin/update_telegram_token.py

# Или через CLI
./cli manage set_telegram_token <YOUR_BOT_TOKEN>

🚀 Развертывание

Автоматическое развертывание

# Полное обновление и запуск
./update

# Проверка статуса
./cli status

Пошаговое развертывание

# 1. Остановка старых контейнеров
./stop

# 2. Сборка образов
docker-compose build --no-cache

# 3. Запуск сервисов
docker-compose up -d

# 4. Выполнение миграций
./cli migrate

# 5. Создание суперпользователя
./cli createsuperuser

# 6. Сбор статических файлов
./cli collectstatic

🔒 Настройка SSL/HTTPS

Использование Let's Encrypt

# Установка Certbot
sudo apt install certbot python3-certbot-nginx

# Получение сертификата
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# Настройка автообновления
sudo crontab -e
# Добавить: 0 12 * * * /usr/bin/certbot renew --quiet

Настройка Nginx

# /etc/nginx/sites-available/smartsoltech
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /path/to/smartsoltech.kr/smartsoltech/staticfiles/;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    location /media/ {
        alias /path/to/smartsoltech.kr/smartsoltech/media/;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

📊 Мониторинг и логи

Системные логи

# Логи всех сервисов
./logs

# Логи конкретного сервиса
./logs web
./logs db
./logs pgadmin

# Последние 100 строк
./logs --tail 100

Мониторинг ресурсов

# Использование ресурсов контейнерами
docker stats

# Размер образов и контейнеров
docker system df

# Проверка дискового пространства
df -h

Health Checks

# Проверка состояния сервисов
./cli status

# Подключение к базе данных
./cli dbshell

# Проверка Django
./cli check

🔄 Backup и восстановление

Настройка автоматических бэкапов

# Настройка backup репозитория
./bin/setup-backup.sh git@backup-server.com:backups/smartsoltech.git

# Добавление в crontab
crontab -e
# Добавить: 0 2 * * * cd /path/to/smartsoltech.kr && ./update origin backup

Backup базы данных

# Создание дампа БД
docker-compose exec postgres_db pg_dump -U postgres smartsoltech > backup_$(date +%Y%m%d).sql

# Восстановление из дампа
docker-compose exec -i postgres_db psql -U postgres smartsoltech < backup_20231125.sql

Backup медиафайлов

# Создание архива медиафайлов
tar -czf media_backup_$(date +%Y%m%d).tar.gz smartsoltech/media/

# Восстановление медиафайлов
tar -xzf media_backup_20231125.tar.gz

🚨 Troubleshooting

Частые проблемы

1. Контейнер не запускается

# Проверка логов
./logs web

# Пересборка образов
./stop --clean
./update

2. Ошибки базы данных

# Проверка подключения к БД
./cli dbshell

# Проверка миграций
./cli showmigrations

# Сброс миграций (ОСТОРОЖНО!)
./cli migrate --fake-initial

3. Проблемы с статическими файлами

# Пересбор статики
./cli collectstatic --clear

# Проверка прав доступа
./cli exec ls -la /app/smartsoltech/staticfiles/

Логи для диагностики

# Django логи
./logs web

# База данных логи  
./logs db

# Nginx логи (если используется)
sudo tail -f /var/log/nginx/error.log

# Системные логи
sudo journalctl -u docker.service

📈 Оптимизация производительности

Настройки Django

# smartsoltech/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'OPTIONS': {
            'MAX_CONNS': 20,
            'conn_max_age': 600,
        }
    }
}

# Кэширование
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://redis:6379/1',
    }
}

Docker оптимизации

# docker-compose.yml
services:
  web:
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          memory: 256M

🔐 Безопасность

Основные рекомендации

  1. Обновление системы:

    sudo apt update && sudo apt upgrade
    
  2. Настройка Firewall:

    sudo ufw enable
    sudo ufw allow ssh
    sudo ufw allow 80
    sudo ufw allow 443
    
  3. Ограничение доступа к админке:

    # settings.py
    ADMIN_URL = 'secret-admin-url/'
    
  4. Регулярные обновления:

    # Еженедельное обновление
    ./update
    

🎯 Следующие шаги: API документация | Управление скриптами