📖 개요
오라클 클라우드(OCI) 우분투 서버에 GitHub의 Spring Boot 프로젝트를 배포하고,systemd를 통해 서버 재부팅 시 자동 실행되도록 설정하는 방법을 정리합니다.
1. Java 및 Gradle 환경 준비
Spring Boot 3.x 기준으로 Java 17 이상이 필요합니다.
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
Gradle은 기본 패키지가 오래되어 직접 설치하는 것이 좋습니다.
sudo apt remove -y gradlecd /tmp
wget https://services.gradle.org/distributions/gradle-8.7-bin.zip
sudo apt install -y unzip
sudo mkdir -p /opt/gradle
sudo unzip -o gradle-8.7-bin.zip -d /opt/gradleecho 'export GRADLE_HOME=/opt/gradle/gradle-8.7' >> ~/.bashrc
echo 'export PATH=$GRADLE_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrcgradle -v
2. GitHub 소스 다운로드
git clone https://github.com/계정/프로젝트.git
cd 프로젝트
3. Gradle 빌드 (메모리 문제 대응 포함)
gradle --stop
gradle clean build -x test --no-daemon
빌드 성공 시:
ls build/libs
예:
adm-0.0.1-SNAPSHOT.jar
adm-0.0.1-SNAPSHOT-plain.jar
👉 실행은 plain 아닌 일반 jar 사용
4. Spring Boot 실행
nohup java -jar build/libs/adm-0.0.1-SNAPSHOT.jar > app.log 2>&1 &
로그 확인:
tail -f app.log
5. 업로드 디렉토리 생성 및 권한 설정
sudo mkdir -p /home/ubuntu/****/upload
sudo chown -R ubuntu:ubuntu /home/ubuntu/****
chmod 755 /home/ubuntu/****/upload
Spring 설정:
file:
upload-dir: /home/ubuntu/****/upload
6. systemd 서비스 등록 (자동 실행)
sudo nano /etc/systemd/system/adm.service
내용:
[Unit]
Description=Spring Boot ADM App
After=network.target[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/adm
Environment="SPRING_PROFILES_ACTIVE=dev"
ExecStart=/usr/bin/java -jar /home/ubuntu/adm/build/libs/adm-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target
저장:
Ctrl + O → Enter → Ctrl + X
7. 서비스 실행 및 관리
sudo systemctl daemon-reload
sudo systemctl enable adm
sudo systemctl start adm
sudo systemctl status adm
8. 재기동(Restart) 방법
sudo systemctl restart adm
상태 확인:
sudo systemctl status adm
로그 확인:
journalctl -u adm -f
9. 배포 업데이트 방법
cd ~/adm
git pull
gradle --stop
gradle clean build -x test --no-daemon
sudo systemctl restart adm
🔥 핵심 요약
- Java 17 + Gradle 8.x 필요
- Spring Boot jar 실행은
plain제외 - 업로드 디렉토리는 반드시 쓰기 권한 설정
systemd로 자동 실행 구성- 재배포 시
restart만 하면 끝