컴퓨터 공부/기타

apache2 + tomcat 6.0 연동하는 방법 배워보기!(다중연동)

나정_ 2015. 8. 5. 11:15

오늘은 apache2 + tomcat6.0 버전을 연동하는 방법에 대하여 배워보도록 하겠습니다. :) 


연동하는 즉슨 apache로 들어오는 도메인을 tomcat과 연결시켜 사용하기 위함인데요. 


apache 내에 가상 호스트를 통해 


1개의 웹서버에서 여러도메인을 연동시켜 사용할 수 있어 비용적으로 매우 효율적이기도 합니다.


Apache2 + Tomcat 6.0 연동하기 


1. 주요 설정파일


연동하는데 있어 수정 및 생성해야하는 파일이 존재합니다. 

파일에 대한 설명은 다음과 같습니다. 


 

 파일명

위치 

설명 

 1

 hrrpd.conf

apache설치위치/conf 

apache 기본설정파일 

 2

workers.properties

apache설치위치/conf 

AJP Connector를 통해 서비스하는 Application server를 등록하는 설정파일 

 3

mod_jk.conf 

다운

Apache와 Tomcat의 연동을 위해 AJP Connector Module을 apache에 load하는 설정파일 

 4

httpd-vhost.conf

apache설치위치/extra/

한개의 apache파일에 다수의 tomcat을 설정하기 위해 생성된 관리 파일 

 5

server.xml 

 tomcat설치위치/conf

 tomcat 기본 설정파일  



2. mod_jk 다운 


mod_jk란 위에서도 설명을 했지만 apache와 tomcat을 연동해주는 connector입니다. 

mod_jk 다운은 http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/binaries/windows/ 에서 다운가능합니다. 




맨처음 파일을 다운받은 뒤 압축을 풀면 다음과 같이 나옵니다.




위에서 체크한 mod_jk.so 는 apache설치파일/conf 밑에 넣어줍니다. 






3. httpd.conf 수정 


// 소스의 양을 줄이기위해 불필요한 내용 및 주석은 삭제하였음 

ServerRoot "c:/Apache24"


Listen 80

// 도메인에서 유입되는 포트가 어떤 포트인지 확인한 후 (기본은 80포트) Listen으로 열어준다. 


LoadModule access_compat_module modules/mod_access_compat.so

LoadModule actions_module modules/mod_actions.so

LoadModule alias_module modules/mod_alias.so

LoadModule allowmethods_module modules/mod_allowmethods.so

LoadModule asis_module modules/mod_asis.so

LoadModule auth_basic_module modules/mod_auth_basic.so

LoadModule authn_core_module modules/mod_authn_core.so

LoadModule authn_file_module modules/mod_authn_file.so

LoadModule authz_core_module modules/mod_authz_core.so

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

LoadModule authz_host_module modules/mod_authz_host.so

LoadModule authz_user_module modules/mod_authz_user.so

LoadModule autoindex_module modules/mod_autoindex.so

LoadModule cgi_module modules/mod_cgi.so

LoadModule dir_module modules/mod_dir.so

LoadModule env_module modules/mod_env.so

LoadModule include_module modules/mod_include.so

LoadModule isapi_module modules/mod_isapi.so

LoadModule log_config_module modules/mod_log_config.so

LoadModule mime_module modules/mod_mime.so

LoadModule negotiation_module modules/mod_negotiation.so


Include conf/mod_jk.conf

// tomcat+apache연동 모듈을 include함 

Include conf/extra/httpd-vhosts.conf

// 가상 호스트 설정 파일 include 함 


<IfModule unixd_module>


User daemon

Group daemon


</IfModule>


ServerAdmin admin@example.com


ServerName www.example.com:80 

// 사용하는 도메인에 대하여 serverName 설정  

ServerName www.example1.com:80 

// 1개의 웹서버에 여러개 도메인을 연결해주고 싶은경우 추가한뒤 httpd-vhost에서 tomcat과 연동해준다 

<Directory />

    AllowOverride none

    Require all denied

</Directory>



DocumentRoot "c:/Apache24/htdocs"

<Directory "c:/Apache24/htdocs"> 

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted

</Directory>


<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>


<Files ".ht*">

    Require all denied

</Files>


ErrorLog "logs/error.log"


LogLevel warn


