본문 바로가기
Server/CentOS 6

3. 아파치와 톰캣 연동

by kkumtree 2018. 12. 20.









드디어 마지막!! 아파치 웹서버와 톰캣을 연동 시키면 됩니다.


웹서버와 톰캣을 연결 시키는 방법은 3가지가 있습니다.




1. 예전부터 많이 쓰던 방법인 tomcat-connector ( mod_jk )를 사용하는 방법


2. mod_proxy를 사용하여 reverse proxy기능을 사용하는 방법


3. mod_proxy_ajp를 사용하여 AJP protocol을 reverse proxy로 사용하는 방법



저는 dog초보니 가장 많이 쓰는 방법인 1번을 사용하도록 하겠습니다.





1. compile을 위해 gcc와 httpd-devel 패키지를 설치



# yum install gcc gcc-c++ httpd-devel














2. 아파치 홈페이지에서 tomcat-connector를 다운받는다


https://tomcat.apache.org/download-connectors.cgi


역시 tar.gz파일을 다운받아야죠














3. 받은 파일의 압축을 풀어줍니다


# tar zxvf tomcat-connector-1.2.46.tar.gz













4. 생성된 디렉토리 아래에 native 디렉토리로 이동합니다.


# cd tomcat-connector-1.2.46/native





5. Makefile을 생성하기 위해 아래 명령어를 실행합니다.


# ./configure --with-apxs=/usr/bin/apxs 혹은  /usr/sbin/apxs


↑ error 발생 - bin 디렉토리가 없다. sbin 디렉터리로 가자

진행 되는 분은 make로 넘어가시면 됩니다.




# make                                                        (컴파일)


# make install                                                (컴파일 완료 후 install)







make install 후 /etc/httpd/modules/ 경로의 파일에 mod_jk.so 파일이 생성됨을 확인할 수 있습니다.



# cd /etc/httpd/modules


# ls -al | grep mod_jk                                        ( mod_jk라는 이름을 가진 파일의 정보를 확인합니다.)












6. 이제 설정을 시작합니다.


# vim /etc/httpd/conf/httpd.conf


/를 누르고 LoadModule을 찾습니다. 다음 검색 결과는 n을 누르면 볼 수 있습니다.




활성화 되어 있는 LoadModule들 중 제일 위에 다음 문장을 추가해 줍니다.



LoadModule jk_module modules/mod_jk.so













7. 이제 worker파일을 생성합니다. ( 워커파일이 뭔지 알아보고 설명하도록 하겠습니다. )


# vim /etc/httpd/conf/workers.properties



그리고 아래의 내용을 작성해 줍니다.


worker.list = tomcat

worker.tomcat.port=8009

worker.tomcat.host=localhost

worker.tomcat.type=ajp13

worker.tomcat.lbfactor=1





:wq로 저장!



포트를  8009로 설정한 이유는 tomcat의 server.xml설정을 보면 알 수 있습니다.




# vi /usr/local/server/tomcat/conf/server.xml













8. 또 하나의 파일을 생성합니다.


# vim /etc/httpd/conf/uriworkersmap.properties



/*.do=tomcat                        ( .do 확장자는 톰캣으로 )

/*.jsp=tomcat                        ( .jsp 확장자도 톰캣으로 )



더 추가하고 싶은 확장자가 있으면 위의 형식으로 지정해주면 됩니다.















9. 이제 7번과 8번에서 만든 파일들을 설정해주는 파일을 만듭니다.


# vim /etc/httpd/conf.d/mod_jk.conf



<IfModule mod_jk.c>

JkWorkersFile conf/workers.properties

JkMountFile conf/uriworkermap.properties

JkShmFile run/mod_jk.shm

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

</IfModule>















10. 마지막으로 DocumentRoot를 변경하고, DirectoryIndex에 내용을 추가해줍니다.


# vim /etc/httpd/conf/httpd.conf



① '/'키를 누르고 DocumentRoot 검색 후 

DocumentRoot "/var/www/html"는 #으로 주석처리, Tomcat의 경로에 있는 ROOT를 이용한다.


#DocumentRoot "/var/www/html" 

DocumentRoot "/usr/local/server/tomcat/webapps/ROOT"


↑ 주석처리! (#으로 주석)


↑ 추가해준다.





② 마찬가지로  /DirectoryIndex 검색


DirectoryIndex index.html index.html.var 에

index.jsp를 추가해준다


DirectoryIndex index.jsp index.html index.html.var












위의 과정들을 거치고나면 다음처럼 5개의 명령어들이 실행되었던 것을 볼 수 있다.



총 3개의 새로운 파일이 만들어지고, httpd.conf파일의 세 곳을 편집한다.








11. 이제 localhost:8080이 아닌 localhost로 접속을 해본다

제대로 뜬다면 성공!







-------------------------------------


type #1 : could not reliably determine the server's fully qualified domain name 


# vim /etc/httpd/conf/httpd.conf


#ServerName www.example.com:80            - 주석처리 하고

ServerName localhost                              - 새로 정의







type #2 : 이미지와 css가 적용되지 않을 때


# vim /etc/httpd/conf/uriworkersmap.properties


/*.png

/*.jpg

/*.css


추가해주기










참고 및 출처 : https://suwoni-codelab.com/linux/2017/05/29/Linux-CentOS-Apache-Tomcat/

https://www.lesstif.com/pages/viewpage.action?pageId=12943367

 다수의 톰캣이 있을 때 ↗

http://hellogk.tistory.com/123

http://gafani.tistory.com/entry/CentOS-Apache%EC%99%80-Tomcat-%EC%97%B0%EB%8F%99