Dev Tools, WEB & WAS/Apache

[Apache] Window 환경에서 Tomcat 8.5와 Apache24 연동해보자 + JAVA/PHP

HMHA 2023. 2. 6. 10:36
300x250
반응형
 

0. Apache24 설치, 톰캣 설치
Apache24 설치는 http://dragon20002.blog.me/220956570456 보고 하시면 됩니당! 하시는 김에 php 연동까지 해보세요!!
톰캣 설치는 http://tomcat.apache.org/download-80.cgi에서
Core: 아래에 있는 32-bit/64-bit Windows Service Installer을 다운받아 설치하시면 됩니다. 설치 시 jre 경로는 (Java JDK 경로)\jre 경로를 쓰시면 됩니다 ex) C:\Program Files\Java\jdk1.8.0_112\jre
(이부분에 대한 더 이상의 자세한 설명은 생략한다!!)

1. Apache24와 톰캣8.5의 서버 경로(ROOT)를 변경하기
localhost/test.php, localhost/test.jsp 둘 다 실행할 수 있게 된다

2. Apache24에서 jsp 파일은 톰캣8.5에서 처리하도록 한다
php가 연동된 Apache24의 포트(80)에서 test.php 뿐만 아니라 test.jsp도 열 수 있다

1. 경로 설정하기

1.1 Apache24 경로 설정하는 방법

(아파치24 경로)\conf\httpd.conf 파일을 메모장으로 실행합니다
ex) E:\Program Files\Apache24\conf\httpd.conf
DocumentRoot를 찾아서 원하는 경로로 설정해줍니다

"e:/Server Projects"로 설정하면 localhost/test.php를 브라우저 주소창에 입력 시 Server Projects 폴더 안에 있는 test.php 파일이 실행됩니다

이렇게 변경 후 '제어판-관리도구-서비스'에서 Apache2.4를 다시시작하면 적용됩니다

1.2 톰캣8.5 경로 설정하는 방법

(톰캣8.5 경로)\conf\server.xml 파일을 메모장으로 실행합니다
ex) E:\Program Files\Apache Software Foundation\Tomcat 8.5\conf\server.xml
맨 아래로 스크롤하면 Host 태그가 있습니다

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

<Host> 와 </Host> 사이에 다음과 <Context> 태그를 추가해줍니다

<Context path="" docBase="e:/Server Projects" />

Host 태그 안에 Context 태그를 추가하고 docBase 속성에 Apache24에서 Document Root로 설정했던 경로를 써줍니다

docBase를 "e:/Server Projects"로 설정하면 localhost:8080/test.jsp를 브라우저 주소창에 입력 시 e:/Server Projects 폴더 안에 있는 test.jsp 파일이 실행됩니다

이렇게 변경 후 '제어판-관리도구-서비스'에서 Apache Tomcat 8.5를 다시시작하면 적용됩니다

2. Apache24, 톰캣 8.5 연동

2.1 mod_jk 모듈 다운받기

mod_jk는 Apache24에 추가할 수 있는 모듈 중 하나로써,
Apache24에서 다른 웹컨테이너로 처리할 파일을 넘겨줄 수 있게 합니다
https://www.apachelounge.com/download/
링크로 들어가서 스크롤을 살짝 내려보면 Apache 2.4 modules VC14라는 큰 제목이 있고 그 밑에 Apache 2.4에 추가할 수 있는 모듈이 잔뜩 있습니다
그중 mod_jk-1.2.42-win64-VC14.zip
(32bit는 mod_jk-1.2.42-win32-VC14.zip) 를 다운받습니다

압축파일을 열고 mod_jk.so 를 
(아파치경로)\modules 폴더 안에 복사합니다
ex) E:\Program Files\Apache24\modules\mod_jk.so

2.2 workers.properties 만들기

(아파치경로)\conf 폴더 안에 텍스트 파일을 만들고 파일 이름과 확장자를 workers.properties로 설정합니다
ex) E:\Program Files\Apache24\conf\workers.properties

