System/CentOS | Ubuntu

[CentOS 6] APM Setup - Tomcat

jykim23 2019. 7. 9. 11:58

정리가 덜 된 글입니다.

 

 

목차

 

0. 개요

1. apache

2. mysql

3. php

4. tomcat

 

 

 

 

java 설치

tomcat 설치

tomcat 환경변수 설정

tomcat 설치 확인

apache + tomcat 연동

jk 모듈 사용

vhost 설정

server.xml 설정 및 설명

default.jsp 생성

접속

 

 

 

 

 

 

  • java 설치

라이브러리 설치 (JDK)

# rpm –qa | grep java  -> 기존 rpm 삭제
# cd /home/src
# wget http://ghaffarian.net/downloads/Java/jdk-8u202-linux-x64.tar.gz
# tar xvzf dk-8u202-linux-x64.tar.gz
# mv jdk1.8.0_202/ /usr/local/java/

 

라이브러리 소스 다운로드 및 압축 해제

 

 

java 환경변수 설정
# vi /etc/profile
# java
export JAVA_HOME="/usr/local/java"
PATH="$JAVA_HOME/bin:$PATH"
export JAVA_OPTS="-Xms256m -Xmx1024m -XX:MaxPermSize=1024m"

 

내용 추가

 

 

환경변수 적용 및 설치 확인

# source /etc/profile

# java –version

확인 완료

 

환경변수 설명

더보기

Jdk : 자바 개발을 위한 도구
export JAVA_HOME=“/
usr/local/java/jdk1.8”
PATH=“$JAVA_HOME/bin:$PATH”
export JAVA_OPTS=“-Xms256m –Xmx1024m –
XX:MaxPermSize=1024m”

Xms : Java Heap의 최소 크기값을 지정하는 부분
Xmx : Java Heap의 최대 크기값을 지정하는 부분
XX:MaxPermSize : Permanent Generation의 최대 크기를 지정하는 값
: Class
를 사용하는 Application들은 Permanent Generation의 크기가 작을 경우 Out of memory 에러가 발생하며 Class를 로딩하지 못한다.

 

 

 

  • tomcat 설치

 

라이브러리 소스 다운로드 및 해제

# cd /home/src
# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.5/bin/apache-tomcat-8.0.5.tar.gz
# tar zxvf apache-tomcat-8.0.5.tar.gz 
# mv apache-tomcat-8.0.5 /usr/local/tomcat

다운로드된 상태

 

 

Tomcat 실행

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

tomcat 실행

 

 

 

방화벽 설졍

# vi /etc/sysconfig/iptables

tomcat 포트(8080) 방화벽 추가

 

 

 

# service iptables restart

# iptables -nvxL

방화벽 활성화 확인

 

 

프로세스 및 포트 확인

# ps -ef | grep tomcat

프로세스 정상 동작 확인

 

 

# netstatnlp | grep 8080

tomcat port enabled  확인

 

 

  • tomcat 환경변수 설정

# vi /etc/profile

아래 내용 추가

# tomcat

CATALINA_HOME="/usr/local/tomcat"

PATH="$PATH:$CATALINA_HOME/bin"

export CATALINA_HOME="/usr/local/tomcat"

export CLASSPATH="$CLASSPATH":"$CATALINA_HOME"/lib

export JAVA_OPTS="-Xms256m -Xmx1024m -XX:MaxPermSize=1024"

환경변수 추가

환경변수 적용

# source /etc/profile

 

 

 

  • tomcat 설치 확인

브라우저에서 접속

# http://[서버IP]:8080

 

 

 

  • apache + tomcat 연동

Tomcat connectors 설치 및 설정

 

# cd /home/src

# wget https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz

# tar xvf tomcat-connectors-1.2.43-src.tar.gz

# cd tomcat-connectors-1.2.43-src/native/

# sh buildconf.sh

sh buildconf.sh

# ./configure --with-apxs=/home/httpd/bin/apxs

# make && make install

# ls -lart /home/httpd/modules/mod_jk.so

 

설치 완료

 

 

# vi /home/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf           -> 주석해제

