129 lines
3.0 KiB
Markdown
129 lines
3.0 KiB
Markdown
# AirService
|
|
|
|
Система управления заявками на техническое обслуживание (Service Desk). Сотрудники создают заявки, назначают приоритеты и отслеживают статус выполнения.
|
|
|
|
**Стек:** Laravel 10, Livewire, Tailwind CSS, MySQL, Vite
|
|
|
|
---
|
|
|
|
## Локальная разработка
|
|
|
|
**Требования:** PHP >= 8.2, Composer, Node.js >= 18, MySQL
|
|
|
|
```bash
|
|
git clone <repo-url>
|
|
cd AirService
|
|
|
|
composer install
|
|
npm install
|
|
|
|
cp .env.example .env
|
|
# Поменять APP_ENV=local, APP_DEBUG=true, APP_URL=http://localhost
|
|
# Поменять DB_HOST=127.0.0.1, DB_USERNAME=root, убрать DB_ROOT_PASSWORD
|
|
php artisan key:generate
|
|
php artisan migrate --seed
|
|
```
|
|
|
|
Запустить в двух терминалах:
|
|
|
|
```bash
|
|
# Терминал 1
|
|
php artisan serve
|
|
|
|
# Терминал 2
|
|
npm run dev
|
|
```
|
|
|
|
Приложение: [http://127.0.0.1:8000](http://127.0.0.1:8000)
|
|
|
|
---
|
|
|
|
## Деплой на сервер (flamy / docker-runtime)
|
|
|
|
**Требования:** Docker, Docker Compose на `docker-runtime` (`10.20.0.20`).
|
|
|
|
### 1. Скопировать проект на сервер
|
|
|
|
```bash
|
|
ssh -i /root/.ssh/docker_vm_ed25519 crimson@10.20.0.20
|
|
sudo mkdir -p /opt/docker-apps/airservice
|
|
```
|
|
|
|
Скопировать файлы (с локальной машины):
|
|
|
|
```bash
|
|
rsync -avz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
|
|
./ crimson@10.20.0.20:/opt/docker-apps/airservice/
|
|
```
|
|
|
|
### 2. Создать `.env` на сервере
|
|
|
|
```bash
|
|
cd /opt/docker-apps/airservice
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
|
|
Обязательно заполнить:
|
|
|
|
```env
|
|
APP_KEY= # php artisan key:generate --show
|
|
APP_URL=https://your-domain.ru
|
|
DB_PASSWORD= # придумать
|
|
DB_ROOT_PASSWORD= # придумать
|
|
```
|
|
|
|
### 3. Запустить
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
docker compose ps
|
|
docker compose logs -f --tail=100
|
|
```
|
|
|
|
Проверить локально на сервере:
|
|
|
|
```bash
|
|
curl -I http://10.20.0.20:18201
|
|
```
|
|
|
|
### 4. Открыть домен через Caddy (edge-proxy)
|
|
|
|
```bash
|
|
ssh -i /root/.ssh/edge_vm_ed25519 crimson@192.168.0.80
|
|
sudo nano /etc/caddy/Caddyfile
|
|
```
|
|
|
|
Добавить блок:
|
|
|
|
```caddyfile
|
|
http://www.your-domain.ru, https://www.your-domain.ru {
|
|
redir https://your-domain.ru{uri} 308
|
|
}
|
|
|
|
your-domain.ru {
|
|
encode zstd gzip
|
|
|
|
reverse_proxy 10.20.0.20:18201 {
|
|
header_up Host {host}
|
|
header_up X-Real-IP {remote_host}
|
|
}
|
|
}
|
|
```
|
|
|
|
```bash
|
|
sudo caddy validate --config /etc/caddy/Caddyfile
|
|
sudo systemctl reload caddy
|
|
```
|
|
|
|
---
|
|
|
|
## Структура Docker-сервисов
|
|
|
|
| Сервис | Описание |
|
|
|--------------------|-----------------------------------|
|
|
| `airservice_app` | PHP-FPM (Laravel) |
|
|
| `airservice_nginx` | nginx, публикует порт `18201` |
|
|
| `airservice_mysql` | MySQL 8.0, только внутри сети |
|
|
| `airservice_queue` | Queue worker (`queue:work`) |
|