workers.properties를 열어서 다음과 같이 작성합니다

worker.list=worker1 

worker.worker1.type=ajp13 

worker.worker1.host=localhost 

worker.worker1.port=8009

2.3 번까지 진행하시면, Apache24는 jsp 파일을 클라이언트로부터 요청받으면 다른 웹컨테이너에게 처리를 떠넘깁니다
이 때 다른 웹컨테이너의 포트번호 등을 작성한 것이 workers.properties 파일입니다
"일을 대신 맡아줄 객체로 worker1를 추가해라. worker1의 type은 ajp13, host는 localhost, 포트번호는 8009이다"

type=ajp13, port=8009를 가진 웹컨테이너는 톰캣이므로 worker1에 작업을 맡기면 톰캣이 그 작업을 처리하게 됩니다

ajp13, port=8009 에 대한 정보는
(톰캣 경로)\conf\server.xml에서 확인할 수 있습니다

2.3 httpd.conf 수정하기

다시
(아파치경로)\conf\httpd.conf 파일을 메모장으로 실행합니다
맨 아래로 스크롤해서 다음을 추가해줍니다

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /*.jsp worker1

LoadModule로 앞에서 복사해뒀던 mod_jk.so 모듈을 불러옵니다
JkWorkersFile로 작업을 맡길 녀석들의 정보가 담긴 workers.properties 파일을 불러옵니다
JkMount /*.jsp worker1 부분이 젤 중요한데,

/*.jsp: Apache24에서 다른 웹컨테이너에게 맡길 파일 종류를 작성합니다
ex1) JkMount /* worker1
-> worker1으로 지정된 웹컨테이너에게 모든 파일의 처리를 맡깁니다
ex2) JkMount /*.jsp worker1
-> worker1으로 지정된 웹컨테이너에게 jsp 파일의 처리를 맡깁니다

worker1: workers.properties에서 정의한 객체 중 하나로 파일 처리를 맡길 웹컨테이너를 의미합니다
만약 worker1으로 쓰면 worker1에게, worker2로 쓰면 worker2에게 지정한 파일 종류의 처리를 맡깁니다
※ worker1, worker2 등은 작성자가 임의로 지은 변수이름입니다....

3. 잘 된건가??

"제어판-관리도구-서비스"에서 Apache2.4, Apache Tomcat 8.5 서비스를 시작한다
위 첨부파일들을 "1. 경로 설정하기"에서 설정했던 ROOT 경로에 넣고
ex) e:/Server Projects/test.php, e:/Server Projects/test.jsp

localhost/test.php
localhost/test.jsp

를 브라우저 주소창에 쳐본다
숫자 1이 출력되면 성공한 것!
* Apache24 서버가 사용하는 포트를 이용하시면 됩니다
만약 Apache24에 8008 포트를 사용하시면....
localhost:8008/test.php, localhost:8008/test.jsp

 

4. 잘 안되는 사람들 유형

1. jsp 소스코드가 그대로 출력된다....
연동이 제대로 되지 않은 경우로 Apache24에서 jsp를 톰캣에게 처리를 맡기지 않고 직접 실행한 경우이다
"2.3 httpd.conf 수정"부분을 다시 한번 해본다 

2. php 파일실행 시 php 파일이 실행되지 않고 다운로드된다....
Apache24가 php 파일마저 톰캣에게 처리를 맡기는 경우이다
"2.3 httpd.conf수정"에서
JkMount /*.jsp worker1
를 제대로 썼는지 확인해본다

3. 추가로 다음화면은 경로 설정을 잘못해서, 해당 경로에 없는 파일에 접근하려 할 때 나온다

상단 화면이 나타나면 톰캣8.5의 ROOT 경로가 잘못된 경우이고
하단 화면이 나타나면 Apache24의 ROOT 경로가 잘못된 경우이다
"1. 경로 설정하기"에서 경로를 잘 설정했는지 확인해보자

 

출처 : https://m.blog.naver.com/PostView.naver?blogId=dragon20002&logNo=221010277697&navType=by

300x250
반응형