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

7.4 KiB
Raw Blame History

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 файл

cp .env.example .env
nano .env

2. Сгенерируйте SECRET_KEY

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

Режим разработки

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка
docker-compose down

Production деплой

# Использование production конфигурации
docker-compose -f docker-compose.prod.yml up -d

# Или используйте скрипт деплоя
chmod +x deploy.sh
./deploy.sh

Управление контейнерами

Применение миграций

docker-compose exec web python smartsoltech/manage.py migrate

Сбор статических файлов

docker-compose exec web python smartsoltech/manage.py collectstatic --noinput

Создание суперпользователя

docker-compose exec web python smartsoltech/manage.py createsuperuser

Обновление токена Telegram бота

docker-compose exec web python update_telegram_token.py

Просмотр логов

# Все сервисы
docker-compose logs -f

# Конкретный сервис
docker-compose logs -f web
docker-compose logs -f bot
docker-compose logs -f postgres_db

Перезапуск сервисов

# Все сервисы
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)

# Получение сертификата 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 базы данных

# Создание 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

Мониторинг

Проверка статуса сервисов

docker-compose ps

Проверка использования ресурсов

docker stats

Health checks

Все сервисы имеют health checks для автоматического мониторинга:

  • PostgreSQL: проверка готовности через pg_isready
  • Django Web: HTTP запрос к порту 8000
  • Nginx: проверка процесса

Troubleshooting

База данных не готова

# Проверьте логи PostgreSQL
docker-compose logs postgres_db

# Проверьте health check
docker-compose ps

Миграции не применяются

# Проверьте подключение к БД
docker-compose exec web python smartsoltech/manage.py dbshell

# Примените миграции вручную
docker-compose exec web python smartsoltech/manage.py migrate --verbosity 3

Telegram бот не запускается

# Проверьте логи бота
docker-compose logs bot

# Обновите токен через админку или скрипт
docker-compose exec web python update_telegram_token.py

Обновление приложения

# 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

Полезные команды

# Очистка неиспользуемых образов и контейнеров
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>