본문 바로가기
Server/WAS

[Tomcat] MathType Container Server 구축기 (1)

by JunHeeLim 2023. 11. 22.

개발 중인 서비스에서 프론트 측에서 수식 키보드가 필요하다는 요청이 들어왔다.

MathType... 이게 뭐지 싶었지만 공식문서에 설명이 잘 나와 있어서 순조롭게 진행 되었다.

현재 요구사항은 수식을 호출할 수 있는 도메인 서비스 구축이다.

 

Java Servlet / PHP를 이용한 가이드 문서 링크

https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-for-html-editors/mathtype-generic-integration.html

 

MathType Generic integration

Important complementary information

docs.wiris.com

 

php는 사용해본적이 없어.. Servlet 기반으로 구축할 수 있는 방법을 채택하였다.

 

war로 패키징이 되어있다는 정보를 확인하고 제공되는 다운로드 링크를 통해 통합 설치형 버전을 받았다.

https://store.wiris.com/en/products/downloads/mathtype/integrations?_ga=2.132176781.2095026388.1700639118-667508371.1699522565#mathtype_for_generic_integration

 

받아온 war의 구조는 아래와 같다.

소스를 분석해 보니WEB-INF 하위에 web.xml을 확인해보면 서블릿 매핑을 통해 WEB-INF 하위에 lib에 있는 jar를 호출하는 구조였다.

기본적으로 제공되는 Servlet의 url mapping은 /app/* 이다.

공식 사이트에서 제공하는 demo버전의 url의 한 예로 https://www.wiris.net/demo/plugins/app/configurationjs 이었는데,

프론트의 요구사항이 demo 버전과 동일한 path를 부여해 달라고하여 /demo/plugins를 prefix로 붙여주었다.

 

여기서 몇가지 문제가 있었는데, 로컬 환경이면서 내부망에서 개발하고 있는 프론트라는 점이다.
이러한 환경에서 발생한 문제는 총 2가지이다.
1. 내부망이어 whitelist 제외하고는 방화벽에 막혀 호출이 불가하다.
2. CORS 

 

기본적 현재 준비중인 서비스는 트래픽을 고려하여 NCP의 k8s 환경에서 컨테이너를 베이스로 셋업이 되고 있다.

1번에 대한 문제점을 해소하기 위해 k8s 환경에 적용하고, servlet을 구동시키기 위해 외장톰켓과 함께 pod 구성하기와

NCP의 기능 부재로 FE 소스를 서비스 하기 위해 구성해 놓은 static resource server( 구축 과정 참조 링크 )를 이용하여 서비스를 테스트 할 수 있는 환경을 제공하였다.

 

마무리로 nginx data serving을 ncp object storage를 통해 하고 있는데, 편하게 업로드 할수 있도록 파일 업로드 api를 만들어 제공해 드렸다.

 

내부망은 해소 되었지만... 한가지 문제가 발생하였다. 바로 크로스 도메인! 바로 공식 문서를 찾아 보았다..

https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/cross-domain.html#enable-cors

 

Cross-domain

Move integration directory

docs.wiris.com

정리하면 기본적으로 ini 파일을 통해 환경설정에 대한 정보를 주입 받아 덮어 쓰고 관련된 데이터가 없을 경우 기본 환경으로 동작하게 소스가 구성 되어있다.

configuration.ini.dist (기본 제공) : 환경 설정 가능한 요소의 예시들 이다.

configuration.ini (커스텀) : 변경할 환경에 대해 명시한다.

corsservers.ini (커스텀) : 해당 파일을 통해 cors를 허용할 도메인을 명시 할 수 있다.

 

아래와 같이 기본 설정 path로 보고 있는 WEB-INF 하위 pluginwiris 디렉토리에 하위 같은 depth에 넣어 주라고 적혀있다!

 

이로써 1,2 문제에 대해 모두 해결 완료하였고

docker를 이용하여 이미지를 생성하고 배포하는 과정을 다뤄보겠다!

댓글