개발서버에 JDK버전 여러개 관리하던방법

2021. 9. 14. 10:48톰캣관련

반응형

개발서버에 was1번부터 was8번까지 여러개의 톰캣을 아파치에 연결해서 사용중이였는데 각 톰캣마다 JDK를 다른버전으로 임의로 지정해서 사용중인걸 알게됬음.

아래 방법처럼 리눅스에 java_home을 윈도우에서 하듯이 환경변수로 잡아서 하는방법이 있고, 사용중인 톰캣에서 지정해서 하는 방법이 존재하고!(catalina.sh 직접수정하여 거기에서 home경로 지정)

위 2가지를 생각했는데 JDK버전이 안맞았다.

 

 

1.

source /etc/profile

해당부분에 설정되어있는 java_home 경우 리눅스 환경에 설정되어있는

환경변수로써의 jdk버전. 톰캣은 다르게 설정하여 사용할수있음.

 

현재 우리 개발서버 기준!

/data/tools/was 해당위치에 tomcat 8.5, 9.0  2개의 버전이 존재함.

 

각각 다른 jdk 세팅해서 사용하는중인데

9.0 경우

/data/tools/was/tomcat9.0.43/bin 내부에 catalina.sh 파일을 열었을때

export JAVA_HOME=/data/tools/jdk/jdk1.8.0_281 되어있음 9.0 jdk 1.8버전

또는 set JAVA_HOME =경로 형식으로 지정되는데

 

아무리봐도 설정이 같은 톰캣을쓰는데 JDK버전이 다른경우가 존재하는데

각각 설정하는부분이 안보였다.

 

더 찾아봤더니 쉘 스크립트로 명령어 형식으로 서버를 시작하거나 종료했었는데 아래와 같았음.

이런 방법도 있더라!

COMMAND=${1}

WAS=${2}



if [ "$WAS" == "was1" ] || [ "$WAS" == "was2" ] || [ "$WAS" == "was3" ]  || [ "$WAS" == "was4" ]  || [ "$WAS" == "was5" ]  || [ "$WAS" == "was6" ]  || [ "$WAS" == "was7" ]  || [ "$WAS" == "was8" ];  then

if [ "$WAS" == "was1" ] || [ "$WAS" == "was5" ]; then

JAVA_HOME=/data/tools/jdk/jdk1.7.0_80

CATALINA_HOME=/data/tools/was/tomcat8.5.63

CATALINA_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=2048m"

elif [ "$WAS" == "was6" ]; then

JAVA_HOME=/data/tools/jdk/jdk1.8.0_281

CATALINA_HOME=/data/tools/was/tomcat8.5.63

CATALINA_OPTS="-XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m"

else

JAVA_HOME=/data/tools/jdk/jdk1.8.0_281

CATALINA_HOME=/data/tools/was/tomcat9.0.43

CATALINA_OPTS="-XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m"

fi

 

CATALINA_BASE=/data/tools/was/base/${2}

CATALINA_OPTS="-Xms1024m -Xmx5120m -XX:+UseG1GC -Dfile.encoding=UTF-8 $CATALINA_OPTS"

CATALINA_OUT=/data/deploy/WEB_LOGS/$WAS/catalina.out

export JAVA_HOME CATALINA_HOME CATALINA_BASE CATALINA_OPTS CATALINA_OUT LANG



if [ "$COMMAND" == "start" ]; then

echo "Start $WAS"

$CATALINA_HOME/bin/startup.sh

echo $?

elif [ "$COMMAND" == "stop" ]; then

echo "Stop $WAS"

$CATALINA_HOME/bin/shutdown.sh

echo $?

elif [ "$COMMAND" == "restart" ]; then

echo "Stop $WAS"

$CATALINA_HOME/bin/shutdown.sh

echo $?

echo "Start $WAS"

$CATALINA_HOME/bin/startup.sh

echo $?

elif [ "$COMMAND" == "log" ]; then

tail -f $CATALINA_OUT

elif [ "$COMMAND" == "status" ]; then

PID=`/bin/ps -aef |/bin/grep 'catalina.startup.Bootstrap'|/bin/grep was/base/${WAS}`

                  if [ "$PID" = "" ]; then

                          echo "$WAS is down"

else

echo "$WAS[pid=$PID] is running"

fi

else

echo $"Usage: {start|stop|status|log} $2"

exit 1

fi

else

echo "Usage: {start|stop|status|log} {was1|was2|was3|was4|was5|was6|was7|was8}"

exit 1

fi

exit 0
반응형