#!/bin/bash # 원격 서버 환경 진단 스크립트 # SSH로 접속한 후 이 스크립트를 실행하여 환경 정보를 수집합니다. echo "═══════════════════════════════════════════════════════════════" echo " 원격 서버 환경 진단" echo "═══════════════════════════════════════════════════════════════" echo "" # 1. 네트워크 정보 echo "1️⃣ 네트워크 정보" echo "───────────────────────────────────────────────────────────────" echo "공인 IP (외부에서 접속 가능):" curl -s https://api.ipify.org echo "" echo "내부 IP 목록:" ip addr show | grep -E "inet |inet6 " | grep -v "127.0.0.1" echo "" echo "호스트명:" hostname echo "" echo "네트워크 인터페이스:" ip link show | grep -E "^[0-9]+:|UP|DOWN" echo "" # 2. 디렉토리 구조 echo "2️⃣ 웹 서버 디렉토리 구조" echo "───────────────────────────────────────────────────────────────" # /var/www 확인 if [ -d /var/www ]; then echo "✓ /var/www 존재" ls -la /var/www/ | head -20 else echo "✗ /var/www 없음" fi echo "" # /var/www/quant 확인 if [ -d /var/www/quant ]; then echo "✓ /var/www/quant 존재" ls -la /var/www/quant/ du -sh /var/www/quant/* else echo "✗ /var/www/quant 없음" fi echo "" # /var/www/quant/publish 확인 if [ -d /var/www/quant/publish ]; then echo "✓ /var/www/quant/publish 존재" ls -la /var/www/quant/publish/ | head -10 du -sh /var/www/quant/publish else echo "✗ /var/www/quant/publish 없음 (첫 배포)" fi echo "" # 3. Nginx 설정 echo "3️⃣ Nginx 설정" echo "───────────────────────────────────────────────────────────────" if command -v nginx &> /dev/null; then echo "✓ Nginx 설치됨" nginx -v echo "" echo "Nginx 설정 파일 위치:" nginx -T 2>/dev/null | grep "configuration file" | head -1 echo "" echo "Nginx 실행 사용자:" ps aux | grep nginx | grep -v grep | head -1 echo "" echo "/quant 관련 설정:" cat /etc/nginx/sites-available/default 2>/dev/null | grep -A 10 -B 2 "quant" || echo "quant 관련 설정 없음" echo "" else echo "✗ Nginx 미설치" fi echo "" # 4. 웹 서버 권한 echo "4️⃣ 파일 권한 및 소유자" echo "───────────────────────────────────────────────────────────────" echo "웹 서버 사용자:" ps aux | grep -E "nginx|apache" | grep -v grep | head -1 | awk '{print $1}' || echo "확인 필요" echo "" echo "/var/www 권한:" ls -ld /var/www echo "" if [ -d /var/www/quant ]; then echo "/var/www/quant 권한:" ls -ld /var/www/quant echo "" fi if [ -d /var/www/quant/publish ]; then echo "/var/www/quant/publish 권한:" ls -ld /var/www/quant/publish echo "" fi echo "" # 5. 포트 상태 echo "5️⃣ 포트 상태" echo "───────────────────────────────────────────────────────────────" netstat -tuln 2>/dev/null | grep -E "^Proto|:80|:443" || ss -tuln | grep -E "LISTEN|:80|:443" echo "" echo "" # 6. 시스템 정보 echo "6️⃣ 시스템 정보" echo "───────────────────────────────────────────────────────────────" echo "OS:" uname -a echo "" echo "Linux 배포판:" lsb_release -a 2>/dev/null || cat /etc/os-release | head -3 echo "" echo "디스크 공간:" df -h | grep -E "^/dev|Filesystem" echo "" echo "" # 7. Sudo 권한 echo "7️⃣ 현재 사용자 정보" echo "───────────────────────────────────────────────────────────────" echo "현재 사용자:" whoami echo "" echo "사용자 그룹:" groups echo "" echo "Sudo 권한:" sudo -l 2>/dev/null | grep -E "NOPASSWD|nginx|systemctl" || echo "sudo 권한 확인 필요" echo "" echo "" # 8. Git/Gitea 정보 echo "8️⃣ Git/Gitea 정보" echo "───────────────────────────────────────────────────────────────" if command -v git &> /dev/null; then echo "✓ Git 설치됨" git --version else echo "✗ Git 미설치" fi echo "" if command -v gitea &> /dev/null; then echo "✓ Gitea 설치됨" gitea -v else echo "✗ Gitea 미설치" fi echo "" if [ -d /var/lib/gitea ] || [ -d /home/git/gitea-repositories ]; then echo "Gitea 데이터 위치:" [ -d /var/lib/gitea ] && echo " /var/lib/gitea" [ -d /home/git/gitea-repositories ] && echo " /home/git/gitea-repositories" else echo "Gitea 데이터 위치: 확인 필요" fi echo "" echo "" echo "═══════════════════════════════════════════════════════════════" echo "✅ 진단 완료" echo "═══════════════════════════════════════════════════════════════" echo "" echo "위 정보를 바탕으로 배포 스크립트를 업데이트합니다." echo "" echo "특히 확인할 사항:" echo " 1. 내부 IP 주소 (172로 시작하는 IP)" echo " 2. /var/www/quant 경로 (또는 다른 경로?)" echo " 3. 웹 서버 사용자 (www-data? nobody? 다른 사용자?)" echo " 4. Nginx 설정 파일 위치" echo " 5. /quant에 대한 nginx 설정" echo ""