-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·76 lines (64 loc) · 2.21 KB
/
deploy.sh
File metadata and controls
executable file
·76 lines (64 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
set -e
# === 사용자 설정 ===
JAR_NAME="coby-0.0.1-SNAPSHOT.jar"
EC2_USER="ubuntu"
EC2_HOST="54.180.197.9"
EC2_KEY_PATH="d:/coby_bastion.pem"
REACT_API_URL="https://cobyapp.kro.kr"
# === 로그 출력 함수 ===
print_remote_log() {
echo -e "\n📝 최근 log.txt 출력 (EC2)"
ssh -i "$EC2_KEY_PATH" $EC2_USER@$EC2_HOST "tail -n 20 log.txt || echo '❗ log.txt 파일 없음'"
}
# === 에러 발생 시 로그 출력하도록 트랩 설정 ===
trap 'echo "❌ 오류 발생! 로그 확인:"; print_remote_log; exit 1' ERR
# === [1] React .env 파일 수정 ===
ENV_PATH="frontend/.env"
if [ -f "$ENV_PATH" ]; then
echo "🌍 .env 파일 덮어쓰기: REACT_APP_API_URL=$REACT_API_URL"
echo "REACT_APP_API_URL=$REACT_API_URL" > "$ENV_PATH"
else
echo "⚠️ .env 파일이 없어 수정 건너뜀"
fi
# === [2] React 빌드 및 복사 ===
echo "📦 [1/4] React 빌드 시작..."
cd frontend || exit
export PATH="/c/nodejs:$PATH"
if [ ! -d "node_modules" ]; then
echo "📦 의존성 설치 중..."
npm install
else
echo "📦 의존성 설치 건너뜀"
fi
npm run build
echo "📁 빌드 결과 백엔드 static 디렉토리에 복사..."
rm -rf ../backend/src/main/resources/static/*
cp -r build/* ../backend/src/main/resources/static/
cd ..
# === [3] Spring Boot 빌드 ===
echo "🛠️ [2/4] Spring Boot JAR 빌드 중..."
cd backend || exit
export JAVA_HOME="/c/Program Files/Java/jdk-17"
export PATH="$JAVA_HOME/bin:$PATH"
./gradlew clean build -x test
cd ..
# === [4] EC2 전송 및 실행 ===
echo "🚀 [3/4] EC2에 JAR 전송 중..."
scp -i "$EC2_KEY_PATH" backend/build/libs/$JAR_NAME $EC2_USER@$EC2_HOST:/home/$EC2_USER/
echo "🔁 [4/4] EC2 서버 재실행..."
ssh -i "$EC2_KEY_PATH" $EC2_USER@$EC2_HOST << EOF
pkill -f $JAR_NAME || true
sleep 2
# 🔐 환경변수 로드
source ~/.env_coby
nohup env \
GOOGLE_CLIENT_ID="\$GOOGLE_CLIENT_ID" \
GOOGLE_CLIENT_SECRET="\$GOOGLE_CLIENT_SECRET" \
KAKAO_CLIENT_ID="\$KAKAO_CLIENT_ID" \
DB_USERNAME="\$DB_USERNAME" \
DB_PASSWORD="\$DB_PASSWORD" \
nohup java -jar $JAR_NAME > log.txt 2>&1 &
echo "✅ 서버 실행됨! (백그라운드 실행 중)"
EOF
echo "🎉 배포 완료! $REACT_API_URL 에서 서버 확인 가능"