start.sh 에 export 명령어를 이용해서 배포 시 필요한 환경변수들을 적용했는데도
서버 실행 시 환경 변수를 가져오지 못할 경우
인텔리제이에서는 아래 그림과 같이 run/debug Configurations 창에서 어떤 status 로 실행할 것인지 명시할 수 있습니다.
Active profiles 에 dev를 적으면
application.properties(기본 설정파일) 을 읽은 후 application-dev.properties 를 읽어 설정 값에 따라 실행이 되고,
Active profiles에 prod를 적으면
application.properties(기본 설정파일) 을 읽은 후 application-prod.properties 를 읽어 설정 값에 따라 실행이 됩니다.
근데 private 파일의 내용은 어떻게 처리를 할 것인가.
위에서 말했듯이 start.sh 에 export 명령어로 환경변수를 적용해 놨는데도 읽어오지 못할 경우,
비슷하게 서버에 application-private.properties와 같은 내용을 가진 외부 설정 파일을 직접 생성하여 배포된 애플리케이션이 이를 읽도록 설정합니다.
1단계: 서버에 외부 설정 파일 생성
서버에 접속하여 application-private.properties 파일을 저장할 디렉토리를 만듭니다. 예를 들어 /home/ubuntu/config 디렉토리를 사용한다.
mkdir -p /home/ubuntu/config
해당 디렉토리 안에 application-private.properties 파일을 생성합니다.
nano /home/ubuntu/config/application-private.properties
application-private.properties에 아래와 같이 Google OAuth2 관련 설정을 추가합니다. 이 설정은 로컬에 있는 application-private.properties 파일의 내용을 그대로 복사하면 됩니다.
spring.security.oauth2.client.registration.google.client-id=본인 값
spring.security.oauth2.client.registration.google.client-secret=본인 값
spring.security.oauth2.client.registration.google.scope=profile,email
spring.security.oauth2.client.registration.google.redirect-uri=본인 값
spring.security.oauth2.client.registration.google.client-name=Google
spring.security.oauth2.client.registration.google.authorization-grant-type=authorization_code
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth
spring.security.oauth2.client.provider.google.token-uri=본인 값
spring.security.oauth2.client.provider.google.user-info-uri=본인 값
spring.security.oauth2.client.provider.google.user-name-attribute=sub
파일을 저장하고 종료합니다. (Ctrl+X, Y, Enter)
2단계: start.sh에서 외부 설정 파일 참조
start.sh 파일을 열어서 수정합니다.
nano /home/ubuntu/scripts/start.sh
start.sh에서 Spring Boot 애플리케이션을 실행하는 부분에 외부 설정 파일을 참조하는 옵션을 추가합니다.
-Dspring.config.additional-location 옵션을 사용하여 Spring Boot가 추가 설정 파일을 읽을 수 있도록 지정합니다.
(실행파일경로 부분에 서버에서 실행해야하는 jar 파일의 경로를 적으면 됨)
#!/bin/sh
# 프로파일 설정
export SPRING_PROFILES_ACTIVE=prod
# 애플리케이션 실행 시 외부 설정 파일 참조
java -jar -Dspring.config.additional-location=file:/home/ubuntu/config/application-private.properties 실행파일경로
파일을 저장하고 종료합니다.
3단계: 실행 테스트
start.sh 파일을 수동으로 실행하여 애플리케이션이 외부 설정 파일을 올바르게 읽는지 확인합니다.
sudo /home/ubuntu/scripts/start.sh
로그 파일을 확인하여 애플리케이션이 정상적으로 시작되는지, 특히 Google OAuth 설정이 적용되었는지 확인합니다.
tail -f /home/ubuntu/app.log
'프로그래밍 > AWS' 카테고리의 다른 글
Nginx와 Spring Boot 연동: 설정 파일의 역할과 구조 (1) | 2024.11.18 |
---|---|
redirect_uri_mismatch 오류 해결 (0) | 2024.11.10 |
start.sh 실행되지 않는 오류 (0) | 2024.10.31 |
[Java springboot] 프로젝트 배포하기 - 우분투(Ubuntu) 서버 접속하기 (2) | 2024.10.31 |
[Java springboot] 프로젝트 배포하기 - EC2 인스턴스 만들기 (0) | 2024.10.31 |