| .. | ||
| backend | ||
| web-app | ||
| backend-build_app.sh | ||
| backend-build_app_webroot.sh | ||
| fix-git-permissions.sh | ||
| fix-nginx-upload-limit.sh | ||
| README.md | ||
Deploy Scripts
Скрипты для развертывания компонентов проекта на сервера.
Структура
deploy/
├── backend-build_app.sh # Сборка и деплой backend
└── web-app/ # Скрипты деплоя веб приложения
├── config.sh # Конфигурация деплоя
├── deploy.sh # Основной скрипт деплоя
└── nginx.conf # Nginx конфигурация
Использование
Backend
# Сборка и деплой backend на сервер
./backend-build_app.sh
Web App
# Переход в директорию web-app
cd web-app
# Деплой веб приложения
./deploy.sh
Конфигурация
Переменные окружения
Основные настройки в web-app/config.sh:
SERVER_IP- IP сервера (147.45.152.129)DOMAIN- домен веб приложения (memo-cards.online)API_BASE_URL- URL API (https://api.memo-cards.online:8081)
SSH доступ
Необходим SSH ключ для доступа к серверу. Ключ должен быть добавлен:
- В Forgejo secrets:
DEPLOY_SSH_PRIVATE_KEY - На сервере в
~/.ssh/authorized_keys
Процесс деплоя
Backend
- Компиляция Dart кода в бинарный файл
- Копирование на сервер
- Обновление systemd сервиса
- Перезапуск сервиса
- Получение SSL сертификата (Let's Encrypt)
Web App
- Сборка Flutter Web приложения
- Копирование файлов на сервер (rsync)
- Обновление Nginx конфигурации
- Перезапуск Nginx
- Получение SSL сертификата (Let's Encrypt)
SSL сертификаты
Автоматически получаются сертификаты Let's Encrypt для:
memo-cards.online(web app)api.memo-cards.online(backend API)
Безопасность
- Используется SSH ключ для аутентификации
- Nginx конфигурация включает security headers
- CORS правильно настроен между доменами