반응형
혹시 tomcat 9 컨테이너 분리 shell script가 아니라 직접 분리 해보고 싶으신 분들은 아래 사이트를 참고해주세요.
https://seul96.tistory.com/245
# tomcat Container 분리 script 모음
l container 분리 스크립트 돌리기 전에 확인해야하는 사항
tomcat 설치가 먼저 선행되어 있어야 한다. (tomcat 9 추천)
script는 was 계정으로 올려야 한다. (root로 was를 설치하고 실행했으면 root 계정으로 올려도 무방)
| script 돌리는 순서
container_name_read.sh(분리할 container명 받는 스크립트) -> container_seperate_tomcat.sh(컨테이너 분리 스크립트) -> startup_c*.sh(컨테이너 별 시작 스크립트) 순서로 진행한다.
1. container_name_read.sh 실행 => 분리할 container명을 받기
vi container_name_read.sh | |
구현하고 싶은 내용 | 구현 아이디어 내기 |
분리할 container명을 받는 스크립트 실행 | |
쉘 스크립트 내용 | |
#!/bin/bash #Container1 echo -n "Enter Admin location WAS_BASE(full_name): " read WAS_BASE cd $WAS_BASE echo -n "Enter Admin location Container_name1: " read Container_name1 mkdir $Container_name1 cd $Container_name1 pwd echo "export Container1=$(pwd)" >> ~/.bash_profile echo -e "\033[47;31m create to success Container1 \033[0m" #Container2 cd $WAS_BASE echo -n "Enter Server location Container_name2: " read Container_name2 mkdir $Container_name2 cd $Container_name2 pwd echo "export Container2=$(pwd)" >> ~/.bash_profile echo -e "\033[47;31m create to success Container2 \033[0m" . ~/.bash_profile |
|
결과 | |
[fido@localhost script]$ ./container_name_read.sh Enter Admin location WAS_BASE(full_name): /home/fido/MagicFIDO/tomcat9 Enter Admin location Container_name1: Admin /home/fido/MagicFIDO/tomcat9/Admin create to success Container1 Enter Server location Container_name2: Server /home/fido/MagicFIDO/tomcat9/Server create to success Container2 [fido@localhost script]$ cd /home/fido/MagicFIDO/tomcat9 [fido@localhost tomcat9]$ ls Admin LICENSE RELEASE-NOTES bin logs work BUILDING.txt NOTICE RUNNING.txt conf temp CONTRIBUTING.md README.md Server lib webapps [fido@localhost tomcat9]$ |
|
기타 | |
Bash_profile에 넣는 이름을 바꾸도록 하겠다. 현재는 Container1과 Container2로 되어있는데, 원하는 이름으로 넣도록 하겠다. |
|
그 밖에 알아두면 좋은 사항 | |
없음. |
2. container_seperate_tomcat.sh 실행=> Container 분리 스크립트
톰캣의 엔진에 해당하는 Bin과 lib 폴더는 공유
그 외의 conf, logs, temp, work, webapps 등은 인스턴스 별로 별도 존재
vi container_seperate_tomcat.sh | |
구현하고 싶은 내용 | 구현 아이디어 내기 |
Container 분리 (tomcat) | Echo로 아래의 3개 위치가 맞게 설정되었는지 확인 CATALINA_HOME / Container1 / Container2 Y 입력시 컨테이너 분리 시작 N 입력시 쉘 스크립트 종료 |
쉘 스크립트 내용 | |
#!/bin/bash #~/.bash_profile 적용 echo "PS1=${PS1}" source ~/.bash_profile #Container1, Container2 출력 echo "CATALINA_HOME:$CATALINA_HOME" echo "Container1:$Container1" echo "Container2:$Container2" # 컨테이너 분리 전 물어보기 echo "do you wanna seperate tomcat container? [y/n]" read answer case "$answer" in 'y') cp -r $CATALINA_HOME/conf $Container1 cp -r $CATALINA_HOME/logs $Container1 cp -r $CATALINA_HOME/temp $Container1 cp -r $CATALINA_HOME/work $Container1 cp -r $CATALINA_HOME/webapps $Container1 cp -r $CATALINA_HOME/conf $Container2 cp -r $CATALINA_HOME/logs $Container2 cp -r $CATALINA_HOME/temp $Container2 cp -r $CATALINA_HOME/work $Container2 cp -r $CATALINA_HOME/webapps $Container2 ;; *) exit ;; esac cd $Container1 pwd ls cd $Container2 pwd ls |
|
결과 | |
[fido@localhost script]$ ./container_seperate_tomcat.sh PS1= CATALINA_HOME:/home/fido/MagicFIDO/tomcat9 Container1:/home/fido/MagicFIDO/tomcat9/Admin Container2:/home/fido/MagicFIDO/tomcat9/Server do you wanna seperate tomcat container? [y/n] y /home/fido/MagicFIDO/tomcat9/Admin conf logs temp webapps work /home/fido/MagicFIDO/tomcat9/Server conf logs temp webapps work |
|
기타 | |
※ 주의 사항 : container 분리 스크립트 실행 후 반드시 아래와 같이 Container1과 2의 포트번호가 중복되지 않게 수정해야 한다. $Container1/conf/server.xml <Server port="8205" shutdown="SHUTDOWN"> <Connector port="8282" protocol="HTTP/1.1" connectionTimeout="99999" redirectPort="18444" /> $Container2/conf/server.xml <Server port="8105" shutdown="SHUTDOWN"> <Connector port="8181" protocol="HTTP/1.1" connectionTimeout="99999" redirectPort="18443" /> |
|
그 밖에 알아두면 좋은 사항 | |
또한 redirePort는 각각다른 SSL을 사용할 경우 바꿔준다. 그 후 was 재시작을 해야하는데, container 분리를 통해 분리했으므로 Container1 container2의 startup shutdown 스크립트를 만들어야 한다. |
3. startup_c* 실행 => 컨테이너별 시작 스크립트
바로 log를 띄우면 더 잘 설치되었는지 확인할 수 있을 것 같아서, 로그를 볼 수 있게 수정해주었다.
$ vi startup_c1.sh | $ vi startup_c2.sh |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container1 export SERVER_NAME=Admin cd "${CATALINA_HOME}"/bin; ./startup.sh cd "${CATALINA_BASE}"/logs; tail -f catalina.out |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container2 export SERVER_NAME=Server cd $CATALINA_HOME/bin && ./startup.sh cd "${CATALINA_BASE}"/logs && tail -f catalina.out |
설명: Admin(container1) startup script이다. | 설명: Server(container2) startup script이다. |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container1 export SERVER_NAME=Admin cd "${CATALINA_HOME}"/bin; ./startup.sh cd "${CATALINA_BASE}"/logs; tail -f catalina.out |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container2 export SERVER_NAME=Server cd "${CATALINA_HOME}"/bin; ./startup.sh cd "${CATALINA_BASE}"/logs; tail -f catalina.out |
실행 권한 주기 [fido@localhost bin]$ chmod +x startup_c* 실행 결과 [fido@localhost bin]$ ./startup_c1.sh Using CATALINA_BASE: /home/fido/MagicFIDO/tomcat9/Admin Using CATALINA_HOME: /home/fido/MagicFIDO/tomcat9 Using CATALINA_TMPDIR: /home/fido/MagicFIDO/tomcat9/Admin/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 Using CLASSPATH: /home/fido/MagicFIDO/tomcat9/bin/bootstrap.jar:/home/fido/MagicFIDO/tomcat9/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. 02-Sep-2021 20:32:21.360 정보 [main] org.apache.catalina.startup.HostConfig.deployDirectory 웹 애플리케이션 디렉토리 [/home/fido/MagicFIDO/tomcat9/webapps/docs]을(를) 배치합니다. |
실행결과 [fido@localhost bin]$ ./startup_c2.sh Using CATALINA_BASE: /home/fido/MagicFIDO/tomcat9/Server Using CATALINA_HOME: /home/fido/MagicFIDO/tomcat9 Using CATALINA_TMPDIR: /home/fido/MagicFIDO/tomcat9/Server/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 Using CLASSPATH: /home/fido/MagicFIDO/tomcat9/bin/bootstrap.jar:/home/fido/MagicFIDO/tomcat9/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. |
$ vi shutdown_c1.sh | $ vi shutdown_c2.sh |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container1 export SERVER_NAME=Admin cd "${CATALINA_HOME}"/bin; ./shutdown.sh |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container2 export SERVER_NAME=Server cd "${CATALINA_HOME}"/bin; ./shutdown.sh |
설명: Admin(container1) shutdown script이다. | 설명: Server(container2) shutdown script이다. |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container1 export SERVER_NAME=Admin cd "${CATALINA_HOME}"/bin; ./shutdown.sh |
#!/bin/bash export CATALINA_HOME=$CATALINA_HOME export CATALINA_BASE=$Container2 export SERVER_NAME=Server cd "${CATALINA_HOME}"/bin; ./shutdown.sh |
실행 권한 주기 [fido@localhost bin]$ chmod +x shutdown_c* 실행 결과 [fido@localhost bin]$ ./shutdown_c1.sh Using CATALINA_BASE: /home/fido/MagicFIDO/tomcat9/Admin Using CATALINA_HOME: /home/fido/MagicFIDO/tomcat9 Using CATALINA_TMPDIR: /home/fido/MagicFIDO/tomcat9/Admin/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 Using CLASSPATH: /home/fido/MagicFIDO/tomcat9/bin/bootstrap.jar:/home/fido/MagicFIDO/tomcat9/bin/tomcat-juli.jar Using CATALINA_OPTS: |
[fido@localhost bin]$ ./shutdown_c2.sh Using CATALINA_BASE: /home/fido/MagicFIDO/tomcat9/Server Using CATALINA_HOME: /home/fido/MagicFIDO/tomcat9 Using CATALINA_TMPDIR: /home/fido/MagicFIDO/tomcat9/Server/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 Using CLASSPATH: /home/fido/MagicFIDO/tomcat9/bin/bootstrap.jar:/home/fido/MagicFIDO/tomcat9/bin/tomcat-juli.jar |
기타 Container1과 2의 경로는 아래와 같이 적용되어있다. |
# Container 분리 쉘 스크립트로 분리한 Container1과 Container2
| Container 1
| Container 2
반응형
'Linux > Shell script' 카테고리의 다른 글
awk를 이용하여 조건에 맞는 값 출력하기 + | 이용하여 다중 명령 (0) | 2021.09.24 |
---|---|
sed 사용법 및 예시 (0) | 2021.09.18 |
linux tomcat9 설치 shell script (0) | 2021.09.06 |
linux JAVA 설치 방법 및 Shell script + if문 (2) | 2021.09.03 |
linux user/folder 생성/권한 부여 및 계정 전환 Shell script (0) | 2021.09.01 |
댓글