You cannot see this page without javascript.

Apache HTTP Server와 Tomcat의 연동

Server 조회 수 6136 추천 수 0 2014.05.20 13:41:07

• Apache2.4와 Tomcat 8.0 연동하기

1. Apache와 Tomcat을 연동하려면 Tomcat Connectors(mod_jk)가 필요합니다.

http://tomcat.apache.org/download-connectors.cgi에서 다운로드

위의 첨부파일의 압축을 풀고 mod_jk.soApache가 설치된 곳에 있는 modules에 복사합니다.

 

2. Apache2.4confhttpd.conf를 수정합니다.

DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4/htdocs" 부분을 DocumentRoot "d:/apm/dcroot" 로 변경합니다.

(d:/apm/dcroot 폴더를 생성해 놓습니다)

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.4/htdocs"> 부분을 <Directory "d:/apm/dcroot">로 변경합니다.

※ 이제 d:/apm/dcroot가 작업 폴더가 됩니다.

LoadModule jk_module modules/mod_jk.so

 

# mod_jk.conf

Include conf/mod_jk.conf

도 추가하고 저장합니다.

(만약 접속한 경로에 있는 index.jsp를 자동으로 실행하게 하고 싶다면 <IfModule dir_module>의 DirectoryIndex 부분에 index.jsp를 추가한다)

 

3. Apache2.2conf에 mod_jk.conf를 생성하고 아래와 같이 입력합니다.

mod_jk.conf

 

 

JkWorkersFile "D:/APM/Server/Apache24/conf/workers.properties"

JkLogFile "D:/APM/Server/Apache24/logs/mod_jk.log"

JkLogLevel error

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

JkRequestLogFormat "%w %V %T"

 

<이하 추가문은 vhost 설정시 vhost내에 연동설정한다.

  참고로 아파치의 ssl을 넘길경우에는 ssl에도 추가 연동한다.>

 

#JkMount /* ajp13

 

