✨ 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
352 lines
7.9 KiB
Markdown
352 lines
7.9 KiB
Markdown
# 🚀 Руководство по развертыванию 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) |