✨ 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
7.9 KiB
7.9 KiB
🚀 Руководство по развертыванию 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
🔐 Безопасность
Основные рекомендации
-
Обновление системы:
sudo apt update && sudo apt upgrade -
Настройка Firewall:
sudo ufw enable sudo ufw allow ssh sudo ufw allow 80 sudo ufw allow 443 -
Ограничение доступа к админке:
# settings.py ADMIN_URL = 'secret-admin-url/' -
Регулярные обновления:
# Еженедельное обновление ./update
🎯 Следующие шаги: API документация | Управление скриптами