The Pursuit of Happyness

선행작업 : JDK 설치!


아래 명령어로 tomcat을 설치한다.

# sudo yum install tomcat tomcat-webapps tomcat-admin-webapps 


아래 명령어로 tomcat 서비스를 실행

# sudo systemctl start tomcat


tomcat의 기본 포트는 8080 이므로, 해당 서버에 8080 포트로 접속하여 tomcat 서비스가 잘 돌아가는지 확인



@ 계정 설정

vi /etc/tomcat/tomcat-users.xml 


"tomcat-users" element 에 아래와 비슷하게 계정을 추가한다.

<user username="admin" password="password" roles="admin-gui,manager-gui"/>


변경한 내용을 적용하기 위해 톰캣 서비스를 다시 시작한다.

sudo systemctl restart tomcat



@ 톰캣 메모리 설정

아래 설정파일에서 메모리 크기를 지정할 수 있다.

vi /etc/tomcat/tomcat.conf


JAVA_OPTS 라고 되어 있는 부분을 다음과 같이 변경한다. (Xms 512M, Xmx1024M 예시)

JAVA_OPTS="-Xms512M -Xmx1024M"


톰캣 운영 도중 자주 나타나는 java.lang.OutOfMemoryError: PermGen space 에러는 heap 메모리의 특정 영역에 객체를 할당 할 수 있는 공간이 충분하지 않아서 발생하는 것으로 클래스와 매써드 객체가 저장되는 영역이 부족해서 생긴다. 

에러의 원인에 따라 하나의 클래스의 생성자에서 차지하는 heap 메모리가 많아서 발생하는 경우 XX:MaxNewSize 옵션을 추가해 주고, 서블릿이 로딩하는 클래스와 매써드가 많아서 발생하는 경우에는 XX:MaxPermSize 옵션을 추가해 준다. (두 가지 다 적용해도 무방)

JAVA_OPTS="-Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=256M -XX:NewSize=128M -XX:MaxNewSize=128M"


또한 $CATALINA_BASE/conf/web.xml 파일의 enablePooling 옵션을 아래와 같이 사용하지 않는 것으로 설정하면, jsp를 로딩한 후에 메모리 상에서 제거하게 되므로 위의 에러가 나타날 가능성을 줄여준다. Pooling 을 사용하지 않으므로 동시 요청이 많은 경우 약간의 성능 차이는 발생할 수 있음.

<init-param>

    <param-name>enablePooling</param-name>

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

</init-param>


@ 부팅시 서비스가 시작되도록 등록

# sudo systemctl enable tomcat


@ 부팅시 서비스가 시작되지 않게 삭제

# sudo systemctl disable tomcat



Comment +0

웹서버로 많이 사용하는 Apache-Tomcat 에서 tomcat 기본적으로 8080 포트에서 동작하는데,

기본 웹서버 포트인 80 포트로 동작시키기 위해서는 mod_proxy mod_jk 이용해서 포트를 연결해 줘야 한다.

 

mod_proxy mod_jk 장단점은 다음과 같다.

@ mod-proxy

- 장점

                1. 추가 모듈이 따로 필요 없다.  (Apache 2.2 이상에서는 mod_proxy, mod_proxy_http, mod_proxy_ajp, mod_proxy_balancer 모두 포함되어 있다.)

                2. http, https 혹은 AJP 사용가능

- 단점

                1. mod_proxy_ajp 8K+ 크기의 패킷을 지원하지 않는다.

                2. 기본 load balancer 사용한다.

                3. Domain model clusterig 지원하지 않는다.

@ mod_jk

- 장점

                1. 향상된 load balancer

                2. 향상된 node failure detection

                3. 패킷 사이즈의 AJP 지원

- 단점

                1. 별도의 모듈을 설치해야 한다.

 

위의 내용은 아래 링크에서 가져온 내용임.

 https://community.jboss.org/people/mladen.turk/blog/2007/07/16/comparing-modproxy-and-modjk

 


@ mod_proxy 설정

                1. Apache 설치되어 있으면 별다른 설치는 필요없다.

                2. 설정

httpd.conf

 

                    ProxyPass /app http://127.0.0.1:8080/app

                    ProxyPassReverse /app http://127.0.0.1:8080/app

 

 

@ mod_jk 설정

                1. Httpd Developer 버전을 준비한다. (yum install httpd-devel)

                2. Connector 모듈을 다운로드 한다.  (http://tomcat.apache.org/connectors-doc/)

                3.  설치

 

                    cd native/

                    ./configure --with-apxs=/usr/sbin/apxs

                    make

                    sure make install

 

                4. 설정

httpd.conf

 

                    LoadModule jk_module modules/mod_jk.so


                   <IfModule jk_module>

                         JkWorkersFile  conf.d/workers.properties

                         JkMountFile  conf.d/uriworkermap.properties

                         JkShmFile  logs/mod_jk.shm

                         JkLogFile  logs/mod_jk.log

                         JkLogLevel  info

                         JkLogStampFormat  "[%a %b %d %H:%M:%S %Y] "

                    </IfModule>

 

 workers.properties

 

worker.list=ajp

worker.ajp.port=8009

worker.ajp.host=localhost

worker.ajp.type=ajp13

worker.ajp.lbfactor=1

worker.ajp.socket_timeout=60


uriworkermap.properties

 

/*.do=ajp

/*.jsp=ajp

/*.js=ajp

/*.gif=ajp

/*.jpg=ajp

/*.css=ajp



Comment +0