Directoryindex index.jsp                           -> 수정

LoadModule jk_module modules/mod_jk.so  -> jk connector 모듈 추가

 

 

주석 해제

 

모듈 추가

 

수정

 

 

 

jk 모듈 사용

 

내용 추가

# vi /home/httpd/conf/httpd.conf
JkWorkersFile /home/httpd/conf/workers.properties
JkShmFile /home/httpd/conf/logs/mod_jk.shm
JkLogFile /home/httpd/conf/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

 

 

모듈 사용

 

모듈 내용 설명

더보기

apache tomcat 연동 
- 톰캣은 was 서버이지만 web 서버의 기능도 갖추고 있다. 그러나 톰캣의 web 서버 기능은 아파치보다 느린 속도처리를 보였고, 이로 인해 정적인 페이지는 아파치가 처리하고, 동적인 페이지를 톰캣이 처리함으로써 부하 분산하는 이유에서 아파치와 톰캣을 연동 
- 톰캣이 발전해서 아파치에 뒤쳐지지 않을 만큼의 역할을 수행 
- 아파치 내에서만 설정할 수 있는 부분과 아파치에서 제공하는 유용한 모듈들을 톰캣에서 사용할 수 없기 때문이다. 

AJP, mod_jk 
- 아파치와 톰캣이 연동하기 위해선 AJP를 통해 서로 통신을 하여야 한다. 
- AJP란 아파치가 웹서버와 외부 서비스(톰캣)과 연동하기 위해 정한 규약(프로토콜)이다. 
- 아파치와 톰캣을 연동을 위해 mod_jk 라는 모듈을 사용, 이는 AJP 프로토콜을 사용하여 톰캣과 연동하기 위해 만들어진 모듈  

vi /home/httpd/conf/httpd.conf <- 아파치, 톰캣을 연동하려면 필요한게 Connector 이다.  
Include conf/extra/httpd-vhosts.conf <- 주석해제 
Directoryindex index.jsp <- 주소창에서 http://www.domain.com/directory/ 와 같이 디렉토리 형식으로 접근했을 때 제일 먼저 찾는 웹 페이지 파일의 이름, 위와 같이 설정한 경우 해당 디렉토리에서 index.jsp를 찾으면 된다.  
만약 파일을 찾을 수 없다면 설정에 따라서 파일을 찾을 수 없다는 에러 페이지를 출력 
LoadModule jk_module modules/mod_jk.so            <- jk connector 모듈 추가 


JkWorkersFile /home/httpd/conf/workers.properties <- httpd.conf 파일에 workers.properties 파일 경로 지정 
JkShmFile /home/httpd/conf/logs/mod_jk.shm 
JkLogFile /home/httpd/conf/logs/mod_jk.log          <- jk에 대한 로그 파일 위치 
JkLogLevel info                                                <- 로그 레벨 지정 
JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”   <- 로그 시간 포맷 지정  

 

 

 

 

모듈의 로그파일을 저장할 디렉토리 생성

# mkdir /home/httpd/conf/logs

 

내용 추가

# vi /home/httpd/conf/workers.properties
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
worker.list=default
worker.default.type=ajp13
worker.default.host=localhost
worker.default.port=8009
worker.default.lbfactor=1
worker.default.connection_pool_timeout=600
worker.default.socket_keepalive=1

파일 생성

파일 설명

더보기

아파치와 톰캣을 연동하기 위해서는 파일을 설정해야 한다.
vi /home/httpd/conf/workers.properties <- httpd.conf 파일과 같은 디렉토리에 위치하게 설정
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java/jdk1.8
worker.list=default                              <-vhost의 JkMount 가 같아야함!
worker.default.type=ajp13                      <- 아파치 서버와 톰캣 서버가 통신하는 프로토콜은 ajp 13
worker.default.host=localhost  
worker.default.port=8009                      <- 톰캣 server.xml 파일 ajp 13 Connector의 포트를 입력
worker.default.lbfactor=1
worker.default.connection_pool_timeout=600
worker.default.socket_keepalive=1

