Files
links/scripts/check-nginx.sh
Andrey K. Choi 17bd14383b
Some checks failed
continuous-integration/drone/push Build is failing
nginx test scripts
2025-11-02 14:56:47 +09:00

216 lines
8.0 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/check-nginx.sh - Проверка настроек nginx для CatLink
set -e
echo "🔍 Проверка настроек nginx для CatLink"
echo "======================================"
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Функция для проверки с цветным выводом
check_status() {
if [ $? -eq 0 ]; then
echo -e "${GREEN}$1${NC}"
return 0
else
echo -e "${RED}$1${NC}"
return 1
fi
}
echo ""
echo -e "${BLUE}1. Проверка установки nginx${NC}"
echo "------------------------"
# Проверка установки nginx
if command -v nginx &> /dev/null; then
echo -e "${GREEN}✅ nginx установлен: $(nginx -v 2>&1)${NC}"
else
echo -e "${RED}❌ nginx не установлен${NC}"
exit 1
fi
# Проверка статуса nginx
echo ""
echo -e "${BLUE}2. Проверка статуса службы nginx${NC}"
echo "-------------------------------"
systemctl is-active nginx &> /dev/null
check_status "nginx активен"
systemctl is-enabled nginx &> /dev/null
check_status "nginx включен в автозагрузку"
echo ""
echo -e "${BLUE}3. Проверка конфигурации nginx${NC}"
echo "--------------------------------"
# Проверка синтаксиса конфигурации
sudo nginx -t &> /dev/null
check_status "Синтаксис конфигурации nginx корректен"
# Проверка наличия конфигурации для CatLink
if [ -f "/etc/nginx/sites-available/links" ]; then
echo -e "${GREEN}✅ Конфигурация CatLink найдена: /etc/nginx/sites-available/links${NC}"
else
echo -e "${RED}❌ Конфигурация CatLink не найдена${NC}"
fi
if [ -L "/etc/nginx/sites-enabled/links" ]; then
echo -e "${GREEN}✅ Конфигурация CatLink активна: /etc/nginx/sites-enabled/links${NC}"
else
echo -e "${RED}❌ Конфигурация CatLink не активна${NC}"
fi
echo ""
echo -e "${BLUE}4. Проверка портов${NC}"
echo "----------------"
# Проверка прослушиваемых портов
if ss -tlnp | grep -q ":80.*nginx" 2>/dev/null; then
echo -e "${GREEN}✅ nginx слушает порт 80${NC}"
else
echo -e "${RED}❌ nginx НЕ слушает порт 80${NC}"
fi
if ss -tlnp | grep -q ":443.*nginx" 2>/dev/null; then
echo -e "${GREEN}✅ nginx слушает порт 443 (SSL)${NC}"
else
echo -e "${YELLOW}⚠️ nginx НЕ слушает порт 443 (SSL не настроен)${NC}"
fi
echo ""
echo -e "${BLUE}5. Проверка доступности backend сервисов${NC}"
echo "---------------------------------------"
# Проверка доступности backend на порту 8000
if curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/ | grep -q "200\|404\|403"; then
echo -e "${GREEN}✅ Backend доступен на localhost:8000${NC}"
else
echo -e "${RED}❌ Backend НЕ доступен на localhost:8000${NC}"
fi
# Проверка доступности frontend на порту 3000
if curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/ | grep -q "200\|404"; then
echo -e "${GREEN}✅ Frontend доступен на localhost:3000${NC}"
else
echo -e "${RED}❌ Frontend НЕ доступен на localhost:3000${NC}"
fi
echo ""
echo -e "${BLUE}6. Проверка доступности через nginx${NC}"
echo "-----------------------------------"
# Проверка главной страницы
if curl -s -o /dev/null -w "%{http_code}" http://localhost/ | grep -q "200"; then
echo -e "${GREEN}✅ Главная страница доступна через nginx${NC}"
else
echo -e "${RED}❌ Главная страница НЕ доступна через nginx${NC}"
fi
# Проверка API через nginx
if curl -s -o /dev/null -w "%{http_code}" http://localhost/api/ | grep -q "200\|404\|403"; then
echo -e "${GREEN}✅ API доступно через nginx${NC}"
else
echo -e "${RED}❌ API НЕ доступно через nginx${NC}"
fi
# Проверка admin через nginx
if curl -s -o /dev/null -w "%{http_code}" http://localhost/admin/ | grep -q "200\|302"; then
echo -e "${GREEN}✅ Admin доступен через nginx${NC}"
else
echo -e "${RED}❌ Admin НЕ доступен через nginx${NC}"
fi
echo ""
echo -e "${BLUE}7. Проверка доменных имен${NC}"
echo "--------------------------"
# Проверка доступности по доменному имени
if curl -s -o /dev/null -w "%{http_code}" http://links.shareon.kr/ | grep -q "200"; then
echo -e "${GREEN}✅ Сайт доступен по домену links.shareon.kr${NC}"
else
echo -e "${YELLOW}⚠️ Сайт НЕ доступен по домену links.shareon.kr (проверьте DNS)${NC}"
fi
if curl -s -o /dev/null -w "%{http_code}" http://sharon.kr/ | grep -q "200"; then
echo -e "${GREEN}✅ Сайт доступен по домену sharon.kr${NC}"
else
echo -e "${YELLOW}⚠️ Сайт НЕ доступен по домену sharon.kr (проверьте DNS)${NC}"
fi
echo ""
echo -e "${BLUE}8. Проверка SSL сертификатов${NC}"
echo "----------------------------"
# Проверка SSL сертификатов
if [ -d "/etc/letsencrypt/live/links.shareon.kr" ]; then
echo -e "${GREEN}✅ SSL сертификат для links.shareon.kr найден${NC}"
# Проверка срока действия сертификата
if openssl x509 -in /etc/letsencrypt/live/links.shareon.kr/cert.pem -noout -checkend 604800 &> /dev/null; then
echo -e "${GREEN}✅ SSL сертификат действителен более 7 дней${NC}"
else
echo -e "${YELLOW}⚠️ SSL сертификат истекает менее чем через 7 дней${NC}"
fi
else
echo -e "${YELLOW}⚠️ SSL сертификат не найден${NC}"
fi
echo ""
echo -e "${BLUE}9. Анализ конфигурации CatLink${NC}"
echo "-------------------------------"
if [ -f "/etc/nginx/sites-available/links" ]; then
echo "📄 Содержимое конфигурации nginx для CatLink:"
echo "=============================================="
cat /etc/nginx/sites-available/links
else
echo -e "${RED}❌ Конфигурация не найдена${NC}"
fi
echo ""
echo -e "${BLUE}10. Проверка логов nginx${NC}"
echo "------------------------"
echo "📊 Последние 5 строк из access.log:"
sudo tail -5 /var/log/nginx/access.log 2>/dev/null || echo "Лог недоступен"
echo ""
echo "📊 Последние 5 строк из error.log:"
sudo tail -5 /var/log/nginx/error.log 2>/dev/null || echo "Лог недоступен"
echo ""
echo -e "${BLUE}11. Рекомендации${NC}"
echo "---------------"
if ! systemctl is-active nginx &> /dev/null; then
echo -e "${YELLOW}💡 Запустите nginx: sudo systemctl start nginx${NC}"
fi
if [ ! -f "/etc/nginx/sites-available/links" ]; then
echo -e "${YELLOW}💡 Создайте конфигурацию: ./scripts/setup-nginx.sh${NC}"
fi
if [ ! -d "/etc/letsencrypt/live/links.shareon.kr" ]; then
echo -e "${YELLOW}💡 Получите SSL сертификат: make ssl-cert${NC}"
fi
if ! curl -s -o /dev/null http://localhost:3000/; then
echo -e "${YELLOW}💡 Запустите контейнеры: make up-prod${NC}"
fi
echo ""
echo -e "${GREEN}🎉 Проверка nginx завершена!${NC}"
echo ""
echo -e "${BLUE}Для получения помощи:${NC}"
echo "• Перезапуск nginx: sudo systemctl restart nginx"
echo "• Проверка конфигурации: sudo nginx -t"
echo "• Просмотр логов: sudo journalctl -u nginx -f"
echo "• Настройка CatLink: ./scripts/setup-nginx.sh"