<IfModule log_config_module>

    

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %>s %b" common


    <IfModule logio_module>

      # You need to enable mod_logio.c to use %I and %O

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    </IfModule>


    CustomLog "logs/access.log" common


</IfModule>


<IfModule alias_module>

   

    ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"


</IfModule>


<IfModule cgid_module>

</IfModule>


<Directory "c:/Apache24/cgi-bin">

    AllowOverride None

    Options None

    Require all granted

</Directory>


<IfModule mime_module>

   

    TypesConfig conf/mime.types


    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz


</IfModule>


<IfModule proxy_html_module>

Include conf/extra/proxy-html.conf

</IfModule>



<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>




4. httpd-vhost.conf 수정 


가상호스트를 설정해주는 파일이다. 


해당 설정파일은 apache설치파일/conf/extra 밑에 존재한다. 



# TOMCAT 설정

<VirtualHost *:80> // 외부에서 들어오는 아이피 : 포트 

    ServerName www.example.com

    JkMount /* ex1 // apache+tomcat 연동시 사용되는 고유 id 값 

    DocumentRoot "C:/apache-tomcat-6.0.37_test01/webapps" // tomcat/webapps 경로 

    <Directory "C:/apache-tomcat-6.0.37_test01/webapps">

    </Directory>

</VIrtualHost>


<VirtualHost *:80>

    ServerName www.example1.com

    JkMount /* ex2

    DocumentRoot "C:/apache-tomcat-6.0.37_test02/webapps"

    <Directory "C:/apache-tomcat-6.0.37_test02/webapps">

    </Directory>

</VirtualHost>




이름 

설명 

virtualhost 

들어오는 url:port를 설정해준다  

ServerName 

도메인명 

JKMount 

jsp 요청이 들어오면 tomcat_id(예;ex1)이 그 해당 요청을 tomcat에게 보내는 역할을 한다. 요청을 보낼 때는 특정 파일에 대한 값만 제한하여 보낼 수 있으며 예를들어 jsp파일에 대한 url만 요청하고 싶을 경우 /*.jsp같이 변경하여 설정할 수 있다. 



5. workers.properties 설정 


workers.properties는 apache내부에서 제공되는 파일이 아니다. 


그러므로 만들어줘야 되며 만들어줄 떄는 다음과 같이 만들어주면 된다. 


worker.list=ex1,ex2

// httpd-vhost에서 설정해준 id 값을 넣어줌 

worker.maintain=30


worker.ex1.type=ajp13

// id에 대한 type 부터 기타 설정을 진행함 

worker.ex1.host=localhost

worker.ex1.port=8471

// tomcat server.xml 내에 설정한 ajp port 를 넣어줘야함 

worker.ex1.socket_keepalive=1

worker.ex1.connection_pool_size=100

worker.ex1.connect_timeout=3000

worker.ex1.prepost_timeout=1000

worker.ex1.socket_timeout=3

worker.ex1.reply_timeout=1000


worker.ex2.type=ajp13

worker.ex2.host=localhost

worker.ex2.port=8472

worker.ex2.socket_keepalive=1

worker.ex2.connection_pool_size=100

worker.ex2.connect_timeout=3000

worker.ex2.prepost_timeout=1000

worker.ex2.socket_timeout=3

worker.ex2.reply_timeout=1000


 이름

설명 

worker.list=tomcat id 값 

httpd-vhost에서 설정한 id 값을 넣어준다. 

worker.ex1.type=ajp13 

apache http서버와 tomcat서버가 통신하는 protocol은 AJP13이다. 

worker.ex1.connection_timeout=1000

mod_jk와 tomcat instance간 연결이 완료된 후 AJP13프로토콜에서의 cping request에 대한 response timeout 값 (1000 = 1초) 

 worker.ex1.propost_timeout=1000

 mod_jk와 tomcat instance간의 요청이 전달되기 전에 AJP13프로토콜에서의 cping request에 대한 response timeout 값 (1000 = 1초)

 worker.ex1.socket_timeout=3

mod_jk와 tomcat instance간의 응답대기 시간이 3초라면 timeout 

 worker.ex1.reply_timeout=1000

mod_jk와 tomcat instance간의 요청과 응답시간에 대해서 timeout을 설정 

 worker.ex1.port=8471

tomcat 내에서 설정한 AJP 프로토콜  




그럼!!!!!!!!!!!!!!!!!!!!