#!/bin/bash # 배포 스크립트 - 서버에서 실행 # 사용법: ./deploy.sh set -e # 오류 발생 시 스크립트 중단 # 프로젝트 경로 PROJECT_DIR="/var/www/music/music-admin" LOG_FILE="/var/log/music-admin-deploy.log" # 로그 함수 log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } log "=== 배포 시작 ===" # 프로젝트 디렉토리로 이동 cd "$PROJECT_DIR" || { log "ERROR: 프로젝트 디렉토리로 이동 실패: $PROJECT_DIR" exit 1 } # Git pull log "Git pull 실행 중..." git pull origin main || { log "ERROR: Git pull 실패" exit 1 } # 의존성 설치 log "의존성 설치 중..." npm ci --production=false || { log "ERROR: npm install 실패" exit 1 } # Prisma 클라이언트 생성 log "Prisma 클라이언트 생성 중..." npx prisma generate || { log "ERROR: Prisma generate 실패" exit 1 } # 데이터베이스 마이그레이션 (필요시) log "데이터베이스 마이그레이션 실행 중..." npx prisma db push || { log "WARNING: 데이터베이스 마이그레이션 실패 (계속 진행)" } # 프로덕션 빌드 log "프로덕션 빌드 중..." npm run build || { log "ERROR: 빌드 실패" exit 1 } # PM2로 앱 재시작 log "PM2로 앱 재시작 중..." pm2 restart music-admin || pm2 start ecosystem.config.js || { log "ERROR: PM2 재시작 실패" exit 1 } log "=== 배포 완료 ==="