프로그래밍/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 설정 파일