Apache + Tomcat + Eclipse 분리해서 연동하기
리트리버J
·2021. 4. 16. 21:00
Apache는 Web Server (WS)이며,
Tomcat은 Web Application Server (WAS)이다.
둘의 차이점은 잘 알고 있으시겠지만 모르는 분들을 위하여 짧게 설명하자면
WebServer는 정적인요소(이미지, html 등 변하지않는 파일)을 처리하며,
Web Application Server는 동적인요소( jsp [DB에 따라 값이 변함])를 처리한다.
(구글링하면 더 자세히 나온다.)
Tomcat에 이미 WebServer가 있기 때문에 굳이 Apache를 분리 할 필요는 없지만 분리하여 사용하기도 한다.
어차피 이유는 중요하지 않다.
우리는 한번 분리해보는 것에 목적이 있기 때문에.
Apache와 Tomcat 설정파일(메모장 혹은 notepad 사용)을 건드려야 하기 때문에 오탈자가 발생 할 수 있으며, CMD 명령 프롬포트를 이용하기도 하기에 살짝 난이도가 있을 수 있으나 내가 했기 때문에 여러분도 충분히 할 수 있다.
천천히 따라해보자..!!
먼저,
JDK는 1.8
Tomcat은 6.0
Apache는 2.4
mod jk
를 이용하였으며,
Window에 설치할 것이다.
아파치 다운로드
혹시 다른 사이트에서 tar.gz를 다운받을 수 있는데 이것은 리눅스용이다.
zip파일로 다운받자.
www.apachelounge.com/download/
톰캣도 역시 .zip파일을 다운받자.
.apache.org/dist/tomcat/tomcat-6/v6.0.0/bin/
Apache와 Tomcat을 연결시켜주는 mod_jk도 다운받아주자 (.zip 파일로)
tomcat.apache.org/download-connectors.cgi
자바와 이클립스는 따로 경로를 올리지 않겠다.
아파치와 톰캣 분리할 정도면 이미 다운되어 있을 것이 분명하므로..
먼저 Apache 압축을 풀어주자.
Apache24/conf/httpd.conf 파일을 수정할 것이다.
더블클릭하면 파일 앱을 선택하라고 나오는데 메모장으로 열어주자.
http.conf파일을 수정하기에 앞서 짤막한 설명을 하자면
# 이후로 오는 것은 주석이다.
지금부터 설정할 것들은 #이 붙어있다면 지워주도록 한다.
1. 먼저 Define SRVROOT와 ServerRoot를 수정하자.
영어 뜻 풀이 그대로 아파치 서버의 경로를 설정하겠다는 뜻이다.
정말 쉽다.
자신이 설치한 Apache24 폴더의 경로를 넣어주면 된다.
Define 변수명 : 변수명을 정의하겠다는 뜻이다.
${SRVROOT} : 정의한 변수명이 출력된다.
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path. If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used. If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
Define SRVROOT "C:/TEST/ws/Apache24"
ServerRoot "${SRVROOT}"
2.Listen 80으로 설정하자.
처음 localhost나 포트번호를 생략하고 도메인주소를 입력하여 접속한다면
자동으로 :80포트로 접속하게 된다.
간단한 예시로 www.naver.com:80 으로 접속해보면 알 수 있다.
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
LoadModules를 지나쳐 밑으로 쭉~~~ 가다보면
3. Servername을 localhost:80으로 설정해주자.
서버네임을 설정해주지 않고 Apache를 실행하게 되면
명령프롬포트(관리자모드) 에서
1. cd Apache24/bin
2. httpd -k start
명령어를 입력하게 되면
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::3d02:191b:b20d:90e5. Set the 'ServerName' directive globally to suppress this message
서버네임을 설정해달라는(Set the 'ServerName') 에러를 확인 할 수 있다.
※ localhost가 아닌 도메인명으로 하고 싶다면 윈도우 설정을 건드려서 127.0.0.1(localhost)이 해당하는 도메인명으로 들어갈 수 있도록 설정해야 한다. 나중에 이것에 대한 글을 작성해보겠다.
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName localhost:80
4. DocumentRoot(정적 리소스를 읽어올 폴더)를 설정하자.
Apache폴더에서 정적리소스를 불러와도 되겠지만 이클립스 프로젝트의 webapp 하위 경로에서부터 가져와보자.
"C:/로컬경로/프로젝트명/src/main/webapp/resources"
필자는 webapp 폴더의 resources로 설정했다.
DocumentRoot와 Directory를 똑같이 설정해주면 된다.
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "${SRVROOT}/htdocs"
=> "C:/로컬경로/프로젝트명/src/main/webapp/resources"
<Directory "${SRVROOT}/htdocs">
=> "C:/로컬경로/프로젝트명/src/main/webapp/resources"
5. 마지막으로 가장 밑으로 내려와서
이 두 문장을 적어주자.
LoadModule jk_module modules/mod_jk.so
Include conf/mod_jk.conf
LoadModule jk_moudle은 mod_jk.so(Apache와 Tomcat 연결해주는 파일)를 Apache와 동시에 실행시킨다는 뜻이며,
include 는 conf 파일을 포함시켜서 명령을 수행한다는 뜻이다.
두가지 작성되어 있는 경로에 파일을 넣어주도록 하자.
mod_jk.so는 위에서 다운받은 zip파일을 압축 해제 한 후, mod_jk.so 파일만 Apache modules 폴더에 넣어주면 된다.
conf(http.conf가 있는 폴더) 폴더에 mod_jk.conf 파일은 존재하지 않는다. 직접 메모장으로 다른이름으로 저장을 통해 확장자가 conf인 파일을 만들어주자.
이제 httpd.conf의 설정은 끝났다.
물론 여러가지 다른 설정들을 할 수 있지만 우리는 Apache와 Tomcat을 연결하는 기본 작업을 하기 위함으로 나머지는 구글링을 통해 공부해보자..............
===============
다음으로
mod_jk.conf 파일을 작성해보자.
mod_jk.so 파일은 이동만 시켜주고, 수정할 필요가 없다.
=====================================================
JkWorkersFile "C:/TEST/ws/Apache24/conf/workers.properties"
JkLogFile "C:/TEST/ws/Apache24/logs/mod_jk.log"
JkLogLevel error JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
JkAutoAlias "C:/TEST/apache-tomcat-6.0.53/webapps"
JkUnMount /*.html worker1
JkUnMount /*.png worker1
JkUnMount /*.jpg worker1
JkMount /* worker1
JkMount /*.jsp worker1
일단 복붙을 하고
JkWorkersFile "C:/TEST/ws/Apache24/conf/workers.properties"
JkLogFile "C:/TEST/ws/Apache24/logs/mod_jk.log"
이 두가지는 Apache24 폴더 상위부터는 자신이 설정한 경로로 꼭 수정을 해주길 바란다!!
JkAutoAlias "C:/TEST/apache-tomcat-6.0.53/webapps"
JkAutoAlias는 톰캣 서버 경로의 webapps 폴더로 설정해주자.
설명 :
mod_jk.conf 파일은 톰캣과 아파치의 연결 통로,
즉 어느 것은 Apache에게 할당하고
어느 파일은 Tomcat에게 할당할지를 결정하는 일종의 협상 공간이다.
JkUnMount : 톰캣 기준에서 UnMount, 정적리소스 파일을 Apache가 수행하겠다.
JkMount : 톰캣 기준에서 직접 톰캣이 동적리소스 파일을 Tomcat이 수행하겠다.
라는 뜻이다. 이것을 꼭 설정해주어야 한다.
JkWorkersFile에서 설정한 workers.properties가 있다.
그 파일도 또한 존재하지 않으므로 메모장으로 만들어주도록 하자.
workers.properties 파일 :
workers.tomcat_home=C:/TEST/apache-tomcat-6.0.53
workers.java_home="C:\Program Files\Java\jdk1.7.0_80"
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
ajp13으로 톰캣과 아파치가 연결될 것이고 그 포트는 8009로 설정한다. 라는 뜻이다.
worker.list로 여러명의 worker를 설정 할 수도 있다.
tomcat_home은 톰캣 경로를,
java_home은 자바의 경로를 설정해 줄 수 있다.
다른 설정도 할 수 있지만 가장 기본적인 것만 하겠다.
자 이제, 거의 다 왔다.
이클립스를 열어 Server를 설정해주자.
Servers 탭에서 new Server를 한 후, Tomcat v6.0을 클릭 후 Next를 한다.
Tomcat installation directory:를 apache-tomcat-6.0.53의 폴더로 지정한다.
Package Explroer의 Servers / Tomcat 폴더 / server.xml 에서
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
이 부분을 mod_jk.conf 파일과 동일하게 설정해준다.
이제 cmd를 관리자모드로 들어가 접속해보자.
1. cd "Apache폴더 하위의 bin 폴더"
2. httpd -k start
를 하게 되면 Apache 서버가 실행되고 설정이 잘못되었다면 에러 로그가 찍힌다.
3. 이클립스 Tomcat 서버 실행
localhost:80으로 접속해보자!!
자신이 설정한 페이지를 확인 할 수 있다.
만약, index.jsp를 첫페이지로 설정하고 싶다면,
WEB-INF/web.xml 파일에서
요런식으로 정의해주면 된다!
잘 안되시거나 실수한 부분이 있다면 댓글로 남겨주시면 감사하겠습니다.