톰캣의 세션 타임아웃 시간은 conf/web.xml 파일에서 변경할 수 있다.


session-timeout 값의 기준은 "초" 이다.


 

    <session-config>

        <session-timeout>86400</session-timeout>

    </session-config>


톰캣에서 Redis를 통해 세션을 공유해보자.


톰캣 설치 폴더의 lib 폴더에 아래 세개의 파일을 추가한다.

commons-pool-1.6.jar / jedis-2.1.0.jar / tomcat-redis-session-manager-1.2-tomcat-7.jar


tomcat-redis-session-manager는 톰캣 버전에 따라 다운로드 받으면 된다. (본인은 톰캣7 사용)

https://github.com/jcoleman/tomcat-redis-session-manager 


 

톰캣 설치 폴더의 conf 폴더에 있는 context.xml 에 아래 부분을 추가한다.


<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />

<Manager className="com.radiadesign.catalina.session.RedisSessionManager"

host="192.168.0.10"

port="6379"

database="0"

password="xxxx"

maxInactiveInterval="86400"/>


톰캣 재시작!!

Tomcat 7 부터는 압축을 자체 지원한다.


server.xml에 아래처럼 설정하면 mime-type을 지정할 수 있다. (톰캣 재시작)


    <Connector port="7080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8"

               compressableMimeType="text/html,text/xml,text/plain,application/xml,application/json"

            compression="on"

    />  



응답헤더를 보면 gzip으로 넘어오는 걸 확인할 수 있다.


 

  1. Content-Encoding:
    gzip
  2. Content-Language:
    ko-KR
  3. Content-Type:
    text/html;charset=UTF-8
  4. Date:
    Thu, 27 Feb 2014 10:53:45 GMT
  5. Server:
    Apache-Coyote/1.1
  6. Transfer-Encoding:
    chunked
  7. Vary:
    Accept-Encoding



** Ehcache의 Gzip compression 를 사용하려면 다음 링크를 참조


http://misoin.tistory.com/46

pom.xml에 ehcache-web 추가


        <dependency>

            <groupId>net.sf.ehcache</groupId>

            <artifactId>ehcache-web</artifactId>

            <version>2.0.4</version>

        </dependency>


 

web.xml에 filter 추가


    <!-- gzip -->

    <filter>

        <filter-name>gzipFilter</filter-name>

        <filter-class>net.sf.ehcache.constructs.web.filter.GzipFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>gzipFilter</filter-name>

        <url-pattern>*.html</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>gzipFilter</filter-name>

        <url-pattern>*.htm</url-pattern>

    </filter-mapping>


    <filter-mapping>

        <filter-name>gzipFilter</filter-name>

        <url-pattern>*.jsp</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>gzipFilter</filter-name>

        <url-pattern>*.js</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>gzipFilter</filter-name>

        <url-pattern>*.css</url-pattern>

    </filter-mapping>


아쉬운 점은 filter를 mime-type으로 설정하는 게 없는 듯... (못찾겠다...)

mime-type으로 설정할 수 있으면 좋겠는데...

