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

352 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Руководство по развертыванию SmartSolTech
## 📋 Подготовка сервера
### Системные требования
- **OS**: Ubuntu 20.04+ / CentOS 8+ / Debian 11+
- **RAM**: Минимум 2GB, рекомендуется 4GB+
- **Storage**: Минимум 20GB свободного места
- **Network**: Открытые порты 80, 443, 8000, 5432, 8080
### Установка Docker
```bash
# 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. Клонирование репозитория
```bash
git clone https://github.com/smartsoltech/smartsoltech.kr.git
cd smartsoltech.kr
```
### 2. Конфигурация переменных окружения
```bash
# Копирование примера конфигурации
cp smartsoltech/.env.example smartsoltech/.env
# Редактирование конфигурации
nano smartsoltech/.env
```
**Основные переменные:**
```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
```bash
# Обновление токена бота
./bin/update_telegram_token.py
# Или через CLI
./cli manage set_telegram_token <YOUR_BOT_TOKEN>
```
## 🚀 Развертывание
### Автоматическое развертывание
```bash
# Полное обновление и запуск
./update
# Проверка статуса
./cli status
```
### Пошаговое развертывание
```bash
# 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
```bash
# Установка 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
```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";
}
}
```
## 📊 Мониторинг и логи
### Системные логи
```bash
# Логи всех сервисов
./logs
# Логи конкретного сервиса
./logs web
./logs db
./logs pgadmin
# Последние 100 строк
./logs --tail 100
```
### Мониторинг ресурсов
```bash
# Использование ресурсов контейнерами
docker stats
# Размер образов и контейнеров
docker system df
# Проверка дискового пространства
df -h
```
### Health Checks
```bash
# Проверка состояния сервисов
./cli status
# Подключение к базе данных
./cli dbshell
# Проверка Django
./cli check
```
## 🔄 Backup и восстановление
### Настройка автоматических бэкапов
```bash
# Настройка 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 базы данных
```bash
# Создание дампа БД
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 медиафайлов
```bash
# Создание архива медиафайлов
tar -czf media_backup_$(date +%Y%m%d).tar.gz smartsoltech/media/
# Восстановление медиафайлов
tar -xzf media_backup_20231125.tar.gz
```
## 🚨 Troubleshooting
### Частые проблемы
**1. Контейнер не запускается**
```bash
# Проверка логов
./logs web
# Пересборка образов
./stop --clean
./update
```
**2. Ошибки базы данных**
```bash
# Проверка подключения к БД
./cli dbshell
# Проверка миграций
./cli showmigrations
# Сброс миграций (ОСТОРОЖНО!)
./cli migrate --fake-initial
```
**3. Проблемы с статическими файлами**
```bash
# Пересбор статики
./cli collectstatic --clear
# Проверка прав доступа
./cli exec ls -la /app/smartsoltech/staticfiles/
```
### Логи для диагностики
```bash
# Django логи
./logs web
# База данных логи
./logs db
# Nginx логи (если используется)
sudo tail -f /var/log/nginx/error.log
# Системные логи
sudo journalctl -u docker.service
```
## 📈 Оптимизация производительности
### Настройки Django
```python
# 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 оптимизации
```yaml
# docker-compose.yml
services:
web:
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
```
## 🔐 Безопасность
### Основные рекомендации
1. **Обновление системы:**
```bash
sudo apt update && sudo apt upgrade
```
2. **Настройка Firewall:**
```bash
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
```
3. **Ограничение доступа к админке:**
```python
# settings.py
ADMIN_URL = 'secret-admin-url/'
```
4. **Регулярные обновления:**
```bash
# Еженедельное обновление
./update
```
---
🎯 **Следующие шаги**: [API документация](API.md) | [Управление скриптами](SCRIPTS_README.md)