Backend 배포
로컬 PC
# ---------백엔드 JAR 빌드---------
# 프로젝트 루트에서
./mvnw clean package -DskipTests
서버
# ---------기본 업데이트---------
sudo dnf update -y
# ---------Redis6 설치 & 실행---------
# 설치
sudo dnf install -y redis6
# 부팅 시 자동 시작
sudo systemctl enable redis6
# 지금 즉시 시작
sudo systemctl start redis6
# 상태 확인
sudo systemctl status redis6
# 동작 확인(PONG 나오면 OK)
redis6-cli ping
# ---------Java 17 설치---------
sudo dnf install -y java-17-amazon-corretto
java -version
# ---------앱 디렉토리 준비---------
sudo mkdir -p /opt/mpx-backend
sudo chown ec2-user:ec2-user /opt/mpx-backend
로컬 PC
# ---------JAR 파일 전송---------
scp -i "/c/Users/KimSangMin/git/miniPX/mpxLive2026.pem" target/MPX-0.0.1-SNAPSHOT.jar ec2-user@#{SERVER-IP}:/home/ec2-user/
# ---------MPX3---------
scp -i "C:\Users\KimSangMin\git\miniPX\ignore/mpx2026_3.pem" target/MPX-0.0.1-SNAPSHOT.jar ec2-user@43.202.50.109:/home/ec2-user/
서버
# 파일 이동
sudo mv /home/ec2-user/MPX-0.0.1-SNAPSHOT.jar /opt/mpx-backend/backend.jar
# ---------환경변수 설정---------
# 환경변수 파일을 만들어 systemd / 수동 실행 모두에서 재사용
sudo mkdir -p /opt/mpx-backend/env
sudo vi /opt/mpx-backend/env/mpx-backend.env
환경변수 파일(실제 값 넣기)
# ===== Spring Profile =====
SPRING_PROFILES_ACTIVE=prod
# ===== DB (필수) =====
MPX_DATABASE_URL=#{DATABASE_URL}
MPX_DATABASE_USERNAME=#{DATABASE_USERNAME}
MPX_DATABASE_PASSWORD=#{DATABASE_PASSWORD}
# ===== Redis =====
REDIS_HOST=localhost
REDIS_PORT=6379
# ===== OpenAI (필수: 사용 시) =====
OPENAI_API_KEY=#{OPENAI_API_KEY}
# ===== JWT =====
JWT_SECRET=#{JWT_SECRET}
서버
# ---------환경변수 파일 권한 잠그기---------
sudo chown ec2-user:ec2-user /opt/mpx-backend/env/mpx-backend.env
sudo chmod 600 /opt/mpx-backend/env/mpx-backend.env
# ---------수동 실행으로 테스트---------
sudo systemctl stop mpx-backend
cd /opt/mpx-backend
set -a
source /opt/mpx-backend/env/mpx-backend.env
set +a
java -jar /opt/mpx-backend/backend.jar
# ---------다른 SSH 열어서 테스트---------
curl http://localhost:8080/
# 성공 시 Ctrl + C로 끄고, 다음 단계 진행
서버
# ---------service 파일 생성---------
sudo vi /etc/systemd/system/mpx-backend.service
service 파일
[Unit]
Description=MPX Spring Boot Backend
After=network.target redis6.service
[Service]
User=ec2-user
WorkingDirectory=/opt/mpx-backend
EnvironmentFile=/opt/mpx-backend/env/mpx-backend.env
ExecStart=/usr/bin/java -jar /opt/mpx-backend/backend.jar
SuccessExitStatus=143
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
서버
# ---------환경변수 적용---------
sudo systemctl daemon-reload
sudo systemctl enable mpx-backend
sudo systemctl start mpx-backend
sudo systemctl status mpx-backend
# ---------환경변수 확인---------
sudo systemctl show mpx-backend | grep -E 'SPRING_PROFILES_ACTIVE|MPX_|REDIS_|OPENAI'
# ---------실행 로그 확인---------
journalctl -u mpx-backend -f
- 이후에는 서버 재부팅 / 서비스 재시작 시 자동 로드
수동 실행 스크립트 생성
# ---------실행 스크립트 만들기---------
sudo vi /opt/mpx-backend/start.sh
실행 스크립트
#!/bin/bash
set -a
source /opt/mpx-backend/env/mpx-backend.env
set +a
exec java -jar /opt/mpx-backend/backend.jar
서버
# ---------권한 부여---------
sudo chmod +x /opt/mpx-backend/start.sh
# ---------스크립트 실행---------
sudo systemctl stop mpx-backend
./start.sh
재배포
로컬
# ---------백엔드 JAR 빌드---------
# 프로젝트 루트에서
mvnw clean package -DskipTests
# ---------JAR 파일 전송---------
scp -i "C:\Users\KimSangMin\git\miniPX\ignore\mpx2026_3.pem" target/MPX-0.0.1-SNAPSHOT.jar ec2-user@43.202.50.109:/home/ec2-user/
서버
# ---------서버 재가동---------
sudo systemctl stop mpx-backend
cd /opt/mpx-backend
mv backend.jar backend-$(date +%Y%m%d-%H%M%S).jar
sudo mv /home/ec2-user/MPX-0.0.1-SNAPSHOT.jar /opt/mpx-backend/backend.jar
sudo chown ec2-user:ec2-user /opt/mpx-backend/backend.jar
sudo chmod 644 /opt/mpx-backend/backend.jar
sudo systemctl start mpx-backend
# 상태 확인
sudo systemctl status mpx-backend
# 실시간 로그 확인 (에러 여부 체크)
journalctl -u mpx-backend -f
오류해결
- [20260326] back-end 최초 배포해도 접속 안 되길래 재배포 하니까 잘 되더라…