<url-pattern>/*</url-pattern> 이것 또한 안되고...


==================================================================================


단, Tomcat 7 부터는 압축을 자체 지원한다.


server.xml에 아래처럼 설정하면 mime-type을 지정할 수 있다. (톰캣 재시작)


    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8"

               compressableMimeType="text/html,text/xml,text/plain,application/xml,application/json"

            compression="on"

    />  


모니터링을 하기 위해 톰캣의 catalina.sh 에 아래와 같이 설정하고 톰캣을 재시작하면 된다.


# vi /usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true \

                      -Dcom.sun.management.jmxremote.port=9090 \

                      -Dcom.sun.management.jmxremote.ssl=false \

                      -Dcom.sun.management.jmxremote.authenticate=false \

                      -Djava.rmi.server.hostname=192.168.0.202"

 

포트는 충돌나지 않는 걸로 아무거나 설정하면 됨 (: 9090)

호스트네임에는 해당 서버의 아이피를 적어줌

 

 

포트 개방 (9090)

# iptables -I INPUT -m tcp -p tcp --dport 9090 -j ACCEPT

# /sbin/service iptables save

# /sbin/service iptables restart

 

Java VisualVM JDK에 기본 탑재된 모니터링 툴이다. (JDK 설치폴더 아래 bin 폴더 내에 “jvisualvm.exe”)


프로그램을 실행하면 왼쪽 영역에 Remote 메뉴가 있다.

오른쪽 마우스 클릭해서 Add Remote Host… 메뉴를 선택하고 해당 톰캣 정보를 입력.

Remote 매뉴 하위에 추가된 서버가 표시된다. 해당 서버를 오른쪽 마우스 클릭해서 Add JMX Connection… 해서

Connection란에 호스트:포트 (: 192.168.0.202:9090) 를 적어주고, Display name을 체크하자.

호스트:포트 로 표시된 항목이 나타나며, 더블클릭하면 해당 서버의 정보를 GUI로 표시해준다.





https://visualvm.java.net/plugins.html 에 다양한 플러그인이 있으니 좋은거 있음 설치하자

Visula GC plugin이 쓸만하다고 함 (http://www.oracle.com/technetwork/java/visualgc-136680.html)



ApacheBench로 간단하게 접속 스트레스 테스트를 해보자.

# ab -n 100000 -c 10 -k http://****

# cd /usr/local/src

# wget http://apache.tt.co.kr/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz

# tar zxvf apache-tomcat-6.0.36.tar.gz

# cp -Rf apache-tomcat-6.0.36 /usr/local/tomcat

# cd ../tomcat/

# ll

Total 144

-rw-r--r-- 1 root root 37951 11?? 15 16:42 LICENSE

-rw-r--r-- 1 root root   558 11?? 15 16:42 NOTICE

-rw-r--r-- 1 root root  9188 11?? 15 16:42 RELEASE-NOTES

-rw-r--r-- 1 root root 15576 11?? 15 16:42 RUNNING.txt

drwxr-xr-x 2 root root  4096 11?? 15 16:42 bin

drwxr-xr-x 2 root root  4096 11?? 15 16:42 conf

drwxr-xr-x 2 root root  4096 11?? 15 16:42 lib

drwxr-xr-x 2 root root  4096 11?? 15 16:42 logs

drwxr-xr-x 2 root root  4096 11?? 15 16:42 temp

drwxr-xr-x 7 root root  4096 11?? 15 16:42 webapps

drwxr-xr-x 2 root root  4096 11?? 15 16:42 work

 

 

GET을 통해 한글데이터를 받을 때 서버에서 URL UTF-8로 인코딩하도록 설정 (URIEncoding="UTF-8")

# vi conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

               maxThreads="150"

minSpareThreads="25"

maxSpareThreads="75"

               enableLookups="false"

acceptCount="100"

               disableUploadTimeout="true"

URIEncoding="UTF-8" />

 

디렉토리 리스팅 막기 (listing false)

# vi conf/web.xml

<servlet-name>default</servlet-name>

        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

 

CATALINA_HOME 설정

# vi /etc/profile

JAVA_HOME=/usr/java/jdk1.6.0_37

export JAVA_HOME

CATALINA_HOME=/usr/local/tomcat

export CATALINA_HOME

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export PATH

CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$CATALINA_HOME/lib

export CLASSPATH

# source /etc/profile

 

컨텍스트를 생성하자

# mkdir -p ./conf/Catalina/localhost

# mkdir -p /abcd/webapp

# vi ./conf/Catalina/localhost/abcd.xml

<Context path="/tone" docBase="/tone/webapp">

<Resource name="jdbc/abcd"

             auth="Container"

             type="javax.sql.DataSource"

             factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

             driverClassName="com.mysql.jdbc.Driver"

             url="jdbc:mysql://192.168.0.206:3306/abcd"

             username="abcd"

             password="abcd"

             testWhileIdle="true"

             testOnBorrow="true"

             testOnReturn="false"

             validationQuery="SELECT 1"

             validationInterval="30000"

             timeBetweenEvictionRunsMillis="30000"

             maxActive="100"

             minIdle="10"

             maxWait="10000"

             initialSize="10"

             removeAbandonedTimeout="60"

             removeAbandoned="true"

             logAbandoned="true"

             minEvictableIdleTimeMillis="30000"

             jmxEnabled="true"/>

</Context>

 

mysql을 사용하므로 mysql-connector-java를 다운받아 tomcat lib 폴더에 넣어준다.

# cd /usr/local/src

# wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz/from/http://cdn.mysql.com/

# tar xzvf mysql-connector-java-5.1.22.tar.gz

# cd mysql-connector-java-5.1.22

# cp mysql-connector-java-5.1.22-bin.jar /usr/local/tomcat/lib/

 

톰캣 실행

# startup.sh

 

종료는

# shutdown.sh

tomcat + nginx 연동하기에서 tomcat을 설치했었다.

OpenSSL을 이용해 Self-Signed SSL 인증서 만들기에서 자체 서명된 인증서를 생성했다.


이제, tomcat에서 ssl를 적용해보자.

apr을 이용할 것이므로, (Using an APR Connector to Configure SSL)


1. apache apr를 설치하고 (Apache Portable Runtime)
2. tomcat native library를 설치하자. (Apache Portable Runtime (APR) based Native library for Tomcat)


 

먼저 apr 설치

# cd /usr/local/src
# wget http://apache.tt.co.kr//apr/apr-1.4.6.tar.gz
# tar zxvf apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure –prefix=/usr/local/apr
# make && make install


다음은 tomcat native library 설치.
$CATALINA_HOME 환경변수는 /etc/profile 에 설정되어있다고 치자.
하도 많이 해왔으니. 과정은 생략


# cd /usr/local/tomcat/bin
# tar zxvf tomcat-native.tar.gz
# cd tomcat-native-1.1.23-src/jni/native
# ./configure –prefix=$CATALINA_HOME –with-apr=/usr/local/apr/bin/apr-1-config
# make && make install


설치가 되었다.
tomcat native library 관련 파일이 $CATALINA_HOME/lib 에 들어가 있을 것이다.

사전 작업이 다 되었기 때문에 tomcat 설정파일만 수정해주면 된다.


# cd /usr/local/tomcat
# vi conf/server.xml

<!–
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” />
–>
<Connector executor=”tomcatThreadPool”
port=”8443″
protocol=”org.apache.coyote.http11.Http11AprProtocol”
redirectPort=”8443″
connectionTimeout=”20000″
maxHttpHeaderSize=”8192″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” disableUploadTimeout=”true”
acceptCount=”100″
scheme=”https”
secure=”true”
clientAuth=”false”
sslProtocol=”TLS”
SSLEngine=”on”
SSLEnabled=”true”
SSLPassword=”t6830″
SSLCertificateFile=”/usr/local/ssl/www.aistcorp.co.kr.crt”
SSLCertificateKeyFile=”/usr/local/ssl/www.aistcorp.co.kr.key” />


저장하고, 톰캣을 재가동하자.

브라우저에 https://xxx.xxx.xxx.xxx:8443를 쳐서 화면이 나오면 성공….

+ Recent posts