- 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
7.4 KiB
7.4 KiB
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 для входа в PgAdminPGADMIN_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- для productionALLOWED_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)
Безопасность
- Никогда не коммитьте .env файл - он в .gitignore
- Используйте сильные пароли для всех сервисов
- Установите
DEBUG=Falseв production - Настройте firewall для ограничения доступа к портам
- Используйте HTTPS в production (настройте SSL сертификаты)
- Регулярно обновляйте зависимости
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>