2020년 6월 23일 화요일

한대의 서버에 Tomcat 인스턴스 여러개 사용

[ 출처 : http://itscom.org/ ]

“한 대의 서버에 Tomcat 인스턴스를 여러개 설치하여 운영하기 위한 매뉴얼 입니다. 여기서는 1개의 배포(webapps 및 라이브러리(lib)용) 인스턴스와 2개의 서비스용 인스턴스를 설치하는 방법입니다.”
* 인스턴스별 포트(shutdown, http, https, ajp) 및 환경설명 *

tomcat8_0 인스턴스 :  8005, 8080, 8443, 8009  배포용 인스턴스로 unpackWARs=”true” 설정
tomcat8_1 인스턴스 :  8004, 8081, 8444, 8010  서비스용 인스턴스 1
tomcat8_2 인스턴스 :  8003, 8082, 8445, 8011  서비스용 인스턴스 2

1. 준비환경

1) CentOS 7 에 JDK 설치
2) tomcat 용 계정생성
[root@localhost ~]# adduser -s /sbin/nologin tomcat

2. 톰캣 다운로드
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz
[root@localhost src]# tar xvfz apache-tomcat-8.5.11.tar.gz
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_0 -r
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_1 -r
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_2 -r

3. bin/catalina.sh 수정

(모든 인스턴스에 127라인 쯤 #Get standard environment variables 앞에 다음 추가)

1) tomcat8_0 인스턴스
bin/catalina.sh
export CATALINA_HOME=/usr/local/tomcat8_0export TOMCAT_HOME=/usr/local/tomcat8_0
export CATALINA_BASE=/usr/local/tomcat8_0
CATALINA_PID=/usr/local/tomcat8_0/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

2) tomcat8_1 인스턴스
export CATALINA_HOME=/usr/local/tomcat8_1
export TOMCAT_HOME=/usr/local/tomcat8_1
export CATALINA_BASE=/usr/local/tomcat8_1
CATALINA_PID=/usr/local/tomcat8_1/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

3) tomcat8_2 인스턴스
export CATALINA_HOME=/usr/local/tomcat8_2
export TOMCAT_HOME=/usr/local/tomcat8_2
export CATALINA_BASE=/usr/local/tomcat8_2
CATALINA_PID=/usr/local/tomcat8_2/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

4. conf/server.xml 수정
1) tomcat8_0 인스턴스
conf/server.xml

<server port="8005" shutdown="SHUTDOWN">
~생략~
<connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
~생략~
<connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="true" autoDeploy="true">

2) tomcat8_1 인스턴스
<server port="8004" shutdown="SHUTDOWN">
~생략~
<connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
~생략~
<connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="false" autoDeploy="true">

3) tomcat8_2 인스턴스
<server port="8003" shutdown="SHUTDOWN">
~생략~
<connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8445" />
~생략~
<connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="false" autoDeploy="true">

5. 권한설정, 심볼릭링크
1) 권한설정
chown tomcat.tomcat /usr/local/tomcat8* -R
 2) 심볼릭링크
rm -Rf /usr/local/tomcat8_1/lib
ln -s /usr/local/tomcat8_0/lib /usr/local/tomcat8_1/lib
rm -f /usr/local/tomcat8_1/conf/context.xml
ln -s /usr/local/tomcat8_0/conf/context.xml /usr/local/tomcat8_1/conf/context.xml

rm -Rf /usr/local/tomcat8_2/lib
ln -s /usr/local/tomcat8_0/lib /usr/local/tomcat8_2/lib
rm -f /usr/local/tomcat8_2/conf/context.xml
ln -s /usr/local/tomcat8_0/conf/context.xml /usr/local/tomcat8_2/conf/context.xml

6. systemctl 서비스 등록
1) tomcat8_0 인스턴스 (vi /usr/lib/systemd/system/tomcat_0.service)
/usr/lib/systemd/system/tomcat_0.service


[Unit]
Description=Tomcat8 Service
After=syslog.target
After=network.target

[Service]
Type=forking
User=tomcat
ExecStart=/usr/local/tomcat8_0/bin/catalina.sh start
ExecStop=/usr/local/tomcat8_0/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
2) 모든 인스턴스를 위와같이 작업
3) 서비스 시작 및 등록
[root@localhost ~]# systemctl start tomcat_0
[root@localhost ~]# systemctl enable tomcat_0.service

[root@localhost ~]# systemctl start tomcat_1
[root@localhost ~]# systemctl enable tomcat_1.service

[root@localhost ~]# systemctl start tomcat_2
[root@localhost ~]# systemctl enable tomcat_2.service

7. 기타
1) 웹서비스 점검

웹브라우저에서 http://ip주소:8080 , http://ip주소:8081, http://ip주소:8082 접속합니다.

2) 톰캣 인스턴스 상태점검
[root@localhost ~]# for i in {0..2};do systemctl status tomcat_$i;done

3) 톰캣 디렉토리 구성 및 설명

– /bin : 톰캣의 바이너리와 실행스크립트가 들어 있는 디렉토리

  startup.sh : 톰캣 시작 스크립트

  shutdown.sh : 톰캣 종료 스크립트

  version.sh : 톰캣 버전과 운영체제, JDK 정보를 출력하는 스크립트

  configtest.sh : 설정의 이상유무 테스트

– /conf : 모든 webapp 에 영향을 미치는 톰캣의 전역 설정파일이 들어 있는 디렉토리
  server.xml             : 가장 중요한 설정파일로 톰캣의 서비스, 엔진, 호스트 등의 내용을 설정
  tomcat-users.xml : 역할을 기반으로 하는 사용자 권한과 인증 정보를 설정.
  web.xml                 : 모든 웹애플리케이션을 배포할 때 사용할 기본설정.
  context.xml           : 세션, 쿠키 저장 경로 등 톰캣에 의존적인 설정을 지정.

– /lib : 모든 webapps 에서 사용가능한 JAR 파일 위치

-/logs : 로그 저장 디렉토리로 카탈리나 엔진은 catalina.yyyy-mm-dd.log 와 server.xml 에 지정된 호스트 로그는 localhost.yyyy-mm-dd.log 로 저장

– /webapps : 웹애플리케이션이 있는 디렉토리

– /work : 서블릿이나 JSP 파일을 컴파일한 소스와 클래스 파일이 위치.

댓글 없음:

댓글 쓰기