현재 맡고 있는 프로젝트에서 크라우닉스 리포트라는 리포트 툴을 사용하고 있다.
이 리포트는 개발서버에 설치되어 있고, 개발서버와 연동해서 web상에서 리포트를 보여주기 위해서는
프로젝트를 개발서버에 올려서 배포를 해야 했다.
개발의 톰캣서버에는 이미 다른 프로젝트가 하나 올라가 있었고
나는 프로젝트를 한 개 더 톰캣서버에 배포해야 하는 상황이었다.
한 개의 톰캣 서버에 여러 프로젝트를 배포하기 위해서는 server.xml을 설정해야 했고
xml설정부터 실행까지 모든 과정을 정리하고자 한다.
1. 개발서버 shutdown
톰캣서버의 start, shutdown은 bin폴더에 있다.
server.xml을 설정하기에 앞서 좀 더 안정적으로 진행하기 위해
서버를 sh shutdown.sh 명령어서 서버를 내린다.
2. server.xml 설정
server.xml은 conf폴더에 위치하고 있다.
vi server.xml 명령어로 server.xml을 작성한다.
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URLEncoding="UTF-8" URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" Server="tmis"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/>
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>
<Context docBase="tmis" path="/tmis" reloadable="true"/>
</Host>
</Engine>
</Service>
<Service name="CatalinaTb">
<Connector connectionTimeout="20000" port="9090" protocol="HTTP/1.1" redirectPort="9443" URLEncoding="UTF-8" URIEncoding="UTF-8"/>
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" Server="tbamis"/>
<Engine name="CatalinaTb" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/>
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>
<Context docBase="tbamis" path="/tbamis" reloadable="true"/>
</Host>
</Engine>
</Service>
</Server>
위 첫 번째 service name ="Catalina"는 기존에 올라가 있는 다른 프로젝트다.
새로운 프로젝트를 배포하기 위해서는 기존 프로젝트와 겹치지 않도록 포트구성을 해줘야 한다.
그래서 service name="CatalinaTb"이름으로 새로운 프로젝트 배포를 위한 설정을 추가했다.
(Catalina와 CatalinaTb 서비스 블록을 비교해 보면 어디가 다른지 알 수 있다.)
새로운 프로젝트의 포트 9090, 9009, 9443으로 구성했고 서버명을 tbamis로 설정했다.
(Context docBase와 path도 tbamis로 설정)
3. 방화벽, 포트 열기(centos7기반)
sudo firewall-cmd --zone=public --permanent --add-port=9443/tcp
sudo firewall-cmd --zone=public --permanent --add-port=9090/tcp
sudo firewall-cmd --zone=public --permanent --add-port=9009/tcp
sudo firewall-cmd --reload
위 명령어로 포트를 열고 방화벽 재시작을 한다.
firewall-cmd --zone=public --list-all
포트가 열렸는지는 위 명령어로 확인한다.
4. war파일 올리고 서버시작
webapps 폴더에 tbamis.war파일을 올린 후
bin파일로 이동하여 sh startup.sh명령어서 서버를 기동 한다.
1. 톰캣은 server.xml파일을 읽어서 프로젝트를 실행한다.
2. server.xml에 구성되어 있는 것처럼 9009, 9443, 9009 포트를 사용하고
webapps폴더에 있는 tbamis.war를 기반으로 프로젝트를 실행한다.
이 과정에서 tbamis이름의 폴더가 자동생성되고 폴더 안에 class파일들 프로젝트 구성요소들이 있다.
(서버가 정상 기동되면 war파일을 기반으로 tbamis폴더를 생성한다)
3. 서비스가 정상실행되면 netstat -antp|grep LISTEN 명령으로 포트가 정상적으로 리스닝되고 있는지 확인가능하다.
아까 방화벽으로 열어뒀던 9090,9443,8009 포트가 정상적으로 리스닝되고 있다.
만약 본인이 설정한 포트가 정상적으로 리스닝되고 있지 않다면(화면에 보이지 않는다면)
서비스(프로젝트) 자체가 정상 구동이 되고 있지 않다는 것이다.(배포실패)
서비스(프로젝트)가 실행되고 있지 않다면 server.xml파일 구성을 다시 확인해야 한다.
정상 구동됐다면 url에 https://톰캣이 설치된 서버의 아이피:9090/tbamis
입력하면 배포한 프로젝트에 접근이 가능하다.
톰캣서버에 직접 프로젝트를 배포해 보면서 배포과정을 자세히 알 수 있게 되었고
server.xml에 설정을 추가하면 한 개의 톰캣서버에 다수의 프로젝트를 배포할 수 있다는 것을 알게 되었다.
'전자정부프레임워크&Spring Project' 카테고리의 다른 글
DB마이그레이션(Tibero -> Cubrid) (0) | 2024.10.08 |
---|---|
Session만료 시 메시지 띄우기 (0) | 2024.09.28 |
Interceptor로 외부IP 접근 차단 (0) | 2024.07.20 |
Google 2차인증 구현(구글 OTP) (0) | 2024.06.23 |
전자정부프레임워크 - 수료증 (1) | 2024.03.19 |