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

295 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <command> # Произвольная Django команда
./cli exec <command> # Произвольная системная команда
./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 <URL> # Добавить backup репозиторий
./bin/setup-backup.sh <URL> <name> # Добавить с именем
./bin/setup-backup.sh --remove <name> # Удалить 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
```