Apache + Tomcat + Eclipse 분리해서 연동하기

리트리버J

·

2021. 4. 16. 21:00

728x90

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/

 

Apache VS16 binaries and modules download

 

www.apachelounge.com

톰캣도 역시 .zip파일을 다운받자.

.apache.org/dist/tomcat/tomcat-6/v6.0.0/bin/

 

Index of /dist/tomcat/tomcat-6/v6.0.0/bin

 

archive.apache.org

 

Apache와 Tomcat을 연결시켜주는 mod_jk도 다운받아주자 (.zip 파일로)

tomcat.apache.org/download-connectors.cgi

 

Apache Tomcat® - Tomcat Connectors (mod_jk) Downloads

You must verify the integrity of the downloaded files. We provide OpenPGP signatures for every release file. This signature should be matched against the KEYS file which contains the OpenPGP keys of Tomcat's Release Managers. We also provide SHA512 checksu

tomcat.apache.org

 

자바와 이클립스는 따로 경로를 올리지 않겠다.

아파치와 톰캣 분리할 정도면 이미 다운되어 있을 것이 분명하므로..

 

 

먼저 Apache 압축을 풀어주자.

아파치 zip파일

Apache24/conf/httpd.conf 파일을 수정할 것이다.

더블클릭하면 파일 앱을 선택하라고 나오는데 메모장으로 열어주자.

httpd.conf

http.conf파일을 수정하기에 앞서 짤막한 설명을 하자면

# 이후로 오는 것은 주석이다.

지금부터 설정할 것들은 #이 붙어있다면 지워주도록 한다.

 

1. 먼저 Define SRVROOTServerRoot를 수정하자.

영어 뜻 풀이 그대로 아파치 서버의 경로를 설정하겠다는 뜻이다.

정말 쉽다.

자신이 설치한 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 파일에서

요런식으로 정의해주면 된다!

 

 

잘 안되시거나 실수한 부분이 있다면 댓글로 남겨주시면 감사하겠습니다.

 

 

728x90