Files
links/scripts/diagnose-server.sh
Andrey K. Choi fb74a4a25d
Some checks failed
continuous-integration/drone/push Build is failing
some fixes
2025-11-08 18:45:20 +09:00

136 lines
5.4 KiB
Bash
Executable File
Raw Permalink 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.

#!/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 "================================="