본문 바로가기
server/tomcat

centOS6 tomcat install

by "뭉치" 2021. 8. 14.
728x90
<참조>
jdk : http://luckyyowu.tistory.com/122
jdk wget : http://millky.com/@origoni/post/1009?language=ko_kr
tomcat : http://luckyyowu.tistory.com/124
사전 작업
1. root 로그인을 위해 패스워드 설정
$sudo passwd root
2. tomcat 과 호환되는 버전의 jdk 설치
#cd /usr/java
#wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz"
#tar xfz jdk-8u151-linux-x64.tar.gz
#vim /etc/profile

##/etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_151
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

##적용
#source /etc/profile

##확인1
java -version
javac -version
##확인2 - 경로
which java
tomcat download

 

#wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
압축 해제 및 기본 설정 준비
#tar xfz apache-tomcat-8.5.23.tar.gz
#mv apache-tomcat-8.5.23 tomcat-8.5.23
#cd tomcat-8.5.23

1. 설정 분리 사전 작업
#mkdir svr11
#cp -r conf svr11/
#cd svr11
#mkdir work
#mkdir temp
#mkdir logs

2. service shell script 작성
#cd ../bin
#cp startup.sh start-svr11.sh
#cp shutdown.sh stop-svr11.sh
start-svr11.sh 작성
#vim start-svr11.sh

DATE=`date +%Y%m%d%H%M`
SERVICE_NAME=svr
SERVER_NAME=svr11
CATALINA_HOME=/workspace/was/tomcat-8.5.23
CATALINA_BASE=/workspace/was/tomcat-8.5.23/$SERVER_NAME
CATALINA_PID=$CATALINA_BASE/catalina.pid
GCDIR=/workspace/was/tomcat-8.5.23/logs/gclogs/$SERVER_NAME
GCLOG=$GCDIR/$SERVER_NAME-gc.log
JAVA_HOME=/usr/java/jdk1.8.0_151
JAVA_OPTS="-D$SERVER_NAME"
JAVA_OPTS="$JAVA_OPTS -Dcontext=openapi"
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m"
JAVA_OPTS="$JAVA_OPTS -verbose:gc -xloggc:$GCLOG -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:ParallelGCThreads=8"
JAVA_OPTS="$JAVA_OPTS -XX:InitiatingHeapOccupancyPercent=45 -XX:ConcGCThreads=2"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseLargePagesInMetaspace"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC"
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$GCDIR"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9099"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
CATALINA_OUT=$CATALINA_HOME/logs/log/$SERVER_NAME/$SERVER_NAME.out
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib

export CATALINA_PID CATALINA_HOME CATALINA_BASE SERVER_NAME GCDIR GCLOG JAVA_HOME JAVA_OPTS CATALINA_OUT LD_LIBRARY_PATH

