안녕하세요 나정입니다.
오늘은 apache2와 tomcat을 연동하는 시간을 가지겠습니다.
연동하는 즉슨 apache로 들어오는 도메인을 tomcat과 연결시켜 사용하기 위함인데요.
apache 내에 가상 호스트를 통해
1개의 웹서버에서 여러도메인을 연동시켜 사용할 수 있어 비용적으로 매우 효율적이기도 합니다.
[1] 주요설정파일
연동하는데 있어 수정 및 생성해야하는 파일이 존재합니다.
파일에 대한 설명은 다음과 같습니다.
파일명 | 위치 | 설명 | |
1 | httpd.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 설치경로}/conf/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 수정
빨간색으로 표기되어있는 부분을 수정해준다.
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 프로토콜 |
[1]-[5] 설정이 완료되면 다중으로 연동이 되는 것을 확인 할 수 있다.!
끗
'나정이의 공부 > IT' 카테고리의 다른 글
해시(Hash) 인덱스 정리 (0) | 2021.06.24 |
---|---|
MultipartFile 이미지를 binary로 변환, 출력하기! (0) | 2021.06.23 |
[클라우드] EC2를 이용한 서버 구축 실습 (0) | 2021.04.08 |
[Database] mysql explain 이해 (0) | 2020.09.28 |
[Database] Groupby에 대해서 알아보자 (0) | 2020.09.28 |