Files
smartsoltech_site/docs/DEPLOYMENT.md
Andrew K. Choi d9adac609b 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
2025-11-24 07:12:04 +09:00

268 lines
7.4 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 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>
```