chore: reorganize project structure and prepare for deployment

- Organize files into logical directories (docs/, scripts/, tests/)
- Add comprehensive documentation (README, CONTRIBUTING, CHANGELOG)
- Create deployment automation scripts
- Add Docker production configuration
- Update .gitignore and add .dockerignore
- Remove temporary and test files from root
- Improve settings.py with DEBUG from env variable

Added:
- README.md with project overview
- CONTRIBUTING.md for contributors
- CHANGELOG.md for version tracking
- PROJECT_STATUS.md with current state
- docker-compose.prod.yml for production
- nginx.conf for production web server
- scripts/deploy.sh for automated deployment
- scripts/check-config.sh for configuration validation
- scripts/setup-ssl.sh for SSL certificate setup
- docs/DEPLOYMENT.md with detailed deployment guide
- docs/ENV_VARIABLES.md with all environment variables

Moved:
- Documentation to docs/
- Scripts to scripts/
- Test files to tests/

Removed:
- .history/ directory
- Test response JSON files from root
- settings_production.py (merged into settings.py)

This commit prepares the project for:
- Production deployment
- Team collaboration
- Docker containerization
- Proper documentation
This commit is contained in:
2025-11-24 07:12:04 +09:00
parent 7bf003e70d
commit d9adac609b
26 changed files with 1869 additions and 11 deletions

267
docs/DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,267 @@
# SmartSolTech Deployment Guide
## Переменные окружения (.env)
Проект использует следующие переменные окружения:
### Django Settings
- `SECRET_KEY` - Секретный ключ Django (генерируется случайно)
- `DEBUG` - Режим отладки (False для production)
- `ALLOWED_HOSTS` - Разрешенные хосты (через запятую)
- `CSRF_TRUSTED_ORIGINS` - Доверенные источники для CSRF (через запятую)
### PostgreSQL Database
- `POSTGRES_DB` - Имя базы данных
- `POSTGRES_USER` - Пользователь базы данных
- `POSTGRES_PASSWORD` - Пароль базы данных
- `POSTGRES_HOST` - Хост базы данных (postgres_db для Docker)
### PgAdmin
- `PGADMIN_DEFAULT_EMAIL` - Email для входа в PgAdmin
- `PGADMIN_DEFAULT_PASSWORD` - Пароль для входа в PgAdmin
### Zabbix Agent
- `ZBX_SERVER_HOST` - IP адрес Zabbix сервера
### Telegram Bot (настраивается через админку Django)
- Токен и настройки бота хранятся в базе данных
- Используйте скрипт `update_telegram_token.py` для обновления
### Email Settings (настраивается через админку Django)
- SMTP настройки хранятся в базе данных
- Настраиваются через админ-панель Django
## Подготовка к деплою
### 1. Создайте .env файл
```bash
cp .env.example .env
nano .env
```
### 2. Сгенерируйте SECRET_KEY
```python
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
```
### 3. Обновите переменные в .env
Обязательно измените:
- `SECRET_KEY` - используйте сгенерированный ключ
- `DEBUG=False` - для production
- `ALLOWED_HOSTS` - ваш домен
- `CSRF_TRUSTED_ORIGINS` - ваш домен с протоколом
- `POSTGRES_PASSWORD` - сильный пароль
- `PGADMIN_DEFAULT_PASSWORD` - сильный пароль
## Деплой в Docker
### Режим разработки
```bash
# Запуск всех сервисов
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановка
docker-compose down
```
### Production деплой
```bash
# Использование production конфигурации
docker-compose -f docker-compose.prod.yml up -d
# Или используйте скрипт деплоя
chmod +x deploy.sh
./deploy.sh
```
## Управление контейнерами
### Применение миграций
```bash
docker-compose exec web python smartsoltech/manage.py migrate
```
### Сбор статических файлов
```bash
docker-compose exec web python smartsoltech/manage.py collectstatic --noinput
```
### Создание суперпользователя
```bash
docker-compose exec web python smartsoltech/manage.py createsuperuser
```
### Обновление токена Telegram бота
```bash
docker-compose exec web python update_telegram_token.py
```
### Просмотр логов
```bash
# Все сервисы
docker-compose logs -f
# Конкретный сервис
docker-compose logs -f web
docker-compose logs -f bot
docker-compose logs -f postgres_db
```
### Перезапуск сервисов
```bash
# Все сервисы
docker-compose restart
# Конкретный сервис
docker-compose restart web
docker-compose restart bot
```
## Структура сервисов
- **postgres_db** (порт 5432) - PostgreSQL база данных
- **web** (порт 8000) - Django приложение
- **bot** - Telegram бот
- **pgadmin** (порт 8080) - PgAdmin для управления БД
- **zabbix-agent** - Мониторинг Zabbix
- **nginx** (порты 80, 443) - Веб-сервер (только в production)
## Безопасность
1. **Никогда не коммитьте .env файл** - он в .gitignore
2. Используйте сильные пароли для всех сервисов
3. Установите `DEBUG=False` в production
4. Настройте firewall для ограничения доступа к портам
5. Используйте HTTPS в production (настройте SSL сертификаты)
6. Регулярно обновляйте зависимости
## SSL сертификаты (для production с Nginx)
```bash
# Получение сертификата Let's Encrypt
docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot \
--email your-email@example.com \
--agree-tos \
--no-eff-email \
-d your-domain.com \
-d www.your-domain.com
```
## Backup базы данных
```bash
# Создание backup
docker-compose exec postgres_db pg_dump -U smartsoltech_user smartsoltech_db > backup.sql
# Восстановление из backup
cat backup.sql | docker-compose exec -T postgres_db psql -U smartsoltech_user smartsoltech_db
```
## Мониторинг
### Проверка статуса сервисов
```bash
docker-compose ps
```
### Проверка использования ресурсов
```bash
docker stats
```
### Health checks
Все сервисы имеют health checks для автоматического мониторинга:
- PostgreSQL: проверка готовности через pg_isready
- Django Web: HTTP запрос к порту 8000
- Nginx: проверка процесса
## Troubleshooting
### База данных не готова
```bash
# Проверьте логи PostgreSQL
docker-compose logs postgres_db
# Проверьте health check
docker-compose ps
```
### Миграции не применяются
```bash
# Проверьте подключение к БД
docker-compose exec web python smartsoltech/manage.py dbshell
# Примените миграции вручную
docker-compose exec web python smartsoltech/manage.py migrate --verbosity 3
```
### Telegram бот не запускается
```bash
# Проверьте логи бота
docker-compose logs bot
# Обновите токен через админку или скрипт
docker-compose exec web python update_telegram_token.py
```
## Обновление приложения
```bash
# 1. Остановите сервисы
docker-compose down
# 2. Получите обновления
git pull origin main
# 3. Пересоберите образы
docker-compose build --no-cache
# 4. Запустите сервисы
docker-compose up -d
# 5. Примените миграции
docker-compose exec web python smartsoltech/manage.py migrate
# 6. Соберите статику
docker-compose exec web python smartsoltech/manage.py collectstatic --noinput
```
## Полезные команды
```bash
# Очистка неиспользуемых образов и контейнеров
docker system prune -a
# Просмотр всех volume
docker volume ls
# Удаление конкретного volume (осторожно!)
docker volume rm smartsoltech_pgdata
# Вход в контейнер
docker-compose exec web bash
docker-compose exec postgres_db bash
# Выполнение команды Django
docker-compose exec web python smartsoltech/manage.py <command>
```