이전 포스트에서 작성한게 있는데 아무리 봐도 아쉬운 부분이 많았다.
그래서 맘잡고 업데이트를 하였다.
소스는 최대한 적게 작성하려고 했지만, 이정도가 적당한지 모르겠다.
#!/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
댓글 없음:
댓글 쓰기