# 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 ```