CentOS 5.8 -> 6.x , 7.x 


어댑터1 : NAT

어댑터2 : 호스트전용 어댑터


서버\리눅스\서버\tomcat


- 리눅스에 업로드

apache-tomcat-7.0.59.tar.gz

jdk-8u31-linux-i586.tar.gz


웹서버 : 정적 컨텐츠 제공

WAS(Web Application Server) : 동적 컨텐츠 제공  JSP


웹서버 + WAS + DBMS

       + PHP + DBMS


http://java.sun.com


# wget 192.168.20.87/apache-tomcat-7.0.59.tar.gz 

# wget 192.168.20.87/jdk-8u31-linux-i586.tar.gz


- jsp 파일은 client가 접근시 모두 java 소스로 변경해서 

- class 파일로 컴파일한다.

/home/tomcat/tomcat/work/Catalina/localhost/_/org/apache/jsp


$ ll

합계 57

-rw-rw-r-- 1 tomcat tomcat  4302 10월 14 12:10 hello_jsp.class

-rw-rw-r-- 1 tomcat tomcat  3578 10월 14 12:10 hello_jsp.java

-rw-rw-r-- 1 tomcat tomcat 16626  1월 29  2015 index_jsp.class

-rw-rw-r-- 1 tomcat tomcat 28905  1월 29  2015 index_jsp.java


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

LAB> CentOS 6.3 에 tomcat 설치하기


CentOS 6.3 + tomcat + Oracle

# /etc/init.d/oracle-xe stop

# su - tomcat

$ startup.sh

$ exit

# /etc/init.d/oracle-xe start

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


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

LAB> CentOS 5.8 에 tomcat 설치하기


CentOS 5.8 + tomcat + mysql

# su - tomcat

$ startup.sh

$ exit

# /etc/init.d/mysqld start


o Apache & Tomcat 연동이란 ?

- 일반적으로 Web Server(Apache)와 Servlet Container(Tomcat)간의 

  연동은 아래와 같다.


          +---------+         +---------+ 

index.jsp |         |         |         |

  ------> | Apache -----------> Tomcat  |

          |           mod_jk            |

          |           (AJP13)           |

          |             8009            |

          |        <-----------  html로 |

          |         |         |  변환   |

          +---------+         +---------+ 


mod_jk : 아파치와 톰캣을 연동하기 위한 모듈 (다리)

AJP13  : 아파치와 톰캣을 서로 통신하기 위한 프로토콜 (version 1.3)

8009   : 아파치와 톰캣을 서로 통신 포트


o Web Server(Apache)와 Servlet Container(Tomcat) 통신 포트 확인


- 아파치를 통해서 Tomcat에 접속 (방화벽 설정 전)

http://192.168.56.101  O


- 아파치를 통해서 Tomcat에 접속 (방화벽 설정 후)

- 서로의 통신 포트인 8009를 차단했으므로 접근이 안된다.

# iptables -A INPUT -p tcp --dport 8009 -j DROP

http://192.168.56.101  X


- 아파치를 통하지 않고 Tomcat에 바로 접속 과정

http://192.168.56.101:8080 O


o 아파치와 톰캣의 처리 플로우


1. 서버에서 설정

- 아파치를 설치하고, 톰캣을 설치하고, 서로 연동한다.

  아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 

   톰캣에서 처리할 요청을 지정함.

2. 사용자가 웹페이지 요청

- 사용자는 아파치 웹서버(보통 80포트)에 접속해 웹페이지를 요청한다.

3. 아파치 웹서버가 톰캣에게 전달

-  아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 

   요청인지 확인하고 

   톰캣에서 처리해야 하는 경우에는 아래처럼

   톰캣의 AJP포트(보통 8009포트)에 접속해서 요청을 전달

4. 아파치의 요청을 처리하고 결과를 돌려줌

- 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 

  아파치 웹서버에게 다시 돌려준다.

5. 아파치가 사용자에게 페이지를 전송

- 아파치 웹서버는 톰캣으로부터 받은 웹페이지의 처리 결과를 

  사용자에게 전송한다.



o 아파치와 톰캣 연동시 css와 image가 깨지는 원인

- 서로간의 연동은 잘 되었지만 DocumentROOT(웹루트 디렉토리)가 서로 

  다르게 설정되어서 발생하는 문제이다.

- 일반적으로 mod_jk를 설정하면 확장자를 선택하여 어떤 확장자에 

  대해서 jk모듈을 이용하여 tomcat으로 보낼지를 결정하게 된다.

- 이때 둘 사이의 ROOT 디렉토리가 다르기 때문에 문제가 발생한 것이다.


