# SmartSolTech - Скрипты управления проектом Этот набор скриптов предназначен для автоматизации процессов разработки и развертывания проекта SmartSolTech. ## Структура проекта ``` smartsoltech.kr/ ├── cli # CLI для работы с контейнером веб-приложения ├── update # Полное обновление проекта ├── start # Быстрый запуск сервисов ├── stop # Остановка сервисов ├── logs # Просмотр логов └── bin/ # Папка со всеми служебными скриптами ├── cli.sh # CLI скрипт (основной) ├── update.sh # Скрипт обновления (основной) ├── start.sh # Скрипт запуска ├── stop.sh # Скрипт остановки ├── logs.sh # Скрипт логов ├── demo.sh # Демонстрация возможностей └── setup-backup.sh # Настройка backup репозитория ``` ## Доступные скрипты ### 🚀 `./update` - Полное обновление проекта Выполняет полный цикл обновления: - Создание бэкапа в удаленном репозитории - Обновление кода из Git (origin или backup) - Остановка текущих контейнеров - Пересборка Docker образов - Запуск новых контейнеров - Выполнение миграций Django - Сбор статических файлов - Проверка здоровья сервисов **Использование:** ```bash ./update # Обновление из origin (по умолчанию) ./update origin # Обновление из origin репозитория ./update backup # Обновление из backup репозитория ./update origin backup # Обновление из origin с бэкапом в backup ./update backup origin # Обновление из backup с бэкапом в origin ./update --help # Показать справку ./update --logs # Показать логи без обновления ./update --status # Показать статус сервисов ``` **Примеры использования удаленных репозиториев:** ```bash # Стандартное обновление из основного репозитория ./update # Обновление из резервного репозитория (если основной недоступен) ./update backup # Обновление из основного репозитория с созданием бэкапа в резервном ./update origin backup # Переключение на резервный сервер с бэкапом в основной ./update backup origin ``` ### 💻 `./cli` - CLI для работы с контейнером веб-приложения Интерфейс командной строки для выполнения команд внутри контейнера Django: - Django команды (shell, migrate, collectstatic и др.) - Системные команды (bash, ps, logs) - Управление контейнером (restart, status) **Использование:** ```bash ./cli shell # Django shell ./cli bash # Bash в контейнере ./cli migrate # Выполнить миграции ./cli makemigrations # Создать миграции ./cli createsuperuser # Создать суперпользователя ./cli collectstatic # Собрать статические файлы ./cli manage # Произвольная Django команда ./cli exec # Произвольная системная команда ./cli logs [количество_строк] # Логи приложения ./cli status # Статус контейнеров ./cli restart # Перезапуск веб-контейнера ./cli --help # Показать справку ``` **Примеры использования CLI:** ```bash # Django разработка ./cli shell # Интерактивная оболочка Django ./cli manage showmigrations # Показать статус миграций ./cli dbshell # Подключиться к базе данных # Системное администрирование ./cli bash # Зайти в контейнер ./cli exec cat /app/requirements.txt # Посмотреть зависимости ./cli ps # Процессы в контейнере ./cli logs 100 # Последние 100 строк логов # Управление ./cli status # Статус всех сервисов ./cli restart # Перезапуск веб-сервера ``` ### ▶️ `./start` - Быстрый запуск Быстро запускает все сервисы проекта: - Запуск Docker контейнеров - Проверка статуса сервисов - Отображение доступных ресурсов **Использование:** ```bash ./start ``` ### ⏹️ `./stop` - Остановка сервисов Останавливает сервисы с различными опциями: - Простая остановка контейнеров - Остановка с удалением контейнеров и волюмов - Полная очистка (включая образы) **Использование:** ```bash ./stop # Простая остановка ./stop --remove # Остановка + удаление контейнеров и волюмов ./stop --clean # Полная очистка (контейнеры + образы + волюмы) ./stop --help # Показать справку ``` ### 📋 `./logs` - Просмотр логов Показывает логи сервисов в реальном времени: - Все логи или конкретного сервиса - Последние N строк логов - Интерактивный режим **Использование:** ```bash ./logs # Все логи в реальном времени ./logs web # Логи только веб-сервера ./logs db # Логи базы данных ./logs pgadmin # Логи PgAdmin ./logs --tail 50 # Последние 50 строк ./logs --help # Показать справку ``` ## Служебные скрипты в папке bin/ ### 🛠️ `./bin/setup-backup.sh` - Настройка backup репозитория Помогает настроить дополнительный удаленный репозиторий для резервного копирования. **Использование:** ```bash ./bin/setup-backup.sh # Интерактивная настройка ./bin/setup-backup.sh # Добавить backup репозиторий ./bin/setup-backup.sh # Добавить с именем ./bin/setup-backup.sh --remove # Удалить backup репозиторий ./bin/setup-backup.sh --list # Показать все репозитории ``` ### 🎯 `./bin/demo.sh` - Демонстрация возможностей Показывает примеры использования всех скриптов и текущий статус проекта. ## Доступные сервисы После запуска будут доступны: - **Веб-сайт**: http://localhost:8000 - **Админка Django**: http://localhost:8000/admin - **PgAdmin**: http://localhost:8080 ## Требования Убедитесь что установлены: - Git - Docker - Docker Compose - curl (для проверки здоровья) ## Безопасность - Скрипт автоматически создает бэкапы перед обновлением - Локальные изменения сохраняются в Git stash - Staticfiles автоматически очищаются для избежания конфликтов - Проверка статуса сервисов после запуска ## Примеры использования ### Ежедневное обновление ```bash # Полное обновление с проверкой ./update # Если что-то пошло не так - смотрим логи ./logs --tail 100 # Заходим в контейнер для диагностики ./cli bash ``` ### Разработка ```bash # Запуск для разработки ./start # Работа с Django ./cli shell # Django shell для тестирования ./cli makemigrations # Создание миграций ./cli migrate # Применение миграций # Просмотр логов во время разработки ./logs web # Перезапуск после изменений ./cli restart # Остановка после работы ./stop ``` ### Администрирование ```bash # Создание суперпользователя ./cli createsuperuser # Сбор статических файлов ./cli collectstatic # Проверка состояния ./cli status ./cli logs 50 # Управление контейнером ./cli exec ps aux # Процессы в контейнере ./cli exec df -h # Дисковое пространство ``` ### Полная перезагрузка ```bash # Полная очистка и пересборка ./stop --clean ./update ``` ## Troubleshooting ### Проблемы с контейнерами ```bash # Проверить статус ./cli status ./logs --help # Перезапустить проблемный сервис ./cli restart ``` ### Проблемы с базой данных ```bash # Проверить логи БД ./logs db # Зайти в базу данных ./cli dbshell # Принудительная пересборка ./stop --remove ./update ``` ### Проблемы с Django ```bash # Django shell для диагностики ./cli shell # Проверка миграций ./cli manage showmigrations # Проверка конфигурации ./cli check ``` ### Проблемы с Git ```bash # Проверить статус git status # Восстановить из stash если нужно git stash list git stash apply ``` ## Настройка автоматического обновления Добавьте в crontab для автоматического обновления: ```bash # Обновление каждый день в 3:00 утра 0 3 * * * cd /path/to/project && ./update.sh >> /var/log/smartsoltech-update.log 2>&1 ```