인터넷에 여러글을 보면서 실행하다가
내용도 너무 거지같고 전부 복붙글뿐이여서 내가 시행착오 겪으면서 작성한 내용임
어떤 누가봐도 한번에 성공할수있게 내용정리 함
하고자 하게 된 계기는 로컬서버와 운영서버를 분리하기 위해서
매번 배포할때마다 db연결소스부터 해서 변경해줘야되는게 번거롭기에
war파일 말아서 배포만하면 알아서 local, prod(운영) 구분할수있게 설정하기 위함
1. 프로퍼티 파일 분리하기
src/main/resources/${디렉토리명}/system.properties
(앞으로 할 작업에서 local(로컬), prod(운영)을 분리하기위해 디렉토리이름을 서로 다르게 구분지음)
2. 프로퍼티 파일안에 내용
본인 프로젝트 DB 연결정보에 맞게 프로퍼티명=value 값으로 작성
(local, prod 동일한 properties값으로 해야 유동성있게 변경하기 쉬우니 그냥 똑같이 맞추자)
3. DB연결 (context-database, applicationContext.xml)
1) util:properties 설정
<util:properties id="systemProp" location="classpath:/경로입력">
${spring.profiles.active} 부분이 앞으로 다음내용에 나올 local, prod에 구분되는 변수값이라 보면됨
2. dataSource 설정
properties 내용안에 값을 불러와서 사용할때는
#{systemProp['db.maria.url']} = #{propertiesId값['사용하고자 하는 propertie']}
주의 : $ 가 아니라 # 임
4. 톰캣설정
눈치 빠른 사람은 알겠지만 빨간줄 밑줄그은
-Dspring.profiles.active="local"
내용이 인텔리제이에서 톰캣을 실행할때는 spring.profiles.active 값을 local로 고정하겠다 이뜻임
우선 지금까지 작업은 인텔리제이에서 local에서 작업하기 위한 내용임
물론 4번 이미지에 "local"을 "prod"로 변경시 실제 운영DB로 접근함
--------------------------------------------------------------------------------------------------------------------
여기서부터 (SFTP) WIN_SCP 에서 개고생하며 삽질한 내용을 정리할거임
지금부터 아래부분이 실제 내가 war파일만 말아서 올리면 리눅스서버에서 알아서 prod(운영) 정보를 DB연결 정보에
대입하는 내용임 (내용은 겁나 간단함)
1. setenv.sh 파일 만들기
해당 tomcat/bin 폴더까지 이동후
새로만들기 - 파일 선택후
setenv.sh (파일명 오타나면안됨) 생성
2. setenv.sh 파일 내용
export JAVA_OPTS="-Dspring.profiles.active=prod"
위에서 local에서 작업할때는 -Dspring.profiles.active="local"을 줬지만
운영서버는 무조건 prod로 실행하면 되니 prod 값을 줌
인텔리제이 Tomcat과 리눅스 Tomcat - VMoption 값 주는방식이 살짝 다르니
주의깊게 보고 내용 적기 (안되면 위에 코드블럭 복붙)
3. 톰캣서버 내렸다 올리기
나같은경우는 putty 프로그램을 사용하여
배포(운영) 리눅스 서버에 있는 tomcat을 내렸다 올렸다 함
putty 기준으로
톰캣/bin 폴더 접근후
서버내리기
./shutdown.sh
서버올리기
./startup.sh
이로써 모든 작업은 끝났고 인텔리제이에서 war파일만 말면
local에서는 local 프로퍼티값을 사용하고
배포했을경우에는 prod 프로퍼티값을 사용함
(왜냐? 방금 위에서 리눅스 서버 tomcat은 prod값 쓰겠다고 고정으로 박아놨으니)
'Spring Framework' 카테고리의 다른 글
스프링 - jsp에서 property값 가져오기 (0) | 2021.12.27 |
---|---|
[Spring] Filter, Interceptor, AOP 차이점 (0) | 2021.11.05 |
스프링) java, xml단에서 properties 값들 사용방법 (0) | 2021.11.04 |
Thymeleaf(타임리프)를 사용하여 HTML 렌더링 하기 (0) | 2021.11.03 |
부트스트랩 적용방법 (0) | 2021.10.31 |