JkMount /*.jsp ajp13

#JkMount /*.do ajp13

JkMount /servlet/* ajp13

#JkMount /url ajp13

#JkMount /dita/j_spring_security* ajp13

#JkMount /ppspwc/j_spring_security* ajp13

#JkMount /mmea/j_spring_security* ajp13

#JkMount /irtv/j_spring_security* ajp13

 
4. Apache2.4conf에 workers.properties를 생성하고 아래와 같이 입력합니다.
workers.tomcat_home에는 Tomcat이 설치된 경로를 입력합니다.
workers.tomcat_home=D:/APM/Server/atom80
workers.java_home에는 JDK가 설치된 경로를 입력합니다.
workers.java_home=C:/Program Files/Java/jdk1.8.0_05
ps=/ 
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stder
 
5. 이제 Tomcat이 설치된 폴더에 있는 conf 폴더로 이동합니다.
conf 폴더에 있는 server.xml 파일을 수정합니다.

server.xml

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

<Host name="localhost"  appBase="D:/APM/dcroot" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">로 변경하고, </Host> 앞에
<Context path="/" docBase="D:/APM/dcroot" unpackWARs="true" debug="g" reloadble="true" xmlValidation="false" xmlNamespaceAware="false" crossContext="true"></Context>를 추가합니다.
 
6. 이제 모든 준비가 다 끝났습니다. Apache와 Tomcat을 껏다가 켜주세요.
그리고 D:APMdcroot 폴더안에 time.jsp 파일을 만들고 아래와 같이 작성하세요.

time.jsp

<%@ page contentType = "text/html; charset=euc-kr" language="java"%>

<%@ page import="java.util.Date" %>
<%Date now = new Date();%>
 
<html>
<body>
<%= now %>
</body>
</html>
 
7. http://localhost/time.jsp에 접속했을때 아래와 같이 시간이 나온다면 적용된것입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Apache와 Tomcat을 연동하는 이유

  • Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동을 할 수 있다.
  • Apache HTTP Server에서 제공하는 편리한 기능을 사용하기 위해서 연동을 할수 있다.
  • 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능을 사용하여 안정적으로 운영 할 수 있다.

2. Apache와 Tomcat 연동하기

  • 아래 내용은 윈도우 OS를 기준으로 설명하였다.
2.1 mod_jk 다운로드 및 설정
httpd.conf
# jk_module 추가
LoadModule jk_module modules/mod_jk.so
2.2 workers.properties 파일 설정
  • apache와 tomcat를 연동하기위해서는 workers.properties 파일을 설정해야 한다.
  • $APACHE_HOME/conf/workers.properties 파일을 아래 예제와 같이 생성한다.
  • workers.properties 파일은 일반적으로 httpd.conf 파일과 같은 디렉토리에 위치하게 설정한다.
workers.properties
worker.list=sample 
#톰캣 server.xml 파일 AJP/1.3 Connector의 Port를 입력한다.
worker.sample.port=8009
# 톰탯 server 호스트
worker.sample.host=localhost
# 아파치 + 톰캣 통신 프로토콜
worker.sample.type=ajp13
  • ※참고 Tomcat Worker
    • 톰캣 워커는(Tomcat worker) 웹서버로부터의 서블릿 요청을 톰캣 프로세스(Worker)에게 전달하여 요청을 처리하는 톰캣 인스턴스이다.
    • 대부분 하나의 worker를 사용하나, load 밸런싱이나 site 파티셔닝을 위해 여러개의 worker를 사용 할 수 있다.
    • 워커 타입에는 ajp12, ajp13, jni, lb 등이 있다.
2.3 workers.properties 경로 지정
  • httpd.conf 파일에 workers.properties 파일 경로를 지정한다.
httpd.conf
# workers.properties 파일 추가
JkWorkersFile conf/workers.properties
2.4 VirtualHost 설정 변경
  • $APACHE_HOME/conf/vhosts/extra/httpd-vhost.conf 파일의 VirtualHost의 DocumentRoot를 Tomcat 디렉토리로 변경하자
  • JkMount 설정을 추가하자
httpd-vhost.conf 파일 설정
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName test.apache.org
    DocumentRoot C:devapache-tomcat-6.0.32webappsROOT 
 
 # URL중 jsp로 오는 Request만 Tomcat에서 처리 함
 # sample은 workers.properties에서 등록한 worker이름
JkMount  /*.jsp  sample   

# servlet 예제 실행을 위해서 추가
JkMount  /examples/* sample
</VirtualHost>
2.5 Tomcat의 server.xml 수정
  • <Context> 태그의 docBase 디렉토리를 Apache HTTP Server 설정과 동일하게 Tomcat 서버의 webapps/ROOT 디렉토리를 절대경로로 지정하자.
원하는 디렉토리를 Document Root로 사용
<Host name="localhost"  appBase="webapps"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
 <Context path="" docBase="C:devapache-tomcat-6.0.32webappsROOT" reloadable="true"/>
 ..
</Host>

3. Apache HTTP Server와 Tomcat의 연동 테스트

 

 

 

 

 



 현재상태
 

002.jpg

 

 

 

http://localhost/ 혹은 http://127.0.0.1/으로 접속하면 Apache를 통해 페이지를 보여주고
http://localhost:8080/ 혹은 http://127.0.0.1:8080/으로 접속하면 Apache Tomcat를 통해 페이지를 보여줌

이제부터 Apache와 Apache Tomcat을 연동할 것입니다. 연동하는 이유는
html과 php를 사용한다면 Apache를 통해 http://localhost/ 혹은 http://127.0.0.1/로 접속하면 되지만 jsp를 사용해야 한다면 Apache Tomcat을 통해 http://localhost:8080/ 혹은 http://127.0.0.1:8080/로 포트를 설정해서 접속해야 할것이다.

하지만 서로 연동함으로써 jsp페이지라도 http://localhost/ 혹은 http://127.0.0.1/로 접속해서 php와 jsp 두가지 서비스를 제공할 수 있기 때문입니다. 이외에도 jsp를 좀더 빠르게 연결할 수 있습니다.

요즘엔 tomcat의 성능이 좋아져서 이렇게까지 할 필요가 없다고는 하지만 연동해 보는것도 좋은 공부가 될것 이라고 생각됩니다.
 

003.jpg

 

 

 

앞으로 만들 흐름입니다. php와 html은 Apache로 바로 해석하고 jsp는 Apache를 거쳐 Apache Tomcat을 통해 해석을 하게될 것 입니다.

 
List of Articles
번호 제목 글쓴이 날짜 조회 수
369 APM mariadb download origin address LynX 2019-06-19 1990
368 APM What one can and should optimize LynX 2019-06-03 1416
367 CentOS mariadb install LynX 2019-05-31 1180
366 CentOS init mode change LynX 2019-05-30 1289
365 APM ext zip install LynX 2019-02-19 1613
364 APM ext ImageMagick install LynX 2019-02-19 511
363 3D Printer Pronterface(PrintRun) install file LynX 2018-09-13 753
362 CentOS Grub UUID change LynX 2018-08-08 867
361 Linux letsencrypt wildcard LynX 2018-07-26 798
360 Printer cura usb connection LynX 2018-07-06 666
359 CentOS cli 무선랜 LynX 2018-06-07 446
358 APM 윈도우에 APM 페키지 설치 file LynX 2018-05-04 586
357 APM MySQLTuner 설치 LynX 2018-04-27 544
356 CentOS CentOS7 커널 업데이트 LynX 2018-04-23 699
355 HTML Tag CSS 여러가지 모양 만들기 LynX 2018-02-08 771
354 Linux wkhtmltopdf wkhtmltoimage install LynX 2018-01-31 602
353 APM LZ4_LIBS Not Found (CentOS7, MariaDB 10.1.29) LynX 2018-01-03 485
352 APM mysql ./configure LynX 2017-12-15 804
351 APM PHP-7.2.0 LynX 2017-12-12 3157
350 Linux libiconv LynX 2017-12-08 558

XE Login