some fixes
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-11-08 18:45:20 +09:00
parent 20014d3a81
commit fb74a4a25d
9 changed files with 538 additions and 2 deletions

136
scripts/diagnose-server.sh Executable file
View File

@@ -0,0 +1,136 @@
#!/bin/bash
# scripts/diagnose-server.sh - Диагностика проблем на сервере
set -e
echo "🔍 Диагностика сервера CatLink..."
echo "================================="
echo ""
echo "📊 1. Статус Docker контейнеров:"
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "🔗 2. Статус сетей Docker:"
docker network ls
echo ""
echo "📡 3. Проверка подключения к базе данных:"
echo " Тестируем подключение из контейнера web к базе данных..."
if docker-compose exec -T web python -c "
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
from django.db import connection
try:
with connection.cursor() as cursor:
cursor.execute('SELECT 1')
print('✅ Подключение к базе данных успешно')
except Exception as e:
print(f'❌ Ошибка подключения к БД: {e}')
" 2>/dev/null; then
echo "✅ База данных доступна"
else
echo "❌ База данных недоступна"
fi
echo ""
echo "👥 4. Данные пользователей в базе:"
if docker-compose exec -T db psql -U links_user -d links_db -c "SELECT COUNT(*) as user_count FROM users_user;" 2>/dev/null; then
echo "✅ Таблица пользователей доступна"
docker-compose exec -T db psql -U links_user -d links_db -c "SELECT id, username, email, is_active, is_staff, is_superuser FROM users_user ORDER BY date_joined DESC LIMIT 5;"
else
echo "❌ Не удается получить данные пользователей"
fi
echo ""
echo "🌐 5. Проверка nginx конфигурации:"
if sudo nginx -t 2>/dev/null; then
echo "✅ Конфигурация nginx корректна"
else
echo "❌ Ошибка в конфигурации nginx"
fi
echo ""
echo "🔧 6. Статус nginx сервиса:"
sudo systemctl status nginx --no-pager -l
echo ""
echo "🚪 7. Проверка портов:"
echo " Порты, которые слушает система:"
sudo netstat -tlnp | grep -E ":(80|443|3000|8000|5432)" || echo "Нет активных портов"
echo ""
echo "📋 8. Логи nginx (последние 10 строк):"
sudo tail -10 /var/log/nginx/error.log 2>/dev/null || echo "Логи nginx недоступны"
echo ""
echo "📋 9. Логи Docker контейнеров:"
echo " --- Web контейнер (последние 5 строк) ---"
docker-compose logs --tail=5 web 2>/dev/null || echo "Логи web недоступны"
echo ""
echo " --- Frontend контейнер (последние 5 строк) ---"
docker-compose logs --tail=5 frontend 2>/dev/null || echo "Логи frontend недоступны"
echo ""
echo "🔗 10. Тест API эндпоинтов локально:"
echo " Тестируем доступность API..."
if curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/admin/ | grep -q "200\|302"; then
echo "✅ Django admin доступен по http://localhost:8000/admin/"
else
echo "❌ Django admin недоступен по http://localhost:8000/admin/"
fi
if curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/ | grep -q "200\|404"; then
echo "✅ Django API доступен по http://localhost:8000/api/"
else
echo "❌ Django API недоступен по http://localhost:8000/api/"
fi
if curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/ | grep -q "200"; then
echo "✅ Frontend доступен по http://localhost:3000/"
else
echo "❌ Frontend недоступен по http://localhost:3000/"
fi
echo ""
echo "🌍 11. Тест внешних эндпоинтов:"
echo " Тестируем доступность через nginx..."
if curl -s -o /dev/null -w "%{http_code}" http://localhost/admin/ | grep -q "200\|302"; then
echo "✅ Admin доступен через nginx: http://localhost/admin/"
else
echo "❌ Admin недоступен через nginx: http://localhost/admin/"
fi
if curl -s -o /dev/null -w "%{http_code}" http://localhost/api/ | grep -q "200\|404"; then
echo "✅ API доступен через nginx: http://localhost/api/"
else
echo "❌ API недоступен через nginx: http://localhost/api/"
fi
echo ""
echo "🔐 12. SSL сертификаты:"
if [ -d "/etc/letsencrypt/live" ]; then
echo "✅ Директория SSL сертификатов существует:"
sudo ls -la /etc/letsencrypt/live/ 2>/dev/null || echo "Не удается прочитать директорию сертификатов"
else
echo "❌ SSL сертификаты не найдены"
fi
echo ""
echo "📄 13. Переменные окружения (.env):"
echo " Проверяем ключевые переменные..."
if [ -f ".env" ]; then
echo "✅ Файл .env существует"
echo " DJANGO_DEBUG: $(grep '^DJANGO_DEBUG=' .env | cut -d= -f2)"
echo " NEXT_PUBLIC_API_URL: $(grep '^NEXT_PUBLIC_API_URL=' .env | cut -d= -f2)"
echo " DATABASE_HOST: $(grep '^DATABASE_HOST=' .env | cut -d= -f2)"
else
echo "❌ Файл .env не найден"
fi
echo ""
echo "🏁 Диагностика завершена!"
echo "================================="