목표
1. 세 종류의 yml을 만든다. ( application / application-dev / application-prod )
2. application.yml 에서는 어떤 모드를 선택할 것인지에 대한 설정
3. application-dev.yml 에서는 개발용으로 사용하기 위한 세팅
4. application-prod.yml 에서는 배포용으로 사용하기 위한 세팅
Java
복사
application.yml 설정
spring:
profiles:
active:
- dev
Java
복사
설명
•
여기서 dev 모드 / prod모드를 설정한다.
•
주요하게 다른 점은 dev모드는 h2 데이터 베이스를 사용하고, prod모드는 mySql을 사용한다는 것이다.
application-dev.yml 설정
server:
servlet:
encoding:
charset: utf-8
force: true
session:
tracking-modes: COOKIE
timeout: 30m
port: 8080
tomcat:
max-swallow-size: -1 # -1은 제한 없음을 의미합니다.
spring:
mustache:
servlet:
expose-session-attributes: true
expose-request-attributes: true
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:test;MODE=MySQL
username: sa
password:
h2:
console:
enabled: true
sql:
init:
mode: always
data-locations:
- classpath:db/data.sql
jpa:
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 10
defer-datasource-initialization: true
open-in-view: false
servlet:
multipart:
maxFileSize: 10MB # 파일 하나의 최대 크기
maxRequestSize: 30MB
logging:
level:
org.hibernate.orm.jdbc.bind: TRACE
com.example.final_project: DEBUG
Java
복사
설명
•
h2 설정 확인
•
더미 파일 확인 → db/data.sql
•
open-in-view → false
•
포트 → 8080
•
log 설정 → debug 이상의 에러만 뜨게 설정,
application-prod.yml 설정
server:
servlet:
encoding:
charset: utf-8
force: true
# url rewrite 문제 해결
session:
tracking-modes: cookie
port: 5000 # 배포 시 방화벽이 열려 있는 포트가 5000
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ropatestdb # AWS 호스트
username: ropa # AWS USERNAME
password: ropa1234 # AWS PASSWORD
jpa:
hibernate:
ddl-auto: none # 배포 후 서버가 문제가 생기면 DB가 다시 만들어 지지 않도록 설정
properties:
hibernate:
default_batch_fetch_size: 10
dialect: org.hibernate.dialect.MySQLDialect # JPA 방언 설정
open-in-view: false # true 는 세션이 서버에서 머물고 false 는 서비스에서 소멸한다.
logging:
level:
org.hibernate.orm.jdbc.bind: INFO # 배포하고 나면 INFO 부터 보면 된다.
com.example.final_project: DEBUG # DEBUG 이상의 에러 뜨도록 설정
Java
복사
설명
•
배포시 MySQL로 배포를 하기 때문에, 해당 프로그램을 사용하는 환경을 세팅해준다. 그래서 datasource: 가 변경이 되었다.
•
현재는 실제 배포환경인 RDS로 테스트 해보는 것이 아니고, MySQL을 로컬환경에 맞춰서 문법 정도만 잘 작동하는 지 테스트 하는 것이다.
◦
그래서 url은 localhost로
◦
username/password는 배포시 조건과 같게 만들어도 무방하다.
•
포트 번호
◦
NginX 프록시 서버를 허용하기 위한 5000번 설정
•
방언 설정
◦
mySQL사용환경을 위한 방언 설정
◦
dialect: org.hibernate.dialect.MySQLDialect
•
로깅 레벨
◦
배포시엔 INFO레벨 이상만 체크
◦
DEBUG이상의 에러가 뜨도록 설정
▪
org.hibernate.orm.jdbc.bind: INFO
▪
com.example.final_project: DEBUG
배포시 포트 5000을 사용하는 이유??
설명
•
엘라스틱 빈스톡으로 프로젝트를 생성하면 위의 그림과 같이
로드밸런서 → EC2 순서의 구조를 가지게 된다.
•
이 때 해당 EC2의 내부는 다시 NginX서버와 우리가 코드를 작성한 JAVA서버의 구조를 가지게 된다.
•
이 NginX 서버는 프록시 서버의 역할로 JAVA서버를 캡슐화 / 캐싱 / 보안등 여러가지 역할을 담당하게 되고, 이 기능을 수행한뒤 기존 요청을 JAVA서버로 다시 전달 한다.
•
이 요청이 JAVA서버로 전달 될 때 “서버 입구”의 번호가 포트번호 5000번이 되는 것이다.
•
그래서 엘라스틱 빈스톡 생성시 NginX프록시 서버가 자동 생성이 되기 때문에, 이 JAVA서버는 NginX서버가 접근할 수 있는 5000번을 열어줘야 된다.