프로그래밍/AWS

Nginx와 Spring Boot 연동: 설정 파일의 역할과 구조

poeee 2024. 11. 18. 18:50
 

 

 

1. /home/ubuntu/scripts/start.sh

 

역할

Spring Boot 애플리케이션 실행을 위한 스크립트 파일입니다.
배포 환경에서 필요한 설정값을 포함하여 애플리케이션을 실행할 때 사용됩니다.

 

내용

  • 애플리케이션을 실행하기 위한 명령어
  • 환경 변수 설정 (export 명령어를 사용하거나 --spring.config.location으로 설정)
  • 로그 경로 지정
  •  

예시

#!/bin/bash 
export SPRING_PROFILES_ACTIVE=dev e
xport AWS_REGION=ap-northeast-1 
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key 

java -jar /home/ubuntu/app/puzzletime-fun.jar \ --spring.config.location=/home/ubuntu/config/application-dev.properties \ --server.port=8080 >> /home/ubuntu/logs/puzzletime-fun.log 2>&1 &

 

 


 

2. /home/ubuntu/config/application-dev.properties

 

역할

Spring Boot 애플리케이션에서 사용하는 설정 파일로, 개발 환경(dev)에 특화된 속성을 정의합니다.
데이터베이스 연결 정보, AWS S3 설정, OAuth 관련 정보 등이 포함됩니다.

 

내용

  • 데이터베이스 설정 (spring.datasource)
  • OAuth 설정 (spring.security.oauth2)
  • S3 설정 (cloud.aws.s3)
  • CloudFront URL

 

예시

spring.datasource.url=jdbc:mysql://localhost:3306/puzzletime 
spring.datasource.username=root 
spring.datasource.password=password 
cloud.aws.region.static=ap-northeast-1 
cloud.aws.s3.bucket=puzzletime-bucket 
cloudfront.url=https://d1234567.cloudfront.net 
spring.security.oauth2.client.registration.google.client-id=your_client_id
spring.security.oauth2.client.registration.google.client-secret=your_client_secret

 

 


 

3. /etc/systemd/system/puzzletime-fun.service

 

역할

Spring Boot 애플리케이션을 시스템 서비스로 등록하는 데 사용됩니다.
서비스로 등록하면 systemctl 명령어로 애플리케이션을 관리할 수 있습니다.

 

내용

  • 서비스 이름, 설명
  • 실행할 애플리케이션 위치
  • 서비스 재시작 정책
  • 환경 변수 파일 설정
  •  

예시

 
[Unit] 
Description=PuzzleTime Spring Boot Application After=network.target 

[Service] 
User=ubuntu WorkingDirectory=/home/ubuntu/app 
ExecStart=/bin/bash/home/ubuntu/scripts/start.sh 
Restart=always
EnvironmentFile=/home/ubuntu/config/application-dev.properties
StandardOutput=file:/home/ubuntu/logs/puzzletime-fun.log
StandardError=file:/home/ubuntu/logs/puzzletime-fun-error.log

[Install] 
WantedBy=multi-user.target

 

 


4. /etc/nginx/sites-available/default

 

역할

Nginx의 사이트 설정 파일로, Spring Boot 애플리케이션과 연동하여 프록시 역할을 합니다.
로드 밸런싱, 정적 파일 제공, SSL 인증서 설정 등이 포함됩니다.

 

내용

  • Nginx와 Spring Boot 간 프록시 설정
  • 도메인 및 SSL 인증서 설정
  • 정적 파일 경로

 

예시

 
server {
listen 80; server_name puzzletime.fun www.puzzletime.fun; 

location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host; 
proxy_cache_bypass $http_upgrade; 
} 

location /static/ { 
root /home/ubuntu/static-files/;
} 
error_page 404 /404.html; }

 

 


 

요약

  • start.sh: 애플리케이션 실행 스크립트
  • application-dev.properties: Spring Boot 설정 파일 (개발 환경)
  • puzzletime-fun.service: 시스템 서비스 등록 파일
  • default: Nginx 설정 파일