feat(diagnosis): Add environment diagnosis script and guide
환경 진단 도구: diagnose-environment.sh: - 네트워크 정보 (공인 IP, 내부 IP) - 디렉토리 구조 (/var/www 경로 확인) - Nginx 설정 확인 - 파일 권한 및 소유자 - 포트 상태 - 시스템 정보 - Sudo 권한 - Git/Gitea 정보 ENVIRONMENT_DIAGNOSIS.md: - 진단 절차 가이드 - 실행 방법 (3가지) - 출력 결과 분석 - 결과 보고 양식 - 빠른 진단 명령어 - 수정 후 다음 단계 목표: - 정확한 내부 IP 확인 (172.x.x.x) - 실제 웹 서버 경로 파악 - 웹 서버 사용자 확인 - Nginx 설정 파악 - 권한 구조 파악 결과 수집 후: - deploy-manual.sh 맞춤 수정 - 모든 배포 문서 업데이트 - 배포 실행 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**진단을 완료한 후 결과를 공유해주세요!**
|
||||||
|
정확한 환경 정보를 바탕으로 완벽하게 맞춤형 배포 스크립트를 작성하겠습니다. 🎯
|
||||||
@@ -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 ""
|
||||||
Reference in New Issue
Block a user