deploy.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. # ===== 설정 =====
  3. KEY="./1.key"
  4. USER="ubuntu"
  5. HOST="129.154.58.6"
  6. REMOTE_DIR="/var/www/bandosj.com/public_html"
  7. ARCHIVE_NAME="dist.tar.gz"
  8. # ===== nvm 초기화 및 빌드 =====
  9. export NVM_DIR="$HOME/.nvm"
  10. [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
  11. echo "🟢 Node.js LTS 버전 활성화..."
  12. nvm use --lts || { echo "❌ Node 설정 실패"; exit 1; }
  13. echo "🔧 빌드 중..."
  14. npm install
  15. npm run build || { echo "❌ 빌드 실패"; exit 1; }
  16. # ===== macOS 메타파일 제거 =====
  17. echo "🧹 macOS 메타파일 제거 중..."
  18. find dist -name '.DS_Store' -delete
  19. find dist -name '._*' -delete
  20. # ===== 압축 =====
  21. echo "📦 dist 디렉토리 압축 중..."
  22. tar -czf "$ARCHIVE_NAME" -C dist .
  23. # ===== 파일 전송 =====
  24. echo "🚀 압축 파일 전송 중..."
  25. scp -i "$KEY" "$ARCHIVE_NAME" "$USER@$HOST:/tmp/$ARCHIVE_NAME" || { echo "❌ 파일 전송 실패"; exit 1; }
  26. # ===== 원격 서버에서 압축 해제 및 배치 =====
  27. echo "🔧 서버에서 배포 진행..."
  28. ssh -i "$KEY" "$USER@$HOST" << EOF
  29. sudo mkdir -p "$REMOTE_DIR"
  30. sudo rm -rf "$REMOTE_DIR"/*
  31. sudo tar -xzf /tmp/$ARCHIVE_NAME -C "$REMOTE_DIR"
  32. sudo rm /tmp/$ARCHIVE_NAME
  33. EOF
  34. # ===== 로컬 정리 =====
  35. rm "$ARCHIVE_NAME"
  36. # ===== 완료 =====
  37. echo "✅ 배포 완료! http://bandosj.com 에서 확인해보세요."