diff --git a/.gitignore b/.gitignore index 27e96a6b..b3f3f04c 100644 --- a/.gitignore +++ b/.gitignore @@ -123,3 +123,6 @@ src/app/**/dev/dashboard/ # ---> Serena MCP memories .serena/ + +# ---> Deploy script (로컬 전용) +deploy.sh diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index 6ed4fef4..00000000 --- a/deploy.sh +++ /dev/null @@ -1,158 +0,0 @@ -#!/bin/bash -# -# SAM React 배포 스크립트 -# 사용법: ./deploy.sh [dev|prod] -# - -set -e # 에러 발생 시 중단 - -# =========================================== -# 설정 -# =========================================== -ENV="${1:-dev}" -TIMESTAMP=$(date +%Y%m%d_%H%M%S) -BUILD_FILE="next-build.tar.gz" - -# 개발 서버 설정 -DEV_SSH="hskwon@114.203.209.83" -DEV_PATH="/home/webservice/react" -DEV_PM2="sam-react" - -# 운영 서버 설정 (추후 설정) -# PROD_SSH="user@prod-server" -# PROD_PATH="/var/www/react" -# PROD_PM2="sam-react-prod" - -# 환경별 설정 선택 -case $ENV in - dev) - SSH_TARGET=$DEV_SSH - REMOTE_PATH=$DEV_PATH - PM2_APP=$DEV_PM2 - ;; - prod) - echo "❌ 운영 환경은 아직 설정되지 않았습니다." - exit 1 - ;; - *) - echo "❌ 알 수 없는 환경: $ENV" - echo "사용법: ./deploy.sh [dev|prod]" - exit 1 - ;; -esac - -# =========================================== -# 함수 정의 -# =========================================== -log() { - echo "" - echo "==========================================" - echo "🚀 $1" - echo "==========================================" -} - -error() { - echo "" - echo "❌ 에러: $1" - exit 1 -} - -# =========================================== -# 1. 빌드 -# =========================================== -log "Step 1/5: 빌드 시작" - -# .env.local 백업 -if [ -f .env.local ]; then - echo "📦 .env.local 백업..." - mv .env.local .env.local.bak -fi - -# 빌드 실행 -echo "🔨 npm run build..." -npm run build || { - # 빌드 실패 시 .env.local 복원 - if [ -f .env.local.bak ]; then - mv .env.local.bak .env.local - fi - error "빌드 실패" -} - -# .env.local 복원 -if [ -f .env.local.bak ]; then - echo "📦 .env.local 복원..." - mv .env.local.bak .env.local -fi - -echo "✅ 빌드 완료" - -# =========================================== -# 2. 압축 -# =========================================== -log "Step 2/5: 압축 시작" - -# 기존 압축 파일 삭제 -rm -f $BUILD_FILE - -# .next 폴더 압축 (캐시 제외) -echo "📦 .next 폴더 압축 중..." -COPYFILE_DISABLE=1 tar --exclude='.next/cache' -czf $BUILD_FILE .next - -# 파일 크기 확인 -FILE_SIZE=$(ls -lh $BUILD_FILE | awk '{print $5}') -echo "✅ 압축 완료: $BUILD_FILE ($FILE_SIZE)" - -# =========================================== -# 3. 업로드 -# =========================================== -log "Step 3/5: 서버 업로드" - -echo "📤 $SSH_TARGET:$REMOTE_PATH 로 업로드 중..." -scp $BUILD_FILE $SSH_TARGET:$REMOTE_PATH/ - -echo "✅ 업로드 완료" - -# =========================================== -# 4. 원격 배포 실행 -# =========================================== -log "Step 4/5: 원격 배포 실행" - -echo "🔧 서버에서 배포 스크립트 실행 중..." -ssh $SSH_TARGET << EOF - cd $REMOTE_PATH - - echo "🗑️ 기존 .next 폴더 삭제..." - rm -rf .next - - echo "📦 압축 해제 중..." - tar xzf $BUILD_FILE - - echo "🔄 PM2 재시작..." - pm2 restart $PM2_APP - - echo "🧹 압축 파일 정리..." - rm -f $BUILD_FILE - - echo "✅ 서버 배포 완료" -EOF - -# =========================================== -# 5. 정리 -# =========================================== -log "Step 5/5: 로컬 정리" - -echo "🧹 로컬 압축 파일 삭제..." -rm -f $BUILD_FILE - -# =========================================== -# 완료 -# =========================================== -echo "" -echo "==========================================" -echo "🎉 배포 완료!" -echo "==========================================" -echo "환경: $ENV" -echo "서버: $SSH_TARGET" -echo "경로: $REMOTE_PATH" -echo "시간: $(date '+%Y-%m-%d %H:%M:%S')" -echo "==========================================" \ No newline at end of file