📚 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
This commit is contained in:
352
docs/DEPLOYMENT.md
Normal file
352
docs/DEPLOYMENT.md
Normal file
@@ -0,0 +1,352 @@
|
||||
# 🚀 Руководство по развертыванию 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)
|
||||
Reference in New Issue
Block a user