Files
ospab.host/DEPLOY_INSTRUCTIONS.md
2025-11-23 14:35:16 +03:00

129 lines
4.2 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.
# 🚀 Инструкции по развертыванию обновлений
## Проблема
После обновления кода на сервере появляются ошибки:
- `Cannot read properties of undefined (reading 'findMany')` - Prisma Client не имеет моделей Post/Comment
- OAuth endpoints возвращают 404
- Admin endpoints возвращают 404
## Решение
### 1. Убедитесь, что schema.prisma на сервере актуальна
```bash
ssh root@ospab.host
cd /var/www/ospab-host/backend
# Проверьте, что в schema.prisma есть модели Post и Comment
grep -A 5 "model Post" prisma/schema.prisma
grep -A 5 "model Comment" prisma/schema.prisma
```
Если моделей нет, загрузите schema.prisma с локальной машины:
```powershell
# На локальной машине (Windows)
cd d:\Ospab-projects\ospabhost8.1\ospabhost\backend
scp prisma/schema.prisma root@ospab.host:/var/www/ospab-host/backend/prisma/
```
### 2. Создайте таблицы в базе данных (если их нет)
```bash
# На сервере
cd /var/www/ospab-host/backend
npx prisma db push
```
### 3. Регенерируйте Prisma Client
```bash
# На сервере
npx prisma generate
```
Эта команда создаст типы для моделей Post и Comment в `node_modules/@prisma/client`
### 4. Загрузите обновленный dist с локальной машины
```powershell
# На локальной машине (Windows)
cd d:\Ospab-projects\ospabhost8.1\ospabhost\backend
scp -r dist/ root@ospab.host:/var/www/ospab-host/backend/
```
### 5. Перезапустите backend
```bash
# На сервере
pm2 restart backend
pm2 logs backend --lines 50
```
## Проверка
После выполнения всех шагов проверьте:
```bash
# 1. OAuth endpoints (должны возвращать 302 redirect)
curl -I https://ospab.host:5000/api/auth/google
curl -I https://ospab.host:5000/api/auth/github
curl -I https://ospab.host:5000/api/auth/yandex
# 2. Admin endpoints (должны возвращать 401 без токена или 200 с токеном)
curl https://ospab.host:5000/api/admin/users
# 3. Blog endpoints (должны возвращать JSON)
curl https://ospab.host:5000/api/blog/posts
curl https://ospab.host:5000/api/blog/admin/posts -H "Authorization: Bearer YOUR_TOKEN"
```
## Что было исправлено в коде
### backend/src/index.ts
```typescript
// Добавлены импорты:
import passport from './modules/auth/passport.config';
import oauthRoutes from './modules/auth/oauth.routes';
import adminRoutes from './modules/admin/admin.routes';
// Добавлена инициализация Passport:
app.use(passport.initialize());
// Подключены маршруты:
app.use('/api/auth', oauthRoutes); // OAuth (Google/GitHub/Yandex)
app.use('/api/admin', adminRoutes); // Admin панель
```
### backend/src/modules/auth/oauth.routes.ts
```typescript
// Убраны типы `any`, добавлен интерфейс:
interface AuthenticatedUser {
id: number;
email: string;
username: string;
}
```
## Troubleshooting
### Ошибка: "Cannot read properties of undefined (reading 'findMany')"
**Причина:** Prisma Client не имеет моделей Post/Comment
**Решение:** Выполните `npx prisma generate` на сервере
### Ошибка: "Table 'ospabhost.post' doesn't exist"
**Причина:** Таблицы не созданы в базе данных
**Решение:** Выполните `npx prisma db push` на сервере
### OAuth возвращает 404
**Причина:** OAuth маршруты не подключены
**Решение:** Загрузите обновленный dist и перезапустите backend
### Admin endpoints возвращают 404
**Причина:** Admin маршруты не подключены
**Решение:** Загрузите обновленный dist и перезапустите backend
---
**Дата обновления:** 1 ноября 2025 г.