diff --git a/ENVIRONMENT_DIAGNOSIS.md b/ENVIRONMENT_DIAGNOSIS.md new file mode 100644 index 0000000..805a3b1 --- /dev/null +++ b/ENVIRONMENT_DIAGNOSIS.md @@ -0,0 +1,210 @@ +# πŸ” 원격 μ„œλ²„ ν™˜κ²½ 진단 + +**λͺ©ν‘œ**: SSH둜 μ ‘μ†ν•˜μ—¬ 원격 μ„œλ²„μ˜ μ •ν™•ν•œ ꡬ쑰와 섀정을 νŒŒμ•…ν•œ ν›„ 배포 슀크립트λ₯Ό λ§žμΆ€ν˜•μœΌλ‘œ μž‘μ„± + +--- + +## πŸ“‹ 진단 절차 + +### Step 1: SSH 접속 + +```bash +# 원격 μ„œλ²„μ— SSH 접속 +ssh kjh2064@178.104.200.7 + +# λ˜λŠ” 이미 λ‚΄λΆ€ IPλ₯Ό μ•Œκ³  μžˆλ‹€λ©΄ +ssh kjh2064@172.x.x.x +``` + +### Step 2: 진단 슀크립트 μ‹€ν–‰ + +```bash +# λ‘œμ»¬μ—μ„œ 슀크립트λ₯Ό μ›κ²©μœΌλ‘œ μ‹€ν–‰ +ssh kjh2064@178.104.200.7 'bash -s' < diagnose-environment.sh + +# λ˜λŠ” 원격에 μ ‘μ†ν•œ ν›„ μ‹€ν–‰ +bash < <(curl -s https://raw.githubusercontent.com/.../diagnose-environment.sh) + +# λ˜λŠ” 직접 μ‹€ν–‰ +chmod +x diagnose-environment.sh +./diagnose-environment.sh +``` + +### Step 3: 좜λ ₯ κ²°κ³Ό 확인 + +진단 μŠ€ν¬λ¦½νŠΈκ°€ λ‹€μŒ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€: + +``` +1. λ„€νŠΈμ›Œν¬ 정보 + - 곡인 IP: 178.104.200.7 (확인됨) + - λ‚΄λΆ€ IP: 172.x.x.x (μ—¬κΈ°μ„œ 확인!) + - 호슀트λͺ… + - λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€ + +2. μ›Ή μ„œλ²„ 디렉토리 ꡬ쑰 + - /var/www μ—¬λΆ€ + - /var/www/quant μ—¬λΆ€ + - /var/www/quant/publish μ—¬λΆ€ + - μ‹€μ œ 경둜 (λ‹€λ₯Ό 수 있음) + +3. Nginx μ„€μ • + - Nginx μ„€μΉ˜ 확인 + - μ„€μ • 파일 μœ„μΉ˜ + - /quant κ΄€λ ¨ μ„€μ • + +4. 파일 κΆŒν•œ 및 μ†Œμœ μž + - μ›Ή μ„œλ²„ μ‚¬μš©μž (www-data? nobody? λ‹€λ₯Έ μ‚¬μš©μž?) + - 디렉토리 κΆŒν•œ + +5. 포트 μƒνƒœ + - 80, 443 포트 μƒνƒœ + - λ°”μΈλ”©λœ μ£Όμ†Œ + +6. μ‹œμŠ€ν…œ 정보 + - OS μ’…λ₯˜ 및 버전 + - λ””μŠ€ν¬ 곡간 + +7. Sudo κΆŒν•œ + - ν˜„μž¬ μ‚¬μš©μžμ˜ sudo κΆŒν•œ + - systemctl μ‚¬μš© κ°€λŠ₯ μ—¬λΆ€ + +8. Git/Gitea 정보 + - Gitea μ„€μΉ˜ μœ„μΉ˜ + - Gitea 데이터 μ €μž₯μ†Œ +``` + +--- + +## πŸ“Š 진단 κ²°κ³Ό 뢄석 + +### μ˜ˆμƒλ˜λŠ” 좜λ ₯ κ°’λ“€ + +| ν•­λͺ© | μ˜ˆμƒκ°’ | μ‹€μ œκ°’ | +|------|--------|--------| +| **곡인 IP** | 178.104.200.7 | βœ“ | +| **λ‚΄λΆ€ IP** | 172.x.x.x | ? | +| **μ›Ή μ„œλ²„ 경둜** | /var/www/quant | ? | +| **μ›Ή μ„œλ²„ μ‚¬μš©μž** | www-data | ? | +| **Nginx μ„€μ •** | /etc/nginx/sites-available/default | ? | +| **OS** | Ubuntu 20.04+ | ? | + +### 확인할 핡심 정보 + +1. **λ‚΄λΆ€ IP μ£Όμ†Œ** (172둜 μ‹œμž‘) + ``` + ip addr show | grep "inet" + β†’ inet 172.x.x.x/xx + ``` + +2. **μ›Ή μ„œλ²„ 경둜** + ``` + ls -la /var/www/quant/ + β†’ μ‹€μ œ 배포 경둜 확인 + ``` + +3. **μ›Ή μ„œλ²„ μ‚¬μš©μž** + ``` + ps aux | grep nginx | head -1 + β†’ nginx 12345 0.0 0.1 ... + ``` + +4. **Nginx μ„€μ •** + ``` + grep -r "quant" /etc/nginx/ + β†’ location /quant μ„€μ • 확인 + ``` + +5. **Sudo κΆŒν•œ** + ``` + sudo -l + β†’ systemctl restart nginx κΆŒν•œ 확인 + ``` + +--- + +## πŸ”§ 슀크립트 κ²°κ³Ό 보고 양식 + +진단 슀크립트 μ‹€ν–‰ ν›„ λ‹€μŒ 정보λ₯Ό μ œκ³΅ν•΄μ£Όμ„Έμš”: + +### λ„€νŠΈμ›Œν¬ 정보 +- λ‚΄λΆ€ IP: `172.x.x.x` λ˜λŠ” λ‹€λ₯Έ μ£Όμ†Œ? +- 호슀트λͺ…: ? +- κΈ°λ³Έ κ²Œμ΄νŠΈμ›¨μ΄: ? + +### 디렉토리 ꡬ쑰 +- /var/www 쑴재: O / X +- /var/www/quant 쑴재: O / X +- /var/www/quant/publish 쑴재: O / X +- μ‹€μ œ μ›Ή μ„œλΉ™ 경둜: ? + +### Nginx μ„€μ • +- Nginx 버전: ? +- μ„€μ • 파일: /etc/nginx/sites-available/default λ˜λŠ” λ‹€λ₯Έ 경둜? +- /quant μ„€μ • 있음: O / X +- 루트 경둜: ? + +### 파일 κΆŒν•œ +- μ›Ή μ„œλ²„ μ‚¬μš©μž: www-data λ˜λŠ” ? +- /var/www/quant μ†Œμœ μž: ? +- /var/www/quant κΆŒν•œ: ? + +### μ‹œμŠ€ν…œ 정보 +- OS: Ubuntu 20.04 λ˜λŠ” ? +- λ””μŠ€ν¬ μ—¬μœ : ?MB + +### Sudo κΆŒν•œ +- sudo -l 좜λ ₯: + ``` + λ³΅μ‚¬ν•΄μ£Όμ„Έμš” + ``` + +--- + +## πŸ“ μˆ˜μ§‘ ν›„ μˆ˜ν–‰ν•  μž‘μ—… + +μœ„ 정보λ₯Ό 받은 ν›„: + +1. βœ… μ •ν™•ν•œ λ‚΄λΆ€ IP둜 배포 슀크립트 μˆ˜μ • +2. βœ… μ‹€μ œ 경둜둜 deploy-manual.sh μˆ˜μ • +3. βœ… μ›Ή μ„œλ²„ μ‚¬μš©μžλ‘œ κΆŒν•œ μ„€μ • μˆ˜μ • +4. βœ… Nginx 섀정에 맞게 배포 절차 μˆ˜μ • +5. βœ… λͺ¨λ“  λ¬Έμ„œ (DEPLOYMENT_SSH_GUIDE.md, CI_CD_PIPELINE.md λ“±) μ—…λ°μ΄νŠΈ + +--- + +## πŸš€ λΉ λ₯Έ 진단 (ν•œ 쀄 λͺ…λ Ήμ–΄) + +```bash +# SSH 접속 ν›„ ν•œ λ²ˆμ— ν•„μš”ν•œ μ •λ³΄λ§Œ μΆ”μΆœ +echo "=== λ‚΄λΆ€ IP ===" && ip addr show | grep "inet " | grep -v 127.0.0.1 && \ +echo "=== μ›Ή μ„œλ²„ 경둜 ===" && ls -la /var/www/ && \ +echo "=== Nginx μ‚¬μš©μž ===" && ps aux | grep nginx | head -1 && \ +echo "=== Sudo κΆŒν•œ ===" && sudo -l | head -5 +``` + +--- + +## ⚑ 진단 ν›„ λ‹€μŒ 단계 + +1. **진단 κ²°κ³Ό 곡유** + - μœ„μ˜ "슀크립트 κ²°κ³Ό 보고 양식" λ‚΄μš©μ„ μ œκ³΅ν•΄μ£Όμ„Έμš” + +2. **배포 슀크립트 μˆ˜μ •** + - μ •ν™•ν•œ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ deploy-manual.sh 맞좀 μˆ˜μ • + - λ‚΄λΆ€ IP, 경둜, μ‚¬μš©μž λ“± μ •ν™•νžˆ 반영 + +3. **배포 μ‹€ν–‰** + ```bash + chmod +x deploy-manual.sh + ./deploy-manual.sh [μ‹€μ œ_λ‚΄λΆ€_IP] + ``` + +4. **검증** + ```bash + curl -I http://178.104.200.7/quant/ + ``` + +--- + +**진단을 μ™„λ£Œν•œ ν›„ κ²°κ³Όλ₯Ό κ³΅μœ ν•΄μ£Όμ„Έμš”!** +μ •ν™•ν•œ ν™˜κ²½ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ μ™„λ²½ν•˜κ²Œ λ§žμΆ€ν˜• 배포 슀크립트λ₯Ό μž‘μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€. 🎯 diff --git a/diagnose-environment.sh b/diagnose-environment.sh new file mode 100644 index 0000000..f3a8301 --- /dev/null +++ b/diagnose-environment.sh @@ -0,0 +1,202 @@ +#!/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 ""