fix issues sh

This commit is contained in:
user 2025-07-05 19:51:03 +03:00
parent 1e7f5eb196
commit c645019380
1 changed files with 210 additions and 0 deletions

210
fix_server_issues.sh Normal file
View File

@ -0,0 +1,210 @@
#!/bin/bash
# MY Network Server Issues Fix Script
# Исправляет проблемы с nginx и контейнерами для проекта в /home/uploader-bot
set -e
echo "=============================================="
echo "MY NETWORK SERVER FIX SCRIPT"
echo "Время: $(date)"
echo "=============================================="
PROJECT_DIR="/home/uploader-bot"
echo "🔧 Проверяю проект в: $PROJECT_DIR"
if [ ! -d "$PROJECT_DIR" ]; then
echo "❌ Директория проекта не найдена: $PROJECT_DIR"
exit 1
fi
cd "$PROJECT_DIR"
echo "✅ Работаю в: $(pwd)"
if [ ! -f "docker-compose.production.yml" ]; then
echo "❌ docker-compose.production.yml не найден!"
exit 1
fi
echo "✅ Docker compose файл найден"
echo ""
echo "=== 1. СОЗДАНИЕ NGINX КОНФИГУРАЦИИ ==="
echo "🔧 Создаю правильную nginx конфигурацию..."
cat > /tmp/nginx_uploader.conf << 'EOF'
server {
listen 80;
server_name _;
# API проксирование на приложение
location /api/ {
proxy_pass http://localhost:3000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
# Альтернативные порты для API
location /api5000/ {
proxy_pass http://localhost:5000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Health check
location /health {
proxy_pass http://localhost:3000/api/health;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Основная страница - пробуем API
location / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
sudo mv /tmp/nginx_uploader.conf /etc/nginx/sites-available/default
sudo ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
echo "✅ Nginx конфигурация создана"
echo ""
echo "=== 2. ПРОВЕРКА ТЕКУЩИХ КОНТЕЙНЕРОВ ==="
echo "Текущий статус контейнеров:"
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "=== 3. АНАЛИЗ ЛОГОВ ПРИЛОЖЕНИЯ ==="
# Найти контейнер приложения
APP_CONTAINER=$(docker ps --format "{{.Names}}" | grep -E "(app|uploader)" | head -1)
if [ -n "$APP_CONTAINER" ]; then
echo "📄 Логи контейнера $APP_CONTAINER (последние 15 строк):"
docker logs --tail=15 "$APP_CONTAINER" 2>&1 || echo "Не удалось получить логи"
else
echo "❌ Контейнер приложения не найден"
fi
echo ""
echo "=== 4. ПЕРЕЗАПУСК ПРОБЛЕМНЫХ КОНТЕЙНЕРОВ ==="
# Остановить только перезапускающиеся контейнеры
RESTARTING_CONTAINERS=$(docker ps -a --filter "status=restarting" --format "{{.Names}}")
if [ -n "$RESTARTING_CONTAINERS" ]; then
echo "🛑 Останавливаю перезапускающиеся контейнеры:"
echo "$RESTARTING_CONTAINERS"
echo "$RESTARTING_CONTAINERS" | xargs docker stop 2>/dev/null || true
echo "$RESTARTING_CONTAINERS" | xargs docker rm 2>/dev/null || true
else
echo "✅ Нет перезапускающихся контейнеров"
fi
# Удалить старые MariaDB контейнеры если есть
MARIADB_CONTAINERS=$(docker ps -a --format "{{.Names}}" | grep maria || true)
if [ -n "$MARIADB_CONTAINERS" ]; then
echo "🗑️ Удаляю старые MariaDB контейнеры:"
echo "$MARIADB_CONTAINERS" | xargs docker stop 2>/dev/null || true
echo "$MARIADB_CONTAINERS" | xargs docker rm 2>/dev/null || true
fi
echo ""
echo "=== 5. ЗАПУСК СЕРВИСОВ ==="
echo "🚀 Запуск Docker Compose..."
# Запуск основных сервисов
docker-compose -f docker-compose.production.yml up -d postgres redis
echo "⏳ Ждем запуска БД (10 секунд)..."
sleep 10
# Запуск приложения
echo "🚀 Запуск приложения..."
docker-compose -f docker-compose.production.yml up -d app
echo "⏳ Ждем запуска приложения (20 секунд)..."
sleep 20
echo ""
echo "=== 6. ПРОВЕРКА СТАТУСА ==="
echo "Новый статус контейнеров:"
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "=== 7. ТЕСТИРОВАНИЕ NGINX ==="
sudo nginx -t
if [ $? -eq 0 ]; then
sudo systemctl reload nginx
echo "✅ Nginx конфигурация корректна и перезагружена"
else
echo "❌ Ошибка в nginx конфигурации"
fi
echo ""
echo "=== 8. ПРОВЕРКА ПРИЛОЖЕНИЯ ==="
echo "Тест локальных соединений:"
sleep 5
# Проверка портов приложения
for port in 3000 5000; do
if timeout 5 curl -s http://localhost:$port/api/health > /dev/null 2>&1; then
echo "✅ localhost:$port/api/health - РАБОТАЕТ"
else
echo "❌ localhost:$port/api/health - НЕ РАБОТАЕТ"
fi
done
# Проверка через nginx
if timeout 5 curl -s http://localhost/api/health > /dev/null 2>&1; then
echo "✅ nginx proxy (/api/health) - РАБОТАЕТ"
else
echo "❌ nginx proxy (/api/health) - НЕ РАБОТАЕТ"
fi
if timeout 5 curl -s http://localhost/health > /dev/null 2>&1; then
echo "✅ nginx proxy (/health) - РАБОТАЕТ"
else
echo "❌ nginx proxy (/health) - НЕ РАБОТАЕТ"
fi
echo ""
echo "=== 9. ФИНАЛЬНЫЕ ЛОГИ ==="
APP_CONTAINER=$(docker ps --format "{{.Names}}" | grep -E "(app|uploader)" | head -1)
if [ -n "$APP_CONTAINER" ]; then
echo "📄 Финальные логи $APP_CONTAINER:"
docker logs --tail=10 "$APP_CONTAINER" 2>&1 || echo "Логи недоступны"
fi
echo ""
echo "=============================================="
echo "ИСПРАВЛЕНИЕ ЗАВЕРШЕНО!"
echo "Время: $(date)"
echo "=============================================="
echo ""
echo "📊 РЕЗУЛЬТАТ:"
echo "Проект: $PROJECT_DIR"
echo "Активные контейнеры:"
docker ps --format "{{.Names}}: {{.Status}}" | head -10
echo ""
echo "🌐 ВНЕШНИЙ ТЕСТ (выполните вручную):"
echo "curl -I http://$(curl -s ifconfig.me)/api/health"
echo "curl -I http://$(curl -s ifconfig.me)/health"
echo ""
echo "🔍 ДЛЯ ОТЛАДКИ:"
echo "docker logs \$(docker ps --format \"{{.Names}}\" | grep app | head -1)"
echo "sudo journalctl -u nginx -f"