- .jsp 파일인 index.jsp는 tomcat으로 넘기지만 index.jsp에 포함되는 

  css파일과 이미지들은 Apache에서 처리하게 되는 것이다. 

  이때 Apache가 ccs파일과 이미지들을 자신의 DocumentROOT 디렉토리인

  /usr/local/apache/htdocs 에서 찾는데 당연히 파일이 없기 때문에 

  안되는 것이다.


o 해결방법

이를 해결하기 위해 Apache와 Tomcat의  DocumentRoot 디렉토리를 

동일하게 설정하면 된다.



-- 작업 순서 --

1. 아파치 웹서버 설정파일 수정

2. 아파치 웹서버 재시작

3. tomcat 디렉토리 권한 변경

-- 작업 순서 --


1. 웹서버 설정파일 수정

- apache + jsp 연동한 후에 httpd.conf 파일을 아래와 같이 수정한다.

# vi /usr/local/apache/conf/httpd.conf

-- /usr/local/apache/conf/httpd.conf --

  :

  :

# DocumentRoot 지시자의 값을 tomcat 의 기본 디렉토리로 변경한다.

# DocumentRoot "/usr/local/apache/htdocs"

DocumentRoot "/home/tomcat/tomcat/webapps/ROOT"

  :

  :

<Directory "/usr/local/apache/htdocs">

  :

  :

</Directory>


# 아래 <Directory> ~ </Directory>를 추가한다.

<Directory "/home/tomcat/tomcat/webapps/ROOT">

 Options Indexes FollowSymLinks

 AllowOverride None

 Order allow,deny

 Allow from all

</Directory>

  :

  :

# 아래 index.jsp를 추가한다.

<IfModule mod_dir.c>

 DirectoryIndex index.html index.jsp

</IfModule>

-- /usr/local/apache/conf/httpd.conf --


2. 아파치 웹서버 재시작

- 설정파일의 문법을 확인한 후 Syntax OK가 출력되면 아파치를 재시작한다.

# apachectl configtest

Syntax OK

# apachectl restart


3. tomcat 디렉토리 권한 변경

- nobody가 접근할 수 있도록 권한을 변경한다.

# chgrp nobody /home/tomcat

# chmod g+x /home/tomcat


4. 접속 확인

- 홈페이지 접속시 JSP 고양이가 뜨면 연동이 성공된 것이다.


http://IP주소/

http://IP주소/hello.jsp




o workers.properties 분석 

worker.list는 사용할 woker(톰캣) 인스턴스들의 리스트다. 

이름은 임의로 지정해주면 되며 

worker.woker이름.속성=값 의 형태로 정의해 주면 된다.


아래 설정을 보면 

포트는 8009를 사용하며 

프로토콜은 ajp13 프로토콜을 사용하며, 

host는 localhost 를 사용한다라는 의미이다.


--  workers.properties --

worker.list=worker1

worker.worker1.port=8009

worker.worker1.host=localhost

worker.worker1.type=ajp13


# 또 다른 예

#worker.list=ajp13

#worker.ajp13.port=8009

#worker.ajp13.host=localhost

#worker.ajp13.type=ajp13

--  workers.properties --


o Apache JServ Protocol (AJP)

- AJP는 웹서버 뒤에 있는 어플리케이션 서버로부터 웹서버로 들어오는 

  요청을 위임할 수 있는 바이너리 프로토콜이다.


원문 : http://en.wikipedia.org/wiki/Apache_JServ_Protocol

 

어플리케이션 서버로 핑을 할 수 있는 웹서버의 모니터링 기능을 지원한다.

웹 개발자들은 대체로 AJP를 여러 웹서버로 부터 여러개 어플리케이션 

서버로의 로드 밸런스 구현에 이용한다. 

세션들의 각각의 어플리케이션 서버 인스턴스의 이름을 갖는 라우팅 

메카니즘을 사용하는 현재 어플리케이션 서버로 리다이렉트된다. 

이 경우 어플리케이션 서버를 위한 리버스 프록시로 웹서버는 동작한다.


AJP는 mod_jk를 사용하는 Apache HTTP Server 1.x 와 Proxy AJP를 

사용하는 Apache 2.x 와 mod_proxy와 proxy 밸런써 모듈에서 같이 

실행된다. 

아직 릴리즈 되지 않은 lighttpd 1.5 버전과 ngix, grizzly 2.1 

그리고 iis에도 사용할 수 있다. 

또 AJP는 Jetty 서블릿 컨테이너로 동작하는 Apache Tomcat servlet 

컨테이너에도 사용할 수 있다.


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

'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 16. APM2 설치  (0) 2016.07.30
[CentOS] 15. APM 설치  (0) 2016.07.23
[CentOS] 14-1 패키지 관리 - tomcat 환경설정  (0) 2016.07.10
[CentOS] 14. 패키지 관리  (0) 2016.07.10
[CentOS] 13-2. 사용자 생성  (0) 2016.07.10

+ Recent posts