if [ -f $GCDIR/*.hprof ]; then
    rename .hprof .hprof.$DATE $GCDIR/*.hprof
    mv $GCDIR/*.hprof.$DATE $GCDIR/backup/
fi

...[생략]
stop-svr11.sh 작성
SERVICE_NAME=svr
SERVER_NAME=svr11
CATALINA_HOME=/workspace/was/tomcat-8.5.23
CATALINA_BASE=/workspace/was/tomcat-8.5.23/svr11
CATALINA_PID=$CATALINA_BASE/catalina.pid
JAVA_HOME=/usr/java/jdk1.8.0_151
export CATALINA_PID CATALINA_BASE CATALINA_HOME SERVER_NAME SERVICE_NAME JAVA_HOME

...[생략]

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
server.xml 작성
#cd /workspace/was/tomcat-8.5.23/svr11/conf
#vim server.conf

#주석처리
<!-- <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> -->

#주석해제
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="250" minSpareThreads="100"/>

#Connector 수정
<Connector  executor="tomcatThreadPool"
            port="8080" protocol="HTTP/1.1"
            connectionTimeout="10000" asyncTimeout="300000"
            enableLookups="false" acceptCount="50"
            redirectPort="8443" backlog="2000" URIEncoding="UTF-8" server="server"/>

<Connector port="8009" minSpareThreads="100" asyncTimeout="300000" protocol="AJP/1.3" URIEncoding="UTF-8" redirectPort="8443" />

#Engine 수정
<Engine name="Catalina" defaultHost="localhost" jvmRoute="openapi1" >

#Host 수정 Log 수정
<Host name="localhost" appBase="/workspace/was/app/webApp" unpackWARs="true" autoDeploy="false" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/workspace/was/tomcat-8.5.23/logs/accesslogs/svr11" prefix="svr_access_log." suffix="" pattern="combined" fileDateFormat="yyyy-MM-dd-HH"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/workspace/was/tomcat-8.5.23/logs/accesslogs2/svr11" prefix="svr_access_log." suffix=".log" pattern='%{yyyy-MM-dd HH:mm:ss.SSS}t %h Cookie:%{JSESSIONID}c X-Remote-id:%{X-Remote-Id}i Set-Cookie:%{Set-Cookie}o "%r" %s' fileDateFormat="yyyy-MM-dd-HH"/>
</Host>
context.xml 작성
<Context>
    <Valve className="org.apache.catalina.valves.PersistentValve" />
    <Manager className="org.apache.catalina.session.PersistentManager"
                saveOnRestart="true"
                maxActiveSessions="-1"
                processExpiresFrequency="6"
                minIdleSwap="-1"
                maxIdleSwap="0"
                maxIdleBackup="0"
        >
        <Store className="com.svr.name.sessionstore.redis.RedisStore"
                host="10.148.0.6:6379,10.148.0.7:6379,10.148.0.8:6379,
                      10.148.0.6:6380,10.148.0.7:6380,10.148.0.8:6380"
                nameSpace="SESSIONS"
                password="{passwd}"
                poolMaxTotal="100"
                poolMaxIdle="50"
                poolMinIdle="25"
                readonly="yes"
        />
    </Manager>
    #WatchedResource 생략
    <Resources cachingAllowed="true" cacheMaxSize="100000"/>
</Context>
web.xml
#맨 하단 추가
<welcome-file-list>
<error-page>
<error-code>400</error-code>
<location>/error_page/400.jsp</location>
</error-page>
<error-page>
<error-code>401</error-code>
<location>/error_page/401.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/error_page/403.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error_page/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error_page/500.jsp</location>
</error-page>
</welcome-file-list>

<security-constraint>
<display-name>Forbidden</display-name>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name></role-name>
</auth-constraint>
</security-constraint>
catalina.properties
#하단 추가
org.apache.catalina.session.ApplicationContext.GET_RESOURCE_REQUIRE_SLASH=true
org.apache.catalina.session.ApplicationDispatcher.WRAP_SAME_OBJECT=true
org.apache.catalina.StandardHostValve.ACCESS_SESSION=true
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true
org.apache.catalina.session.StandardSession.LAST_ACCESS_AT_START=true
org.apache.catalina.util.http.ServerCookie.STRICT_NAMING=true
트러블슈팅
#톰캣 실행시 에러
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

#참고 : http://confluence.goldpitcher.co.kr/pages/viewpage.action?pageId=160698656

#현재 톰캣버전이 자바 9 버전을 지원하지 않는것 같다.
#톰캣을 9로 바꿀지 자바를 8로 바꿀지 선택 해야 한다.
#자바 8로 다시 설치...
#http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz

#해당 문제의 해결책이 자바 버전이 아니였다!
#start-svr11.sh
JAVA_OPTS="$JAVA_OPTS -verbose:gc -xloggc:$GCLOG -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=250"


다음을 주석처리 하였더니 기동됐는데..
GL 이 아니라 G1 이네..
이 부분을 가동시키지 못하는거 같은데..
아.. 오타네.. xloggc 가 아니라 Xloggc 네..

새로운 에러!! ㅋㅋㅋ

Java HotSpot(TM) 64-Bit Server VM warning: Can't have more ConcGCThreads (2) than ParallelGCThreads (1).
Error occurred during initialization of VM
Could not create/initialize ConcurrentMark
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

#GC 튜닝 옵션의 대한 설명
#참조 : https://logonjava.blogspot.kr/2015/08/java-g1-gc-full-gc.html
#참조 : https://mraddon.blog/2016/03/24/tuning-jvm-garbage-collector/

#이걸 보고 해결을 했다.
#참조 : https://dzone.com/articles/g1gcgarbage-first-garbage-collector-tuning-flags-1
->-XX:ConcGCThreads=n
->Sets the number of parallel marking threads. Sets n to approximately 1/4 of the number of parallel garbage collection threads (ParallelGCThreads).
->평행 한 마킹 스레드의 수를 설정합니다. n을 병렬 가비지 수집 스레드 (ParallelGCThreads)의 수의 약 1/4로 설정합니다.

#톰캣을 시작해도 외부 IP로 접속을 할 수 가 없었다.
#방화벽에서 8080 포트를 열어주라는 글이 있어서 시도.
#참조 : http://hellogk.tistory.com/121
#참조 : http://kjcoder.tistory.com/411

#결론으로 구글 클라우드 방화벽 8080 추가하여 외부 접속 성공..
#그리고 server.xml 에서 설정한 webApp 경로에 ROOT가 있어야 함.
기타
##권한 참고
#chmod +x *.sh
#curl http://ip/App/index.jsp

#cd tomcat-native-1.2.8-src/
#cd native/
./configure --prefix=/${path}/tomcat/ --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/java/jdk1.8.0_151 --with-ssl=yes
톰캣 라이브러리 추가
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/commons-pool2/2.4.2/commons-pool2-2.4.2.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/core-redis-session/1.0/core-redis-session-1.0.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/guava/19.0/guava-19.0.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/hamcrest-core/1.3/hamcrest-core-1.3.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/jackson-annotations/2.6.0/jackson-annotations-2.6.0.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/jackson-core/2.6.0/jackson-core-2.6.0.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/jackson-databind/2.6.0/jackson-databind-2.6.0.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/lettuce/4.3.1.Final/lettuce-4.3.1.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-buffer/4.1.6.Final/netty-buffer-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-codec/4.1.6.Final/netty-codec-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-common/4.1.6.Final/netty-common-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-handler/4.1.6.Final/netty-handler-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-resolver/4.1.6.Final/netty-resolver-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/netty-transport/4.1.6.Final/netty-transport-4.1.6.Final.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/lib/rxjava/1.2.1/rxjava-1.2.1.jar
wget http://35.197.149.87:8081/nexus/service/local/repositories/thirdparty/content/com/twigs/svr/micro-service/1.0/micro-service-1.0.jar

 


2017. 10. 26. 15:46


#2018.11.28 자바 다운로드 경로 업데이트 되었음.
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz"

 

Unauthorized Request

 

download.oracle.com

 

#2018.1128 톰캣 다운로드 경로 업데이트 되었음.
wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz"

 

https://login.oracle.com:443/oam/server/obrareq.cgi?encquery%3DNnDdQem%2Bq8QOAUc%2FgxM2jAnRAohppTfXuALzDNITVZDWWMUDA9v0dYY5bNWHkTVnQZyRKTgRyB4SBHePnBEibApMmBJ9FE0dLpr9vXJzNsMd38hDnsUctQ42VzScdYVwD8E73GzxTJBWUH4KrhZaQLZNOsChciOEc94EgH97FwUkNXS14G8QTRWzXL4qx62MarRAlpqKJ8CclWkDQTB7qEE03yolmne8h22d3do4Yb4LqSFNNX4WvdxUSpaVbrBmewfvCQ%2B9aASNWkpFeHaDGlInfeWxPUcMthlTVpLFiBI9ofLqlfRPoCOe0rbyoiSAF6s8BPhv7uPznxmN09xZLbTOh348GPNylhOPhG0QW4tYB6GNvThUMUtn90whyp1j5h%2FJ6xA1pkC%2By5XFqO6dfnQAjOJL1ELfrgRZwyY4GBtB0L7xc8UrdkILx4I%2BpnlOHNHhLhor0F%2Boh0sVGNOTtT%2Bbang%2BhK1XPVNNJCDoLJs1HQJXhbaqQgvHXFTFWTPiiwhYt03Ulj%2BAqli22MZOfBXH3X5FpUrY736is10znvk%3D%20agentid%3Dedelivery-extprod%20ver%3D1%20crmethod%3D2&ECID-Context=1.005mNs9iyx2Fo2KimTctkJ0002Qt008u5c%3BkXjE

 

login.oracle.com:443

 

728x90

댓글