Skip to main content

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