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