일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 해시
- 순열
- BFS
- 이분탐색
- unityui
- c#
- 프로그래머스
- Photon
- QueryDSL
- 내일배움캠프
- Firebase
- 스택
- 워크플로
- Unity2D
- 알고리즘
- 스파르타내일배움캠프
- UE4
- Unity3d
- 유니티
- Inventory
- C++
- FSM
- UnrealEngine
- 유클리드호제법
- 포톤
- Unity
- 문자열
- 구현
- 스파르타내일배움캠프TIL
- 언리얼엔진
- Today
- Total
개발 낙서장
[TIL] 내일배움캠프 54일차 - 설정 파일 분리 본문
오늘의 학습 키워드📚
AWS EC2에 Spring 프로젝트 배포
해당 글들을 참고해 jar 파일을 만들어 파일질라로 Ec2 환경에 jar을 업로드하는 것까진 성공했다.
문제는 그 다음이다
AWS DB 설정
DB 설정도 따로 해줘야 한다는 것을 몰랐다...
기존엔 로컬에 DB를 만들고 거기에서 작업을 했었는데 서버에 배포를 하면 서버 DB가 따로 필요했다.
다행히도 AWS에 RDS를 관리하는 기능이 있어서 여기서 DB를 만들었다.
배포 환경과 개발 환경 properties 분리
문제는 여기서 발생했다. 개발 환경 DB와 배포 환경 DB가 달라야 하기에 설정을 바꿔줘야 했는데
해당 설정은 application.properties에서 관리하고 있었다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/todo
spring.datasource.username=???
spring.datasource.password=???
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
jwt.secret.key=???
근데 서버 DB와 로컬 DB는 엔드포인트도 다르고 username, password 다 다르기 때문에 구분해줘야 했다.
방법은 application-???.properties 파일을 만들어 각 환경마다 설정을 달리 해주면 되는 것이었다.
aws 배포 환경에서 설정을 해줘야 하므로 application-aws.properties 라고 명명했다.
spring.datasource.url=jdbc:mysql://todo.???.com:3306/todo
spring.datasource.username=???
spring.datasource.password=???
관련 기본 설정을 해주고 메인 application.properties에서 키워드? 설정을 해주어야 한다.
spring.profiles.active=aws # AWS 환경일 경우
만약 다른 여러 파일이 생긴다면 저 aws 부분을 수정해 빌드하면 된다.
이후 빌드한 jar 파일을 업로드하고 서비스를 시작해주면 되는데 해당 프로파일을 지정해 시작해야 한다.
java -jar MyTodo-0.0.1-SNAPSHOT.jar --spring.profiles.active=aws
이렇게 하면 application.properties의 공통 설정을 로드하는데 해당 옵션에 따라 application-aws.properties의 설정도 로드하면서 겹치는 부분은 aws 값으로 덮어쓰기 된다.
이렇게 하면 개발 환경과 배포 환경을 확실히 구분할 수 있으면서 매번 설정 값을 바꾸는 번거로움이 없다.
참고로 application.properties에 username이나 엔드포인트, jwt.secret.key 등의 정보들까지도 전부 로컬과 배포 등 여러 환경으로 나누고 싶다면 application-local.properties 파일에 설정 값을 넣고
./gradlew bootRun --args='--spring.profiles.active=local'
터미널에 해당 명령어로 실행하면 설정에 따라 서버가 구동된다.
오늘의 회고💬
배포는 처음이어서 정말 많이 헤맨 것 같다. 힘들었는데 그래도 배포에 성공해서 기쁘다!
내일의 계획📜
진짜 마지막 리팩토링을 하고 우선 개인 과제를 마무리해야겠다.
'Java > Sparta' 카테고리의 다른 글
[TIL] 내일배움캠프 57일차 - 순서 저장 방법 (0) | 2024.03.19 |
---|---|
[TIL] 내일배움캠프 55일차 - Git Commit 잔디 (0) | 2024.03.15 |
[TIL] 내일배움캠프 53일차 - 불필요한 쿼리 개선 (0) | 2024.03.12 |
[TIL] 내일배움캠프 52일차 - 페이징 (0) | 2024.03.11 |
[TIL] 내일배움캠프 51일차 - 로그인 페이지 (0) | 2024.03.08 |