78 lines
2.4 KiB
Markdown
78 lines
2.4 KiB
Markdown
# Deploy Scripts
|
||
|
||
Скрипты для развертывания компонентов проекта на сервера.
|
||
|
||
## Структура
|
||
|
||
```
|
||
deploy/
|
||
├── backend-build_app.sh # Сборка и деплой backend
|
||
└── web-app/ # Скрипты деплоя веб приложения
|
||
├── config.sh # Конфигурация деплоя
|
||
├── deploy.sh # Основной скрипт деплоя
|
||
└── nginx.conf # Nginx конфигурация
|
||
```
|
||
|
||
## Использование
|
||
|
||
### Backend
|
||
|
||
```bash
|
||
# Сборка и деплой backend на сервер
|
||
./backend-build_app.sh
|
||
```
|
||
|
||
### Web App
|
||
|
||
```bash
|
||
# Переход в директорию 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 ключ для доступа к серверу. Ключ должен быть добавлен:
|
||
|
||
1. В Forgejo secrets: `DEPLOY_SSH_PRIVATE_KEY`
|
||
2. На сервере в `~/.ssh/authorized_keys`
|
||
|
||
## Процесс деплоя
|
||
|
||
### Backend
|
||
1. Компиляция Dart кода в бинарный файл
|
||
2. Копирование на сервер
|
||
3. Обновление systemd сервиса
|
||
4. Перезапуск сервиса
|
||
5. Получение SSL сертификата (Let's Encrypt)
|
||
|
||
### Web App
|
||
1. Сборка Flutter Web приложения
|
||
2. Копирование файлов на сервер (rsync)
|
||
3. Обновление Nginx конфигурации
|
||
4. Перезапуск Nginx
|
||
5. Получение SSL сертификата (Let's Encrypt)
|
||
|
||
## SSL сертификаты
|
||
|
||
Автоматически получаются сертификаты Let's Encrypt для:
|
||
- `memo-cards.online` (web app)
|
||
- `api.memo-cards.online` (backend API)
|
||
|
||
## Безопасность
|
||
|
||
- Используется SSH ключ для аутентификации
|
||
- Nginx конфигурация включает security headers
|
||
- CORS правильно настроен между доменами
|