Files
smartsoltech_site/SCRIPTS_README.md
Andrey K. Choi 8f1e0459fc 🔧 Restructure scripts and add CLI tool
 New features:
- Add CLI tool for container command execution
- Reorganize all scripts into bin/ directory
- Create convenient wrappers in project root
- Add local changes auto-commit functionality
- Enhanced backup repository management

📁 Structure changes:
- Move all scripts to bin/ directory
- Create wrapper scripts in root (cli, update, start, stop, logs)
- Add setup-backup.sh for backup repository management
- Update documentation with new CLI examples

🛠️ CLI capabilities:
- Django commands (shell, migrate, collectstatic, etc.)
- System commands (bash, logs, status)
- Container management (restart, status)
- Interactive and non-interactive modes

📚 Documentation:
- Updated SCRIPTS_README.md with CLI examples
- Added troubleshooting section
- Comprehensive usage examples
2025-11-25 06:51:52 +09:00

12 KiB
Raw Blame History

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
  • Сбор статических файлов
  • Проверка здоровья сервисов

Использование:

./update                        # Обновление из origin (по умолчанию)
./update origin                 # Обновление из origin репозитория
./update backup                 # Обновление из backup репозитория
./update origin backup          # Обновление из origin с бэкапом в backup
./update backup origin          # Обновление из backup с бэкапом в origin
./update --help                 # Показать справку
./update --logs                 # Показать логи без обновления
./update --status               # Показать статус сервисов

Примеры использования удаленных репозиториев:

# Стандартное обновление из основного репозитория
./update

# Обновление из резервного репозитория (если основной недоступен)
./update backup

# Обновление из основного репозитория с созданием бэкапа в резервном
./update origin backup

# Переключение на резервный сервер с бэкапом в основной
./update backup origin

💻 ./cli - CLI для работы с контейнером веб-приложения

Интерфейс командной строки для выполнения команд внутри контейнера Django:

  • Django команды (shell, migrate, collectstatic и др.)
  • Системные команды (bash, ps, logs)
  • Управление контейнером (restart, status)

Использование:

./cli shell                     # Django shell
./cli bash                      # Bash в контейнере
./cli migrate                   # Выполнить миграции
./cli makemigrations            # Создать миграции
./cli createsuperuser           # Создать суперпользователя
./cli collectstatic             # Собрать статические файлы
./cli manage <command>          # Произвольная Django команда
./cli exec <command>            # Произвольная системная команда
./cli logs [количество_строк]   # Логи приложения
./cli status                    # Статус контейнеров
./cli restart                   # Перезапуск веб-контейнера
./cli --help                    # Показать справку

Примеры использования CLI:

# 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 контейнеров
  • Проверка статуса сервисов
  • Отображение доступных ресурсов

Использование:

./start

⏹️ ./stop - Остановка сервисов

Останавливает сервисы с различными опциями:

  • Простая остановка контейнеров
  • Остановка с удалением контейнеров и волюмов
  • Полная очистка (включая образы)

Использование:

./stop              # Простая остановка
./stop --remove      # Остановка + удаление контейнеров и волюмов
./stop --clean       # Полная очистка (контейнеры + образы + волюмы)
./stop --help        # Показать справку

📋 ./logs - Просмотр логов

Показывает логи сервисов в реальном времени:

  • Все логи или конкретного сервиса
  • Последние N строк логов
  • Интерактивный режим

Использование:

./logs              # Все логи в реальном времени
./logs web           # Логи только веб-сервера
./logs db            # Логи базы данных
./logs pgadmin       # Логи PgAdmin
./logs --tail 50     # Последние 50 строк
./logs --help        # Показать справку

Служебные скрипты в папке bin/

🛠️ ./bin/setup-backup.sh - Настройка backup репозитория

Помогает настроить дополнительный удаленный репозиторий для резервного копирования.

Использование:

./bin/setup-backup.sh                           # Интерактивная настройка
./bin/setup-backup.sh <URL>                     # Добавить backup репозиторий
./bin/setup-backup.sh <URL> <name>              # Добавить с именем
./bin/setup-backup.sh --remove <name>           # Удалить backup репозиторий
./bin/setup-backup.sh --list                    # Показать все репозитории

🎯 ./bin/demo.sh - Демонстрация возможностей

Показывает примеры использования всех скриптов и текущий статус проекта.

Доступные сервисы

После запуска будут доступны:

Требования

Убедитесь что установлены:

  • Git
  • Docker
  • Docker Compose
  • curl (для проверки здоровья)

Безопасность

  • Скрипт автоматически создает бэкапы перед обновлением
  • Локальные изменения сохраняются в Git stash
  • Staticfiles автоматически очищаются для избежания конфликтов
  • Проверка статуса сервисов после запуска

Примеры использования

Ежедневное обновление

# Полное обновление с проверкой
./update

# Если что-то пошло не так - смотрим логи
./logs --tail 100

# Заходим в контейнер для диагностики
./cli bash

Разработка

# Запуск для разработки
./start

# Работа с Django
./cli shell                    # Django shell для тестирования
./cli makemigrations          # Создание миграций
./cli migrate                 # Применение миграций

# Просмотр логов во время разработки
./logs web

# Перезапуск после изменений
./cli restart

# Остановка после работы
./stop

Администрирование

# Создание суперпользователя
./cli createsuperuser

# Сбор статических файлов
./cli collectstatic

# Проверка состояния
./cli status
./cli logs 50

# Управление контейнером
./cli exec ps aux              # Процессы в контейнере
./cli exec df -h               # Дисковое пространство

Полная перезагрузка

# Полная очистка и пересборка
./stop --clean
./update

Troubleshooting

Проблемы с контейнерами

# Проверить статус
./cli status
./logs --help

# Перезапустить проблемный сервис
./cli restart

Проблемы с базой данных

# Проверить логи БД
./logs db

# Зайти в базу данных
./cli dbshell

# Принудительная пересборка
./stop --remove
./update

Проблемы с Django

# Django shell для диагностики
./cli shell

# Проверка миграций
./cli manage showmigrations

# Проверка конфигурации
./cli check

Проблемы с Git

# Проверить статус
git status

# Восстановить из stash если нужно
git stash list
git stash apply

Настройка автоматического обновления

Добавьте в crontab для автоматического обновления:

# Обновление каждый день в 3:00 утра
0 3 * * * cd /path/to/project && ./update.sh >> /var/log/smartsoltech-update.log 2>&1