Add comprehensive NAS deployment scripts and guides
- Add deploy-to-nas.sh: automated deployment script with SSH port 2222 - Add manual-nas-deployment-guide.md: step-by-step manual deployment guide - Include service start/stop scripts and monitoring tools - Add troubleshooting and auto-start configuration - Support both automated and manual deployment approaches
This commit is contained in:
@@ -37,7 +37,9 @@
|
||||
"Bash(start http://localhost:8000)",
|
||||
"Bash(npm --version)",
|
||||
"mcp__sequential-thinking__sequentialthinking",
|
||||
"Bash(git commit:*)"
|
||||
"Bash(git commit:*)",
|
||||
"Bash(chmod:*)",
|
||||
"Bash(./deploy-to-nas.sh:*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": [],
|
||||
|
266
deploy-to-nas.sh
Normal file
266
deploy-to-nas.sh
Normal file
@@ -0,0 +1,266 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 시놀로지 NAS 자료실 배포 스크립트
|
||||
# 사용법: ./deploy-to-nas.sh [nas-ip] [project-name]
|
||||
|
||||
# 기본 설정
|
||||
NAS_IP="${1:-119.64.1.86}"
|
||||
PROJECT_NAME="${2:-jaryo}"
|
||||
DEPLOY_DIR="/volume1/web/$PROJECT_NAME"
|
||||
SERVICE_PORT="3005"
|
||||
GITEA_URL="http://$NAS_IP:3000/vibsin9322/jaryo.git"
|
||||
|
||||
echo "=========================================="
|
||||
echo "🚀 시놀로지 NAS 자료실 배포 시작"
|
||||
echo "=========================================="
|
||||
echo "NAS IP: $NAS_IP"
|
||||
echo "프로젝트: $PROJECT_NAME"
|
||||
echo "배포 경로: $DEPLOY_DIR"
|
||||
echo "서비스 포트: $SERVICE_PORT"
|
||||
echo "Gitea URL: $GITEA_URL"
|
||||
echo "=========================================="
|
||||
|
||||
# 사전 요구사항 확인
|
||||
echo "📋 1단계: 사전 요구사항 확인"
|
||||
|
||||
# SSH 연결 테스트 (포트 2222)
|
||||
echo "🔗 SSH 연결 테스트 중... (포트 2222)"
|
||||
if ! ssh -p 2222 -o ConnectTimeout=5 admin@$NAS_IP "echo 'SSH 연결 성공'" 2>/dev/null; then
|
||||
echo "❌ SSH 연결 실패. 다음을 확인하세요:"
|
||||
echo " - NAS IP 주소: $NAS_IP"
|
||||
echo " - SSH 포트: 2222"
|
||||
echo " - SSH 서비스 활성화 (DSM > 제어판 > 터미널 및 SNMP)"
|
||||
echo " - 방화벽 설정 (포트 2222 허용)"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ SSH 연결 성공"
|
||||
|
||||
# Node.js 설치 확인
|
||||
echo "📦 Node.js 설치 확인 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "which node" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Node.js가 설치되지 않았습니다."
|
||||
echo "DSM 패키지 센터에서 Node.js를 설치하세요."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NODE_VERSION=$(ssh -p 2222 admin@$NAS_IP "node --version")
|
||||
echo "✅ Node.js 설치됨: $NODE_VERSION"
|
||||
|
||||
# Git 설치 확인
|
||||
echo "📦 Git 설치 확인 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "which git" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Git이 설치되지 않았습니다."
|
||||
echo "DSM 패키지 센터에서 Git Server를 설치하거나 다음 명령을 실행하세요:"
|
||||
echo "ssh -p 2222 admin@$NAS_IP 'sudo apt update && sudo apt install git'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GIT_VERSION=$(ssh -p 2222 admin@$NAS_IP "git --version")
|
||||
echo "✅ Git 설치됨: $GIT_VERSION"
|
||||
|
||||
# 2단계: 소스 코드 배포
|
||||
echo ""
|
||||
echo "📂 2단계: 소스 코드 배포"
|
||||
|
||||
# 기존 배포 디렉토리 확인
|
||||
echo "🗂️ 배포 디렉토리 확인 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
if [ -d '$DEPLOY_DIR' ]; then
|
||||
echo '⚠️ 기존 배포가 존재합니다: $DEPLOY_DIR'
|
||||
echo '백업 생성 중...'
|
||||
sudo cp -r '$DEPLOY_DIR' '${DEPLOY_DIR}_backup_$(date +%Y%m%d_%H%M%S)'
|
||||
echo '기존 배포 제거 중...'
|
||||
sudo rm -rf '$DEPLOY_DIR'
|
||||
fi
|
||||
"
|
||||
|
||||
# 배포 디렉토리 생성
|
||||
echo "📁 배포 디렉토리 생성 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
sudo mkdir -p '$DEPLOY_DIR'
|
||||
sudo chown admin:users '$DEPLOY_DIR'
|
||||
cd '$DEPLOY_DIR'
|
||||
"
|
||||
|
||||
# Git 클론
|
||||
echo "📥 Gitea에서 소스 코드 클론 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
cd '$DEPLOY_DIR'
|
||||
git clone '$GITEA_URL' .
|
||||
if [ \$? -ne 0 ]; then
|
||||
echo '❌ Git 클론 실패'
|
||||
exit 1
|
||||
fi
|
||||
echo '✅ 소스 코드 클론 완료'
|
||||
"
|
||||
|
||||
# 3단계: 의존성 설치 및 빌드
|
||||
echo ""
|
||||
echo "🔧 3단계: 의존성 설치 및 빌드"
|
||||
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
cd '$DEPLOY_DIR'
|
||||
|
||||
# 기존 node_modules 제거
|
||||
if [ -d 'node_modules' ]; then
|
||||
echo '🗑️ 기존 node_modules 제거 중...'
|
||||
rm -rf node_modules package-lock.json
|
||||
fi
|
||||
|
||||
# 의존성 설치
|
||||
echo '📦 의존성 설치 중...'
|
||||
npm install
|
||||
|
||||
if [ \$? -ne 0 ]; then
|
||||
echo '❌ npm install 실패'
|
||||
exit 1
|
||||
fi
|
||||
echo '✅ 의존성 설치 완료'
|
||||
|
||||
# 데이터베이스 초기화
|
||||
if [ -f 'scripts/init-database.js' ]; then
|
||||
echo '🗄️ 데이터베이스 초기화 중...'
|
||||
npm run init-db
|
||||
echo '✅ 데이터베이스 초기화 완료'
|
||||
fi
|
||||
"
|
||||
|
||||
# 4단계: 서비스 설정
|
||||
echo ""
|
||||
echo "⚙️ 4단계: 서비스 설정"
|
||||
|
||||
# 시작 스크립트 생성
|
||||
echo "📝 시작 스크립트 생성 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
cat > '$DEPLOY_DIR/start-nas-service.sh' << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# 자료실 NAS 서비스 시작 스크립트
|
||||
PROJECT_DIR='$DEPLOY_DIR'
|
||||
SERVICE_PORT='$SERVICE_PORT'
|
||||
PID_FILE='\$PROJECT_DIR/jaryo-nas.pid'
|
||||
LOG_FILE='\$PROJECT_DIR/logs/app.log'
|
||||
|
||||
# 로그 디렉토리 생성
|
||||
mkdir -p '\$PROJECT_DIR/logs'
|
||||
|
||||
# 기존 프로세스 확인 및 종료
|
||||
if [ -f '\$PID_FILE' ]; then
|
||||
OLD_PID=\$(cat '\$PID_FILE')
|
||||
if kill -0 '\$OLD_PID' 2>/dev/null; then
|
||||
echo '기존 서비스 종료 중... (PID: '\$OLD_PID')'
|
||||
kill '\$OLD_PID'
|
||||
sleep 2
|
||||
fi
|
||||
rm -f '\$PID_FILE'
|
||||
fi
|
||||
|
||||
# 포트 사용 확인
|
||||
if netstat -tulpn | grep :'$SERVICE_PORT' >/dev/null; then
|
||||
echo '⚠️ 포트 '$SERVICE_PORT'가 이미 사용 중입니다.'
|
||||
echo '사용 중인 프로세스:'
|
||||
netstat -tulpn | grep :'$SERVICE_PORT'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 서비스 시작
|
||||
echo '🚀 자료실 서비스 시작 중...'
|
||||
cd '\$PROJECT_DIR'
|
||||
PORT='$SERVICE_PORT' nohup node server.js > '\$LOG_FILE' 2>&1 &
|
||||
echo \$! > '\$PID_FILE'
|
||||
|
||||
sleep 2
|
||||
|
||||
# 시작 확인
|
||||
if kill -0 \$(cat '\$PID_FILE') 2>/dev/null; then
|
||||
echo '✅ 자료실 서비스 시작 완료!'
|
||||
echo '📍 접속 URL: http://$NAS_IP:$SERVICE_PORT'
|
||||
echo '📋 PID: '\$(cat '\$PID_FILE')
|
||||
echo '📄 로그: '\$LOG_FILE'
|
||||
else
|
||||
echo '❌ 서비스 시작 실패'
|
||||
echo '로그 확인:'
|
||||
tail -20 '\$LOG_FILE'
|
||||
exit 1
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x '$DEPLOY_DIR/start-nas-service.sh'
|
||||
"
|
||||
|
||||
# 중지 스크립트 생성
|
||||
echo "📝 중지 스크립트 생성 중..."
|
||||
ssh -p 2222 admin@$NAS_IP "
|
||||
cat > '$DEPLOY_DIR/stop-nas-service.sh' << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# 자료실 NAS 서비스 중지 스크립트
|
||||
PROJECT_DIR='$DEPLOY_DIR'
|
||||
PID_FILE='\$PROJECT_DIR/jaryo-nas.pid'
|
||||
|
||||
if [ -f '\$PID_FILE' ]; then
|
||||
PID=\$(cat '\$PID_FILE')
|
||||
if kill -0 '\$PID' 2>/dev/null; then
|
||||
echo '🛑 자료실 서비스 중지 중... (PID: '\$PID')'
|
||||
kill '\$PID'
|
||||
sleep 2
|
||||
|
||||
# 강제 종료 확인
|
||||
if kill -0 '\$PID' 2>/dev/null; then
|
||||
echo '⚡ 강제 종료 중...'
|
||||
kill -9 '\$PID'
|
||||
fi
|
||||
|
||||
rm -f '\$PID_FILE'
|
||||
echo '✅ 자료실 서비스 중지 완료'
|
||||
else
|
||||
echo '⚠️ 프로세스가 이미 종료됨'
|
||||
rm -f '\$PID_FILE'
|
||||
fi
|
||||
else
|
||||
echo '⚠️ PID 파일이 없습니다. 수동으로 프로세스를 확인하세요.'
|
||||
echo '실행 중인 Node.js 프로세스:'
|
||||
ps aux | grep 'node.*server.js' | grep -v grep
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x '$DEPLOY_DIR/stop-nas-service.sh'
|
||||
"
|
||||
|
||||
# 5단계: 서비스 시작
|
||||
echo ""
|
||||
echo "🎬 5단계: 서비스 시작"
|
||||
|
||||
ssh -p 2222 admin@$NAS_IP "$DEPLOY_DIR/start-nas-service.sh"
|
||||
|
||||
# 6단계: 접속 테스트
|
||||
echo ""
|
||||
echo "🧪 6단계: 접속 테스트"
|
||||
|
||||
sleep 3
|
||||
|
||||
echo "🌐 서비스 상태 확인 중..."
|
||||
if curl -s "http://$NAS_IP:$SERVICE_PORT" >/dev/null; then
|
||||
echo "✅ 자료실 서비스 정상 작동!"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "🎉 배포 완료!"
|
||||
echo "=========================================="
|
||||
echo "📍 접속 URL: http://$NAS_IP:$SERVICE_PORT"
|
||||
echo "🔧 관리자 URL: http://$NAS_IP:$SERVICE_PORT/admin"
|
||||
echo "📂 배포 경로: $DEPLOY_DIR"
|
||||
echo "📄 로그 파일: $DEPLOY_DIR/logs/app.log"
|
||||
echo ""
|
||||
echo "🔧 서비스 관리:"
|
||||
echo " 시작: ssh -p 2222 admin@$NAS_IP '$DEPLOY_DIR/start-nas-service.sh'"
|
||||
echo " 중지: ssh -p 2222 admin@$NAS_IP '$DEPLOY_DIR/stop-nas-service.sh'"
|
||||
echo " 로그: ssh -p 2222 admin@$NAS_IP 'tail -f $DEPLOY_DIR/logs/app.log'"
|
||||
echo ""
|
||||
echo "📱 브라우저에서 http://$NAS_IP:$SERVICE_PORT 접속하세요!"
|
||||
else
|
||||
echo "❌ 서비스 접속 실패"
|
||||
echo "로그 확인:"
|
||||
ssh -p 2222 admin@$NAS_IP "tail -20 $DEPLOY_DIR/logs/app.log"
|
||||
fi
|
328
manual-nas-deployment-guide.md
Normal file
328
manual-nas-deployment-guide.md
Normal file
@@ -0,0 +1,328 @@
|
||||
# 시놀로지 NAS 수동 배포 가이드
|
||||
|
||||
## 🚀 시놀로지 NAS에서 자료실 서비스 배포하기
|
||||
|
||||
### 사전 준비사항 ✅
|
||||
|
||||
1. **DSM 패키지 설치 확인**
|
||||
- Node.js v16+ (패키지 센터에서 설치)
|
||||
- Git Server (패키지 센터에서 설치)
|
||||
- SSH 서비스 활성화 (제어판 > 터미널 및 SNMP)
|
||||
|
||||
2. **방화벽 설정**
|
||||
- SSH 포트: 2222 허용
|
||||
- 서비스 포트: 3005 허용
|
||||
- Gitea 포트: 3000 허용
|
||||
|
||||
### 1단계: SSH 접속 🔗
|
||||
|
||||
```bash
|
||||
# Windows에서 NAS 접속
|
||||
ssh -p 2222 admin@119.64.1.86
|
||||
|
||||
# 접속 후 관리자 권한 확인
|
||||
sudo whoami
|
||||
```
|
||||
|
||||
### 2단계: 배포 디렉토리 준비 📁
|
||||
|
||||
```bash
|
||||
# 웹 디렉토리로 이동
|
||||
cd /volume1/web
|
||||
|
||||
# 기존 jaryo 폴더가 있다면 백업
|
||||
if [ -d "jaryo" ]; then
|
||||
sudo mv jaryo jaryo_backup_$(date +%Y%m%d_%H%M%S)
|
||||
fi
|
||||
|
||||
# 새 디렉토리 생성
|
||||
sudo mkdir -p jaryo
|
||||
sudo chown admin:users jaryo
|
||||
cd jaryo
|
||||
```
|
||||
|
||||
### 3단계: 소스 코드 클론 📥
|
||||
|
||||
```bash
|
||||
# Gitea에서 소스 코드 클론
|
||||
git clone http://119.64.1.86:3000/vibsin9322/jaryo.git .
|
||||
|
||||
# 클론 성공 확인
|
||||
ls -la
|
||||
```
|
||||
|
||||
### 4단계: 의존성 설치 📦
|
||||
|
||||
```bash
|
||||
# 기존 node_modules 제거 (있다면)
|
||||
rm -rf node_modules package-lock.json
|
||||
|
||||
# npm 의존성 설치
|
||||
npm install
|
||||
|
||||
# 설치 확인
|
||||
ls -la node_modules
|
||||
```
|
||||
|
||||
### 5단계: 데이터베이스 초기화 🗄️
|
||||
|
||||
```bash
|
||||
# SQLite 데이터베이스 초기화
|
||||
npm run init-db
|
||||
|
||||
# 데이터베이스 파일 확인
|
||||
ls -la *.db
|
||||
```
|
||||
|
||||
### 6단계: 서비스 시작 스크립트 생성 📝
|
||||
|
||||
```bash
|
||||
# 시작 스크립트 생성
|
||||
cat > start-jaryo.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# 자료실 서비스 시작 스크립트
|
||||
PROJECT_DIR="/volume1/web/jaryo"
|
||||
SERVICE_PORT="3005"
|
||||
PID_FILE="$PROJECT_DIR/jaryo.pid"
|
||||
LOG_FILE="$PROJECT_DIR/jaryo.log"
|
||||
|
||||
# 로그 디렉토리 생성
|
||||
mkdir -p "$PROJECT_DIR/logs"
|
||||
|
||||
# 기존 프로세스 확인 및 종료
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
OLD_PID=$(cat "$PID_FILE")
|
||||
if ps -p "$OLD_PID" > /dev/null; then
|
||||
echo "기존 서비스 종료 중... (PID: $OLD_PID)"
|
||||
kill "$OLD_PID"
|
||||
sleep 2
|
||||
fi
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
|
||||
# 포트 사용 확인
|
||||
if netstat -tulpn | grep ":$SERVICE_PORT " > /dev/null; then
|
||||
echo "⚠️ 포트 $SERVICE_PORT가 이미 사용 중입니다."
|
||||
echo "사용 중인 프로세스:"
|
||||
netstat -tulpn | grep ":$SERVICE_PORT "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 서비스 시작
|
||||
echo "🚀 자료실 서비스 시작 중..."
|
||||
cd "$PROJECT_DIR"
|
||||
PORT="$SERVICE_PORT" nohup node server.js > "$LOG_FILE" 2>&1 &
|
||||
echo $! > "$PID_FILE"
|
||||
|
||||
sleep 2
|
||||
|
||||
# 시작 확인
|
||||
if ps -p $(cat "$PID_FILE") > /dev/null; then
|
||||
echo "✅ 자료실 서비스 시작 완료!"
|
||||
echo "📍 접속 URL: http://119.64.1.86:$SERVICE_PORT"
|
||||
echo "📋 PID: $(cat "$PID_FILE")"
|
||||
echo "📄 로그: $LOG_FILE"
|
||||
else
|
||||
echo "❌ 서비스 시작 실패"
|
||||
echo "로그 확인:"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
EOF
|
||||
|
||||
# 실행 권한 부여
|
||||
chmod +x start-jaryo.sh
|
||||
```
|
||||
|
||||
### 7단계: 중지 스크립트 생성 🛑
|
||||
|
||||
```bash
|
||||
# 중지 스크립트 생성
|
||||
cat > stop-jaryo.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# 자료실 서비스 중지 스크립트
|
||||
PROJECT_DIR="/volume1/web/jaryo"
|
||||
PID_FILE="$PROJECT_DIR/jaryo.pid"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
PID=$(cat "$PID_FILE")
|
||||
if ps -p "$PID" > /dev/null; then
|
||||
echo "🛑 자료실 서비스 중지 중... (PID: $PID)"
|
||||
kill "$PID"
|
||||
sleep 2
|
||||
|
||||
# 강제 종료 확인
|
||||
if ps -p "$PID" > /dev/null; then
|
||||
echo "⚡ 강제 종료 중..."
|
||||
kill -9 "$PID"
|
||||
fi
|
||||
|
||||
rm -f "$PID_FILE"
|
||||
echo "✅ 자료실 서비스 중지 완료"
|
||||
else
|
||||
echo "⚠️ 프로세스가 이미 종료됨"
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ PID 파일이 없습니다. 수동으로 프로세스를 확인하세요."
|
||||
echo "실행 중인 Node.js 프로세스:"
|
||||
ps aux | grep 'node.*server.js' | grep -v grep
|
||||
fi
|
||||
EOF
|
||||
|
||||
# 실행 권한 부여
|
||||
chmod +x stop-jaryo.sh
|
||||
```
|
||||
|
||||
### 8단계: 서비스 시작 🎬
|
||||
|
||||
```bash
|
||||
# 서비스 시작
|
||||
./start-jaryo.sh
|
||||
|
||||
# 로그 확인 (별도 터미널에서)
|
||||
tail -f jaryo.log
|
||||
```
|
||||
|
||||
### 9단계: 접속 테스트 🧪
|
||||
|
||||
**브라우저에서 접속:**
|
||||
- **메인 페이지**: `http://119.64.1.86:3005`
|
||||
- **관리자 페이지**: `http://119.64.1.86:3005/admin`
|
||||
|
||||
**명령줄에서 테스트:**
|
||||
```bash
|
||||
# 서비스 상태 확인
|
||||
curl -s http://119.64.1.86:3005
|
||||
|
||||
# 프로세스 확인
|
||||
ps aux | grep 'node.*server.js' | grep -v grep
|
||||
|
||||
# 포트 확인
|
||||
netstat -tulpn | grep :3005
|
||||
```
|
||||
|
||||
## 🔧 서비스 관리
|
||||
|
||||
### 일상적인 관리 명령어
|
||||
|
||||
```bash
|
||||
# 서비스 시작
|
||||
/volume1/web/jaryo/start-jaryo.sh
|
||||
|
||||
# 서비스 중지
|
||||
/volume1/web/jaryo/stop-jaryo.sh
|
||||
|
||||
# 서비스 재시작
|
||||
/volume1/web/jaryo/stop-jaryo.sh && /volume1/web/jaryo/start-jaryo.sh
|
||||
|
||||
# 로그 확인
|
||||
tail -f /volume1/web/jaryo/jaryo.log
|
||||
|
||||
# 실시간 로그 보기
|
||||
ssh -p 2222 admin@119.64.1.86 'tail -f /volume1/web/jaryo/jaryo.log'
|
||||
```
|
||||
|
||||
### 상태 모니터링
|
||||
|
||||
```bash
|
||||
# 서비스 상태 스크립트
|
||||
cat > status-jaryo.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
PROJECT_DIR="/volume1/web/jaryo"
|
||||
PID_FILE="$PROJECT_DIR/jaryo.pid"
|
||||
LOG_FILE="$PROJECT_DIR/jaryo.log"
|
||||
|
||||
echo "=== 자료실 서비스 상태 ==="
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
PID=$(cat "$PID_FILE")
|
||||
if ps -p "$PID" > /dev/null; then
|
||||
echo "✅ 서비스 실행 중 (PID: $PID)"
|
||||
echo "📊 메모리 사용량:"
|
||||
ps -o pid,ppid,cmd,%mem,%cpu -p "$PID"
|
||||
echo ""
|
||||
echo "🌐 포트 상태:"
|
||||
netstat -tulpn | grep :3005
|
||||
else
|
||||
echo "❌ 서비스 중지됨 (PID 파일 존재하지만 프로세스 없음)"
|
||||
fi
|
||||
else
|
||||
echo "❌ 서비스 중지됨 (PID 파일 없음)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "📄 최근 로그 (최근 5줄):"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -5 "$LOG_FILE"
|
||||
else
|
||||
echo "로그 파일이 없습니다."
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x status-jaryo.sh
|
||||
```
|
||||
|
||||
## 🔄 자동 시작 설정 (선택사항)
|
||||
|
||||
### DSM 작업 스케줄러 사용
|
||||
|
||||
1. **DSM 로그인** → **제어판** → **작업 스케줄러**
|
||||
2. **생성** → **예약된 작업** → **사용자 정의 스크립트**
|
||||
3. 설정:
|
||||
- **작업 이름**: Jaryo 자료실 자동 시작
|
||||
- **사용자**: root
|
||||
- **스케줄**: 시스템 부팅 시
|
||||
- **스크립트**: `/volume1/web/jaryo/start-jaryo.sh`
|
||||
|
||||
## 🚨 문제 해결
|
||||
|
||||
### 일반적인 문제들
|
||||
|
||||
**1. 포트 충돌**
|
||||
```bash
|
||||
# 포트 사용 확인
|
||||
netstat -tulpn | grep :3005
|
||||
|
||||
# 다른 포트 사용시 (예: 3006)
|
||||
PORT=3006 node server.js
|
||||
```
|
||||
|
||||
**2. 권한 문제**
|
||||
```bash
|
||||
# 디렉토리 권한 수정
|
||||
sudo chown -R admin:users /volume1/web/jaryo
|
||||
chmod -R 755 /volume1/web/jaryo
|
||||
```
|
||||
|
||||
**3. Node.js 버전 문제**
|
||||
```bash
|
||||
# Node.js 버전 확인
|
||||
node --version
|
||||
|
||||
# 최소 요구 버전: v16.0.0
|
||||
```
|
||||
|
||||
**4. 데이터베이스 문제**
|
||||
```bash
|
||||
# 데이터베이스 재초기화
|
||||
rm -f jaryo.db
|
||||
npm run init-db
|
||||
```
|
||||
|
||||
## 📱 최종 확인
|
||||
|
||||
배포 완료 후 다음 URL들이 정상 작동하는지 확인:
|
||||
|
||||
- ✅ **메인 페이지**: http://119.64.1.86:3005
|
||||
- ✅ **관리자 페이지**: http://119.64.1.86:3005/admin
|
||||
- ✅ **API 상태**: http://119.64.1.86:3005/api/files
|
||||
- ✅ **Gitea 저장소**: http://119.64.1.86:3000/vibsin9322/jaryo
|
||||
|
||||
## 🎉 배포 완료!
|
||||
|
||||
시놀로지 NAS에서 자료실 서비스가 성공적으로 실행되고 있습니다.
|
||||
서비스 관리는 위의 스크립트들을 사용하여 쉽게 할 수 있습니다.
|
Reference in New Issue
Block a user