인턴업무를 시작하면서 회사의 5개 서버를 분리하는 작업을 하게되었다. 그 과정에서 스프링 부트의 내장 톰캣이 아닌 외부 톰캣을 사용하는 방법을 사용하게 되었다. 그래서 겸사겸사 어떤식으로 사용했는지 정리 해보려고 한다.
먼저, 처음에는 아무것도 몰라서 무작정 구글링을 해서 환경변수를 설정하라는 말만 듣고, 작업을 시작했었다. 그 과정에서 CATALINA_HOME의 환경변수 인식의 문제가 있었고, 이것저것 해보다가 인식은 안되는데 catalina run을 실행하니까 스프링이 돌았었다.
하지만, 이건 대리님이 지시하셨던 방식이 아니었다.
그래서 대리님께서 다시 설명해주셨고, 그제서야 방법을 알 수 있었다.... 스스로 학습하지 못한것이 너무 아쉽다...
우선 대리님께서 먼저 주신 세팅이 거의 된 톰캣 5개가 있었다.
이제 이 5개를 세팅해야 하는데, 우선 3개만 코드 수정과 테스트가 필요해서 세팅하기로 했다.
코드 리팩토링으로 서버간의 통신을 끊어 냈고, 각 서버가 독립적으로 로직을 실행하도록 바꾸었다.
톰캣에서 프로젝트를 실행하는 방법은 아주 간단하다. webapp 폴더 안에 넣기만 하면 된는 것..
그래서 일단 냅다 war파일을 넣었다. 당연히 실행은 안된다.
왜냐면 서비스 설정과, startup.bat, shutdown.bat, service.bat의 설정이 필요하기 때문이다.
(원래 맥만 쓰다가 윈도우로 작업을 하려니 아직도 어렵다...)
일단 톰캣 폴더에 bin폴더로 이동하면 거기에 startup.bat과 shutdown.bat파일이 존재한다. 이 두 파일을 설정해주면
우선 CATALINA_HOME과 SERVER_NAME, JAVA_HOME을 설정했다.
원래는 컴퓨터 자체의 환경변수에 넣었는데 이렇게되면 여러개의 톰캣을 돌릴 경우 경로를 환경변수에 넣은 하나만 인식해서 동시 동작이 어렵다.
그래서 startup, shutdown을 모두 설정하고나면
service에는 SERVICE_NAME설정이 필요하다.
이렇게 지정하고 다음 단계를 진행한다.
톰캣 서버를 여러개 돌리려면 3가지 방법이 있다고 배웠다.
1. 물리적으로 독립시켜서 돌린다.
2. service.xml에서 Engine 태그 안에 Host를 여러개 두는 방법
3. Engine을 같게 만든 여러 톰캣을 포트를 다 다르게 해서 작동하는 방법
(정확하지 않을 수 있다. 메모를 못해둬서ㅠㅠ)
우선의 이 3가지 방법 중에 3번을 사용해보았다.
서버 3개를 돌리기 위해서 포트 9개를 준비했고, server.xml 파일에 각 톰캣의 Engine부분을 동일하게 하여서 내부포트와 외부포트를 다르게 지정하였다.
위 코드는 예시이다.
Server 단에서 지정한 8006포트와 Service 단에서 지정한 외부포트 50532, 내부포트 8444로 하여서 톰캣을 돌리기 위한 준비를 했다.
이렇게 한 다음에 service.bat 파일을 가지고 service 등록을 진행한다.
아래의 명령어를 실행하여서 진행한다. service_name은 service.bat파일에 지정한 SERVICE_NAME이다. 지정을 안했다면 아마 작성하지 않아도 알아서 현재 폴더의 service.bat을 install 할 것 같다.
service.bat install {service_name}
그 다음에 Tomcat{ver}.exe 파일을 실행하여 작동하는지 확인할 수 있다.
memory 설정도 해주었다. C 드라이브의 용량을 고려해서 지정해주면 된다.
이렇게 해서 톰캣 서버의 설정을 끝냈다. exe파일을 동작하면 잘 실행된다.
근데 실행 후 로그에 한글이 깨진다면, conf/logging에 UTF-8설정을 EUC-KR로 바꿔보면 한글이 안깨질 것이다.
백그라운드로 실행하고 싶다면 작업관리자에서 서비스 단에서 지정해둔 서비스 이름을 찾아서 실행하면 된다.
추가로 방화벽 설정도 필요해서 방화벽 설정에서 고급 설정으로 이동하여 인바운드 규칙을 추가하여 포트를 지정해주면 된다.
'노예 일지' 카테고리의 다른 글
Log Setting(logback-spring.xml) (0) | 2024.11.30 |
---|---|
작업 스케줄러 만들기 (0) | 2024.11.27 |
Tomcat Init Setting Shell Script 작성하기 (0) | 2024.11.26 |