Spring Boot 프로젝트를 리눅스 환경에 배포하는 과정을 단계별로 안내합니다. .jar 또는 .war 파일을 빌드하고, 리눅스 서버에 업로드하여 실행하는 데 필요한 주요 명령어와 팁도 함께 제공합니다.
Spring Boot 애플리케이션을 실행하기 위해서는 리눅스 서버에 Java가 설치되어 있어야 합니다. 대부분의 경우 Java 8 이상이 필요합니다.
java -version
sudo apt update
sudo apt install openjdk-17-jdk
Java가 설치되지 않은 경우 위 명령어로 설치 후, 다시 버전을 확인하세요.
개발이 완료된 프로젝트를 .jar 또는 .war 형태로 패키징해야 서버에서 실행할 수 있습니다.
./mvnw clean package
빌드가 완료되면
target디렉토리 아래에 실행 파일이 생성됩니다. 예:demo-0.0.1-SNAPSHOT.jar
생성된 .jar 또는 .war 파일을 리눅스 서버로 전송합니다. scp 명령어를 사용하면 간단합니다.
scp target/demo-0.0.1-SNAPSHOT.jar user@서버IP:/home/user/
user: 리눅스 서버 사용자 이름 서버IP: 리눅스 서버의 IP 주소서버에 접속하여 애플리케이션을 실행합니다.
ssh user@서버IP
java -jar /home/user/demo-0.0.1-SNAPSHOT.jar
http://서버IP:8080
기본 포트는 8080이며, 변경한 경우 해당 포트로 접속해야 합니다.
서버 외부에서 애플리케이션에 접근하려면 포트가 열려 있어야 합니다.
sudo ufw enable
sudo ufw allow 8080
sudo ufw reload
ufw(Uncomplicated Firewall)가 설치되어 있지 않다면sudo apt install ufw로 먼저 설치하세요.
서버에서 터미널을 닫아도 애플리케이션이 계속 실행되도록 nohup 명령어를 사용합니다.
nohup java -jar /home/user/demo-0.0.1-SNAPSHOT.jar > app.log 2>&1 &
ps -ef | grep demo
kill <프로세스ID>
tail -f app.log
도메인 연결이나 포트 숨김을 원할 경우, Nginx를 설정하여 80포트로 프록시할 수 있습니다.
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설정 후
sudo systemctl reload nginx로 적용합니다.
sudo apt install net-tools
ifconfig
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl status ssh
기본적으로 SSH는 22번 포트를 사용합니다.
Spring Boot 애플리케이션을 리눅스 서버에 배포하는 일은 생각보다 간단합니다.
빌드 → 업로드 → 실행 → 백그라운드 설정 → 방화벽 열기 → (선택) Nginx 설정까지 진행하면 프로덕션 환경에도 대응 가능한 기본 배포 구조가 완성됩니다.
댓글 영역