IT
Linux Spring 설정
Linux에서 Spring Boot 애플리케이션을 설정하는 과정은 크게 다음과 같은 단계로 진행됩니다.
1. JDK 설치 및 환경 변수 설정
Spring Boot는 Java 기반이므로, 먼저 JDK가 설치되어 있어야 합니다.
JDK 설치 (예: OpenJDK 17)
sudo apt update # Debian/Ubuntu
sudo apt install openjdk-17-jdk -y
sudo yum install java-17-openjdk -y # RHEL/CentOS
Java 버전 확인
java -version
"openjdk version '17.0.x'" 등이 출력되면 정상적으로 설치된 것입니다.
환경 변수 설정 (필요할 경우)
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
2. Spring Boot 애플리케이션 실행
JAR 파일 실행
Spring Boot 프로젝트를 빌드하면 target/ 폴더 아래에 .jar 파일이 생성됩니다. 이를 실행하는 방법입니다.
java -jar my-spring-app.jar
백그라운드 실행 (nohup)
Linux에서 서버가 종료되어도 실행되도록 nohup을 사용합니다.
nohup java -jar my-spring-app.jar > output.log 2>&1 &
- output.log: 로그를 저장할 파일
- &: 백그라운드 실행
- 실행 중인 프로세스 확인: ps aux | grep java
포트 변경 (application.properties)
기본적으로 Spring Boot는 8080 포트를 사용합니다. 변경하려면 다음 설정을 추가합니다.
src/main/resources/application.properties
server.port=9090
또는
server:
port: 9090
3. Systemd 서비스 등록 (자동 실행)
Spring Boot 애플리케이션을 시스템 부팅 시 자동으로 실행되도록 systemd 서비스로 등록할 수 있습니다.
서비스 파일 생성
sudo nano /etc/systemd/system/spring-app.service
파일 내용 작성
[Unit]
Description=Spring Boot Application
After=network.target
[Service]
User=ubuntu # 실행할 사용자
WorkingDirectory=/home/ubuntu/myapp # 애플리케이션 경로
ExecStart=/usr/bin/java -jar /home/ubuntu/myapp/my-spring-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
서비스 등록 및 실행
sudo systemctl daemon-reload
sudo systemctl enable spring-app
sudo systemctl start spring-app
sudo systemctl status spring-app
4. 방화벽 설정
Spring Boot 애플리케이션이 특정 포트에서 외부 접속을 허용하도록 방화벽을 설정해야 합니다.
UFW (Ubuntu)
sudo ufw allow 9090/tcp
sudo ufw reload
Firewalld (CentOS)
sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
sudo firewall-cmd --reload
5. Reverse Proxy (Nginx) 설정
Spring Boot를 8080 포트에서 실행할 경우, Nginx를 통해 80 포트로 프록시할 수 있습니다.
Nginx 설치
sudo apt install nginx -y # Ubuntu/Debian
sudo yum install nginx -y # CentOS/RHEL
Nginx 설정 파일 수정
sudo nano /etc/nginx/sites-available/spring-app
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
설정 적용
sudo ln -s /etc/nginx/sites-available/spring-app /etc/nginx/sites-enabled/
sudo systemctl restart nginx
6. 로그 관리 및 모니터링
Spring Boot 애플리케이션의 로그는 기본적으로 logs/ 디렉터리에 저장됩니다.
로그 실시간 확인
tail -f logs/application.log
CPU 및 메모리 사용량 확인
top
htop # 설치 필요 (sudo apt install htop)
애플리케이션 종료
sudo systemctl stop spring-app # systemd 사용 시
kill $(pgrep -f 'my-spring-app.jar') # 프로세스 직접 종료
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.