2019년 7월 3일 수요일

Tomcat multi instance 구성 준비 (shell script) update version

이전 포스트에서 작성한게 있는데 아무리 봐도 아쉬운 부분이 많았다.
그래서 맘잡고 업데이트를 하였다. 
소스는 최대한 적게 작성하려고 했지만, 이정도가 적당한지 모르겠다.

#!/bin/bash

VERSION=8.5              # (필수)버전을 선택
DIR=$(pwd)               
INSTANCE_NAME=       # 인스턴스 생성시 확인 해야할 이름이 필요
LOGHOME=/logs/tomcat

if [ -z $INSTANCE_NAME ]; then  # 인스턴스명을 프롬프트로 받을 수 있음
  echo -n "Input unique INSTANCE_NAME(or SERVER_NAME) (ex tomcat-svr-11, tomcat-11): ";
  read word;
  if [ -z $word ]; then
    echo "# [ERROR]  have to Input INSTANCE_NAME(or SERVER_NAME)!!! "
    exit ;
  fi
    INSTANCE_NAME="$word";
    SVR_NAME=$INSTANCE_NAME;
    SVR_PATH=$DIR/$SVR_NAME;
    echo "INSTANCE_NAME = $SVR_NAME";
    echo "INSTANCE_PATH = $SVR_PATH";
    `mkdir -p $SVR_PATH`;    # 인스턴스명을 지정했다면 이제 directory 생성
  else
    SVR_PATH=$DIR/$INSTANCE_NAME;
    `mkdir -p $SVR_PATH`;
fi

if [ ! -z $LOGHOME ]; then   # 심볼릭 링크를 걸고 싶다면 위쪽 LOGHOME을 지정
  `ln -s $LOGHOME $DIR/$INSTANCE_NAME/logs`
fi

# -----------------------------------------------------------------
# Make Directory # 로그 경로들을 생성
# -----------------------------------------------------------------
[ ! -d "$INSTANCE_NAME/bin" ]     &&  mkdir -p $INSTANCE_NAME/bin;
[ ! -d "$INSTANCE_NAME/conf" ]    &&  mkdir -p $INSTANCE_NAME/conf;
[ ! -d "$INSTANCE_NAME/lib" ]     &&  mkdir -p $INSTANCE_NAME/lib;
[ ! -d "$INSTANCE_NAME/temp" ]    &&  mkdir -p $INSTANCE_NAME/temp;
[ ! -d "$INSTANCE_NAME/webapps" ] &&  mkdir -p $INSTANCE_NAME/webapps;
[ ! -d "$INSTANCE_NAME/work" ]    &&  mkdir -p $INSTANCE_NAME/work;

# -----------------------------------------------------------------
# XML Copy # tomcat 엔진이 설치 되어 있는지 확인 없으면 설치 해야함
# -----------------------------------------------------------------

value=`find ../ -type f -name "catalina.sh" 2>/dev/null | wc -l`
#echo $value

if [ -z ${value} ]; then
  echo "# [ERROR] Can not Found Tomcat Engine"
  else
  if [ ! -d $CATALINA_HOME ]; then
    echo "# [ERROR] Can not find CATALINA_HOME"
  else
    CATALINA_HOME=$(find ../ -type d -name "*$VERSION*" 2>/dev/null -exec readlink -f {} \;)
    cp -r $CATALINA_HOME/conf/* $SVR_PATH/conf/;
  fi
fi

# -----------------------------------------------------------------
# PORT, jvmRoute Translation # 경로하고 설정파일만 복사한다고 끝이 아니다 바로 기동하면 포트가 쫑(충돌)난다. 아마 address already use 라고 나올 것 같다. 
java system properties로 설정하기 위해 문자 치환
혹시 세션 클러스터 사용시 필요할 jvmRoute도 설정
# -----------------------------------------------------------------
DIFF=$(diff $CATALINA_HOME/conf/server.xml $SVR_PATH/conf/server.xml)
if [ "$DIFF" ]; then

  echo "# [WARNING] $CATALINA_HOME/conf/server.xml and $SVR_PATH/conf/server.xml are different "
else
  sed -i 's/8005/\$\{shutdown.port\}/' $SVR_PATH/conf/server.xml;
  sed -i 's/8080/\$\{http.port\}/' $SVR_PATH/conf/server.xml;
  sed -i 's/8009/\$\{ajp.port\}/' $SVR_PATH/conf/server.xml;
  sed -i 's/8443/\$\{ssl.port\}/' $SVR_PATH/conf/server.xml;
  sed -i 's/8443/\$\{ssl.port\}/' $SVR_PATH/conf/server.xml;
  sed -i 's/"localhost">/"localhost" jvmRoute="${server}">/' $SVR_PATH/conf/server.xml;
fi

댓글 없음:

댓글 쓰기