※참고 톰캣 워커
- 톰캣 워커는 웹서버로부터의 서블릿 요청을 톰캣 프로세스에게 전달하여 요청을 처리하는 톰캣 인스턴스
- 대부분 하나의 워커를 사용하나, 로드밸런싱이나 사이트 파티셔닝을 위해 여러 개의 워커를 사용할 수 있다.
- 워커 타입에는 ajp12, ajp13, jni, lb 등이 있다. 

 

 

 

  • vhost 설정

# vi /home/httpd/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

ServerAdmin admin@kim.com

    DocumentRoot "/home/httpd/htdocs"

    ServerName 10.0.0.11

    ErrorLog "|/home/httpd/bin/rotatelogs /home/httpd/logs/jk-error_log.%y%m%d 86400"

    CustomLog "|/home/httpd/bin/rotatelogs /home/httpd/logs/jk-access_log.%y%m%d 86400" common

    JkMount /*.jsp default

</VirtualHost>

 

vhosts 설정

설정 설명

더보기

-url중 jsp로 오는 Request만 톰캣에서 처리함
가상호스트 (VirtualHost)
- 가상호스트란 하나의 웹 서버에서 여러 개의 도메인 주소를 운영 및 관리 할 수 있는 기능
아파치 가상호스트 설정
httpd.conf에서 설정해야 하는 것
1. Listen이라고 써있는 부분을 찾고 포트를 설정 ex) Listen 80
2. # Include conf/extra/httpd-vhosts.conf      -> 주석을 해제하면 가상 호스트를 사용할 수 있다.
3. ServerName에 10.0.0.11(서버IP) 입력하고 DocumentRoot는 httpd/htdocs로 설정
4. hosts 파일에 호스트 설정 추가 ip 추가하고  도메인 입력   
5 .아파치 재실행

 

 

 

  • server.xml 설정 및 설명

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

 <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"> 

<Context path="" docBase="/home/httpd/htdocs" debug="0" privileged="true"/> -> 내용 추가

 

 

 

 

 

 

server.xml 설명

server.xml

 

더보기

Server: 최상위 컴포넌트로서, 톰캣의 인스턴스와 동일, 1개 이상의 <Service>를 포함하고 기본으로 8005 포트가 설정

Listener: <Server>의 하위 컴포넌트, 특정 이벤트들을 리스닝하고 이벤트 발생시 응답

 

Service: 1개 이상의 <Connector> <Engine>을 포함, 기본으로 설정된 이름은 Catalina이다.

 

Connector: 톰캣은 기본적으로 HTTP(8080), HTTPS(8443), AJP(8009) 커넥터를 제공

 

Engine: 커넥터로 수신한 클라이언트의 요청을 처리하고 응답

 

Host: VirtualHost를 의미하며, name 속성으로 설정된 호스트명으로 웹 애플리케이션을 제공, 기본으로 설정된 이름은 localhost이다.

 

Context: 웹 애플리케이션의 의미한다. <Context> 설정이 <Host>안에 없을 경우 기본적으로 webapps 하위의 ROOT 디렉토리(or ROOT.war)을 기본경로(http://localhost:8080/)로 설정한다.

 

Valve: 요청을 처리하는 파이프라인 사이에 추가되어 특별한 처리를 수행하는 컴포넌트이다. <Context>에 추가되면 해당 웹 애플리케이션에 Valve가 적용, <Host>에 추가되면 모든 웹 애플리케이션에 Valve가 적용된다.

 

 

 

  • default.jsp 생성

 

# vi /home/httpd/htdocs/default.jsp

============apache tomcat connection test==================<br />

--------------------<br />

2 + 2 = <%= 2 + 2 %> <br />

--------------------<br />

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

 

 

 

 

  • 재시작

Tomcat 중지 -> Apache 재시작 -> Tomcat 시작

 

tomcat stop

 

apache 재시작 및 tomcat 시작

 

 

  • 접속

http://10.0.0.11:8080/default.jsp

성공!

 

 

 

 

 

이렇게 APM 서버 설치를 마무리 하겠습니다.

감사합니다.