Tomcat
tomcat instance 분리
0. bash_profile 적용
-
##### alias ##### alias status=/home/alan/script/status.sh alias webd=/home/alan/script/webdwarf.sh alias goweb='cd /app/apache24/bin' alias goweblog='cd /logs/weblog/service' alias gowas='cd /app/tomcat8/tomcat-engine' alias gowaslog='cd /logs/waslog/instance' #### HYUNSU 20190313 ###### alias XXXstart='/app/tomcat8/tomcat-engine/launcher XXX int_XXX1 -Xmx1024m -Xms1024m start' alias XXXstop='/app/tomcat8/tomcat-engine/launcher XXX int_XXX1 -Xmx1024m -Xms1024m stop' alias goXXX='cd /app/tomcat8/instance/XXX' alias goXXXweb='cd /app/homeplus/webapps-XXX' alias goXXXlog='cd /logs/waslog/instance/XXX'
1. 폴더생성
- /app/tomcat8/instance/XXX 생성 자리수는 3자리 정의
2. 인스턴스 복제
- /app/tomcat8/tomcat-engine에서 cp -Rf ./conf ./temp ./work /app/tomcat8/instance/XXX
3. logs, webapps 심볼릭 링크만들기
- ln -s /logs/waslog/instance/adm logs ln -s /app/homeplus/webapps-adm webapps
4. webapps 파일 복사
- cp -Rf /app/homeplus/webapps/* /app/homeplus/webapps-adm
5. catalina.properties 수정
- cp catalina.properties catalina.properties.20190227 logs.dir 변경 추가 : logs.dir=/logs/waslog/instance/XXX
5. context.xml 변경
- cp context.xml context.xml.20190227 PC 관리자 사례
<!-- ######################## context.xml 2019.02.27 hsuryu (IBM) --> <ResourceLink name="jdbc/cosadm" global="jdbc/cosadm" type="javax.sql.DataSource"/> <!-- ######################## context.xml 2019.02.27 hsuryu (IBM) -->
6. server.xml 변경 포트를 설정에 따라 모두 변경한다.
- cp server.xml server.xml.20190227
-
server port : 8005 --> 8105
-
Connector port : 8080 --> 8180 (http port), redirectPort port : 8443 --> 8143
-
AJP/1.3 port : 8009 --> 8109, redirectPort 8443 --> 8143
-
<Connector 에 connectionTimeout="20000" 추가
-
<Engine name="Catalina" defaultHost="localhost">
-
--> <Engine name="Catalina" defaultHost="localhost" jvmRoute="node1"> : 웹서버 loadbalancer 설정 참조
-
- Datasource 설정 context.xml 설정 참조
-
<GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <!-- ########## 2019.02.27 hsuryu IBM Added ########## --> <Resource auth="Container" name="jdbc/cosadm" driverClassName="oracle.jdbc.driver.OracleDriver" username="cosadm" password="cos0515adm" url="jdbc:oracle:thin:@10.10.36.129:1521/COSTST" maxIdle="1" maxTotal="3" maxWaitMillis="10000" type="javax.sql.DataSource" validationQuery="SELECT 1 FROM DUAL" /> <!-- ################################################## --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources>
-
7. tomcat-users.xml admin 사용자 추가
- cp tomcat-users.xml tomcat-users.xml.20190227
-
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcatadm@#" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
8. /manager 적용 (선택적 적용, 비추천)
- - goXXXweb - .../webapps-xxx/manager/META-INF의 context.xml의 주석 처리
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
-
tomcat 인증서 설치
4016 2019-04-05 14:38:38 cd /app/apache24/conf/ssl/
4028 2019-04-05 14:44:04 cat Wildcard.homeplus.co.kr.key Wildcard.homeplus.co.kr.crt GLOBALSIGN_ROOT_CA.crt > tomcat20190405.pem
4029 2019-04-05 14:44:07 openssl pkcs12 -export -out tomcat20190405.p12 -in tomcat20190405.pem
4031 2019-04-05 14:44:39 vi tomcat20190405.pem <-- 개행 수정
4032 2019-04-05 14:45:06 openssl pkcs12 -export -out tomcat20190405.p12 -in tomcat20190405.pem <-- 패스워드 정의
4035 2019-04-05 14:47:23 keytool -importkeystore -srckeystore tomcat20190405.p12 -srcstoretype pkcs12 -destkeystore tomcat20190405.jks -deststoretype jks
4037 2019-04-05 14:48:26 keytool -list -keystore tomcat20190405.jks <-- 점검
4040 2019-04-05 14:49:57 vi server.xml
<Connector port="8143" scheme="https" secure="true"
enableLookups="false" disableUploadTimeout="true" SSLEnabled="true"
clientAuth="false"
keystoreFile="/app/apache24/conf/ssl/tomcat20190405.jks" keystorePass="tomcatadm@#"
sslProtocol="TLS"
/>
4041 2019-04-05 14:54:31 prdstop
4042 2019-04-05 14:54:38 prdstart
4043 2019-04-05 14:54:45 ps -ef | grep java
4046 2019-04-05 14:57:43 netstat -ant | grep 8143
tomcat instance stop
#!/bin/sh
echo
echo '##### START Waiting for tomcat instance stop #####'
echo
TPATH=/app/tomcat8/tomcat-engine/bin/bootstrap.jar
TOMCAT_USER=alan
WAITINGTIME=60 # Total waiting 60 second
KILL15TIME=30 # Total waiting 60 second
KILL15STATUS=0 # STATUS 1 after kill -15 process
INSTID=$1
SLEEPTIME=2 # sleep 2 second
cnt=1
for (( i=0; i < $WAITINGTIME; i++ ))
do
sleep $SLEEPTIME
#echo " " $i " , " $cnt " !"
runinst=$(ps -ef | grep java | grep -v grep | grep $INSTID | awk {'print $2 $16'})
UNAME=`id -u -n`
if [ e$UNAME != "e$TOMCAT_USER" ]
then
echo "[ Use by only user Account [ $TOMCAT_USER ] Start Fail Tomcat Instance ]"
exit;
fi
if [[ $KILL15TIME -le $cnt && $KILL15STATUS != 1 ]]
then
echo "Kill -15 tomcat process [$1]"
runprocessid=$(ps -ef | grep java | grep -v grep | grep $INSTID | awk {'print $2'})
echo 'Kill -15 tomcat instance process id = '$runprocessid
#echo "##### KILL -15 PROCESS ######"
kill -15 $runprocessid
KILL15STATUS=1
fi
if [ $WAITINGTIME -le $cnt ]
then
echo "Kill -9 tomcat process [$1]"
runprocessid=$(ps -ef | grep java | grep -v grep | grep $INSTID | awk {'print $2'})
echo 'Kill -9 tomcat instance process id = '$runprocessid
#echo "##### KILL -9 PROCESS #####"
kill -9 $runprocessid
sleep 5
break
fi
if [ -z "$runinst" ]; then
echo [$cnt sec]"Stoped Tomcat Instance [$1] $runinst"
break
else
echo [$cnt sec]"Running Tomcat Instance [$1][$INSTID] $runinst"
fi
let cnt=cnt+$SLEEPTIME
done
instcount=$(ps -ef | grep java | grep -v grep | grep $INSTID | awk {'print $2 $16'} | wc -l)
echo "=============================================================="
echo " Tomcat $INSTID Instance STOP "
echo "=============================================================="
echo " Instance Running Count = "$instcount
echo "=============================================================="
echo
echo '##### END Waiting for tomcat instance stop #####'
echo
echo