📚 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:
2025-11-25 07:00:36 +09:00
parent 8f1e0459fc
commit 19d523213b
18 changed files with 1627 additions and 833 deletions

352
docs/DEPLOYMENT.md Normal file
View 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)