157 lines
4.8 KiB
Markdown
157 lines
4.8 KiB
Markdown
# Устранение 502 ошибки MY Uploader Bot
|
||
|
||
## 🚨 Если получаете 502 Bad Gateway
|
||
|
||
Ошибка 502 означает, что nginx работает, но не может подключиться к backend приложению.
|
||
|
||
## 🔍 Быстрая диагностика
|
||
|
||
### 1. Запустите диагностический скрипт:
|
||
```bash
|
||
sudo /home/myuploader/uploader-bot/diagnose.sh my-public-node-3.projscale.dev
|
||
```
|
||
|
||
### 2. Проверьте статус контейнеров:
|
||
```bash
|
||
cd /home/myuploader/uploader-bot
|
||
sudo docker-compose -f docker-compose.production.yml ps
|
||
```
|
||
|
||
### 3. Проверьте логи приложения:
|
||
```bash
|
||
sudo docker-compose -f docker-compose.production.yml logs -f app
|
||
```
|
||
|
||
## 🛠️ Частые решения
|
||
|
||
### Решение 1: Приложение еще запускается
|
||
```bash
|
||
# Подождите 2-3 минуты и проверьте снова
|
||
sleep 180
|
||
curl -v https://your-domain.com/health
|
||
```
|
||
|
||
### Решение 2: Перезапуск сервисов
|
||
```bash
|
||
cd /home/myuploader/uploader-bot
|
||
sudo docker-compose -f docker-compose.production.yml restart app
|
||
```
|
||
|
||
### Решение 3: Полная перезагрузка
|
||
```bash
|
||
cd /home/myuploader/uploader-bot
|
||
sudo docker-compose -f docker-compose.production.yml down
|
||
sudo docker-compose -f docker-compose.production.yml up -d
|
||
```
|
||
|
||
### Решение 4: Проверка базы данных
|
||
```bash
|
||
# Проверка PostgreSQL
|
||
sudo docker-compose -f docker-compose.production.yml exec postgres pg_isready -U my_user -d my_uploader_db
|
||
|
||
# Перезапуск базы данных если нужно
|
||
sudo docker-compose -f docker-compose.production.yml restart postgres redis
|
||
```
|
||
|
||
## 🔍 Детальная диагностика
|
||
|
||
### Проверка локальных портов:
|
||
```bash
|
||
# API приложения (должен отвечать)
|
||
curl http://localhost:15100/health
|
||
|
||
# Nginx (должен перенаправлять)
|
||
curl -I http://localhost
|
||
|
||
# Проверка подключения к базе
|
||
sudo docker-compose -f docker-compose.production.yml exec app python -c "
|
||
import asyncpg
|
||
import asyncio
|
||
async def test():
|
||
try:
|
||
conn = await asyncpg.connect('postgresql://my_user:PASSWORD@postgres:5432/my_uploader_db')
|
||
await conn.close()
|
||
print('✅ База данных доступна')
|
||
except Exception as e:
|
||
print(f'❌ Ошибка подключения к БД: {e}')
|
||
asyncio.run(test())
|
||
"
|
||
```
|
||
|
||
### Проверка конфигурации nginx:
|
||
```bash
|
||
sudo docker-compose -f docker-compose.production.yml exec nginx nginx -t
|
||
```
|
||
|
||
### Просмотр логов в реальном времени:
|
||
```bash
|
||
# Все сервисы
|
||
sudo docker-compose -f docker-compose.production.yml logs -f
|
||
|
||
# Только основное приложение
|
||
sudo docker-compose -f docker-compose.production.yml logs -f app
|
||
|
||
# Только nginx
|
||
sudo docker-compose -f docker-compose.production.yml logs -f nginx
|
||
```
|
||
|
||
## 🚀 Тестирование после исправления
|
||
|
||
```bash
|
||
# 1. Проверьте статус всех контейнеров
|
||
sudo docker-compose -f docker-compose.production.yml ps
|
||
|
||
# 2. Проверьте health endpoints
|
||
curl http://localhost:15100/health
|
||
curl https://your-domain.com/health
|
||
|
||
# 3. Проверьте основные endpoints
|
||
curl -I https://your-domain.com/
|
||
curl https://your-domain.com/api/my/bootstrap/config
|
||
```
|
||
|
||
## 📞 Если проблема не решается
|
||
|
||
1. **Соберите диагностическую информацию:**
|
||
```bash
|
||
sudo /home/myuploader/uploader-bot/diagnose.sh your-domain.com > diagnostic_report.txt
|
||
```
|
||
|
||
2. **Сохраните логи:**
|
||
```bash
|
||
sudo docker-compose -f docker-compose.production.yml logs --tail=100 > all_logs.txt
|
||
```
|
||
|
||
3. **Проверьте ресурсы системы:**
|
||
```bash
|
||
docker stats --no-stream
|
||
df -h
|
||
free -h
|
||
```
|
||
|
||
## ⚡ Экстренное восстановление
|
||
|
||
Если ничего не помогает:
|
||
|
||
```bash
|
||
# 1. Полная остановка
|
||
sudo systemctl stop my-uploader-bot
|
||
sudo docker-compose -f docker-compose.production.yml down -v
|
||
|
||
# 2. Очистка и перезапуск
|
||
sudo docker system prune -f
|
||
sudo docker-compose -f docker-compose.production.yml pull
|
||
sudo docker-compose -f docker-compose.production.yml up -d --build
|
||
|
||
# 3. Проверка через 5 минут
|
||
sleep 300
|
||
curl -v https://your-domain.com/health
|
||
```
|
||
|
||
## 🎯 Ожидаемый результат
|
||
|
||
После успешного исправления:
|
||
- `curl http://localhost:15100/health` возвращает 200 OK
|
||
- `curl https://your-domain.com/health` возвращает 200 OK
|
||
- Все контейнеры в статусе "Up"
|
||
- В логах нет критических ошибок |