아파치와 톰켓은 rpm으로 설치할것이고 커넥터만 소스로 컴파일 할것입니다
OS는 Centos5.2로 작업 했습니다
펌방지가 걸려있어서 드로그&드롭이 않되어서 짜증낼분을 위해서 올라와 있고 그대로 했다가 하루동안 삽질이란 삽질은 다해본듯합니다 다른분들은 블로그로 세팅법올리실 때 해보시고 올리시길 바랍니다 연동시 사용되는 connector 에는 mod_jserv, JK, JK2, mod_webapp or mod_proxy 등이 있습니다. 자세한 내막은 알지는 못하지만 jserv 와 mod_webapp 는 오래전부터 외면받아온 것 같고 JK2 는 개발자들의 흥미 부족을 이유로 개발이 중단되었습니다. 따라서 JK 와 mod_proxy 가 남는 데 mod_jk.so(connector)를 이용하여 설치를 하겠습니다 작업환경(2009년 6월 17일) OS Centos 5.2 Apache2.2 httpd-2.2.3-22.el5.centos.1 Tomcat5.5 tomcat5-5.5.23-0jpp.7.el5_2.1 Java jdk 1.6.0-b09 Connector 1.2.28 1.Apache 설치 Yum를 이용해서 설치합니다 Root로 작업합니다 #yum list | grep httpd [root@ip149080 ~]#yum list | grep httpd httpd.i386 2.2.3-22.el5.centos.1 installed httpd-devel.i386 2.2.3-22.el5.centos.1 installed httpd-manual.i386 2.2.3-22.el5.centos.1 updates lighttpd.i386 1.4.22-2.el5.rf rpmforge lighttpd-fastcgi.i386 1.4.22-2.el5.rf rpmforge lighttpd-mod_mysql_vhost.i386 1.4.22-2.el5.rf rpmforge system-config-httpd.noarch 5:1.3.3.3-1.el5 base thttpd.i386 2.25b-4.el5.rf rpmforge 이렇게 나오는데 httpd.본인아키텍처로 설치하면됩니다 저는 32bit로 리눅스가 설치되엇기에 [root@ip149080 ~]#yum –y install httpd.i386 해서 설치 합니다 Httpd.conf는 따로 인터넷에서 최적화된 세팅법이나 본인에 맞게 맞추시고 본문건은 Apache + tomcat연동에 필요한 사항만 기술 합니다 [root@ip149080 ~]# vi /etc/httpd/conf/httpd.conf 를 한내용중 언어별 우선 순위라고 합니다. ko 를 맨 앞으로 옮겨줍니다. LanguagePriority ko en ca cs da de el eo es et fr he hr it ja ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW [위에처럼 ko를 처음으로 이동시켜줍니다] UTF-8 을 사용하기엔 아직 환경이 충분히 조성되지 않은 것 같습니다. 인코딩 방식을 EUC-KR로 변경해줍니다. AddDefaultCharset EUC-KR
[EUC-KR로 변경] 저장한후 방화벽에서 80번 포트 열어줍니다 아파치 데몬을 올립니다 [root@ip149080 ~]#service httpd start 않되시면 [root@ip149080 ~]#/sbin/service httpd start 하시기 바랍니다 2번째로 되시는분은 일반계정사용중에 su로 루트로 로그인후에 작업하신분들이며 그일반계정에 /sbin 이 패스로 설정않되어있어서 첫번째처럼 했을 때 에러가 뜨는것입니다 그런분들은 계정 디렉토리에서 .bash_profile(bash일경우입니다)를 열어서 PATH=/usr/sbin:$PATH; export PATH 추가해서 패스를 추가해주시기 바랍니다 브라우저에서 http://127.0.0.1/ 로 접속해봅니다 혹은 http://아이피주소 로 접속해서 화면이 뜨면 된겁니다 [root@ip149080 ~]#service httpd stop 으로 데몬 내려주시구요 2.JDK 설치 대부분 문서는 sun 사이트에서 bin파일 설치하고 패스 잡아주고 하는데 그런자체가 잇는자료다 퍼다가 쓴 흔적이죠 구지 그럴필요 없습니다 [root@ip149080 ~]#/yum list | grep java jakarta-commons-pool-javadoc.i386 1.3-5jpp.1 installed jakarta-commons-validator-javadoc.i386 1.1.4-5jpp.1 installed jakarta-oro-javadoc.i386 2.0.8-3jpp.1 installed jakarta-taglibs-standard-javadoc.i386 1.1.1-7jpp.1 installed java-1.4.2-gcj-compat.i386 1.4.2.0-40jpp.115 installed java-1.6.0-openjdk.i386 1:1.6.0.0-0.30.b09.el5 installed 중략….많이 나옵니다 그중보면 깔끕스럽게 java-1.6.0-openjdk.i386 있네요 [root@ip149080 ~]#/yum –y install java-1.6.0-openjdk.i386 의존성에 의해 필요한 몇 개의 패키지를 다설치 합니다 *붙여서 java에 해당하는거 다설치하실필요없습니다 설치다되시면 [root@ip149080 ~]# java -version java version "1.6.0" OpenJDK Runtime Environment (build 1.6.0-b09) OpenJDK Client VM (build 1.6.0-b09, mixed mode) 뜨는걸 보실수있습니다 구지 패스 그런거 없어도 됩니다 3.TOMCAT 설치 [root@ip149080 ~]#yum list | grep tomcat 해보시면 tomcat5.i386 5.5.23-0jpp.7.el5_2.1 installed tomcat5-common-lib.i386 5.5.23-0jpp.7.el5_2.1 installed tomcat5-jasper.i386 5.5.23-0jpp.7.el5_2.1 installed tomcat5-jsp-2.0-api.i386 5.5.23-0jpp.7.el5_2.1 installed tomcat5-server-lib.i386 5.5.23-0jpp.7.el5_2.1 installed tomcat5-servlet-2.4-api.i386 5.5.23-0jpp.7.el5_2.1 installed 여러 개나 나옵니다 역시 [root@ip149080 ~]#yum –y install tomcat5.i386 를 설치해주시면 필요한 몇 개더 패키지 설치 합니다 8080포트 방화벽에서 열어주시구요 [root@ip149080 ~]#vi /usr/share/tomcat5/bin/relink 로 열어서 문서중간에 파란색으로 되어있는것처럼 않되어있으면 밑에 처럼 해주세요 for webapp in $(find $CATALINA_HOME/webapps -mindepth 1 -maxdepth 2 -type d) ; do [ -d "$webapp/WEB-INF/lib" ] && rebuild-jar-repository $webapp/WEB-INF/lib Done 다음파일을 열어서 밑에와 같이 수정해주세요 #vi /usr/share/tomcat5/conf/workers.properties #workers.tomcat_home=/var/tomcat workers.tomcat_home=/usr/share/tomcat5 #workers.java_home=/opt/IBMJava2-13 workers.java_home=/usr/lib/jvm/java 저장하고 다음에 web.xml를 수정해줍니다 # vi /usr/local/tomcat/conf/web.xml 이부분도 <servlet-mapping> 이번에는 server.xml 를열어 수정해줍니다 <!-- Define an AJP 1.3 Connector on port 8009 --> <!--<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />--> <<= 주석처리후 <Connector port="8009" maxHttpHeaderSize="8192" tomcatAuthentication="false" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" protocol="AJP/1.3" /> [위내용 새로써줍니다] 기존 AJP 프로토콜을 정의한 부분을 주석을 달고 몇몇 Attribute를 추가한내용입니다 [root@ip149080 ~]#service tomcat5 start 로 올려주시구요 http://localhost:8080 이나 http://아이피주소:8080 를 쳐서 고양이가 나오는지 확인해 줍니다 않나오면 먼가 문제가있는것입니다 4.Connector설치 일단 소스를 받습니다 http://tomcat.apache.org/connectors-doc/ # cd tomcat-connectors-1.2.26-src/native [중요] configure하기전에 해야 할게 있습니다 rpm으로 설치하게되면 apxs가 설치가 되어잇지않기 때문에httpd-devel를 설치를 해야합니다 이부분에 대해서 기술이 되어있지않고 밑에처럼 하라고만 하니 정확한 패키지명은 항상 yum list | grep 으로 검색하고 yum설치 하세요
# ./configure --with-apxs2=/usr/local/apache/bin/apxs # make configure할 때 에러가 난다면 apxs2를 apxs 로 해보시기 바랍니다 mod_jk.so 가 생성되었음을 확인 할 수 있습니다 아팟치 모듈폴더에 카피합니다 /etc/httpd/modules/mod_jk.so /etc/httpd/conf/workers.properties # workers.tomcat_home=/usr/share/tomcat5 workers.java_home=/usr/lib/jvm/java ps=/ worker.list=ajp12, ajp13 # Definition for Ajp13 worker # worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 # Definition for Ajp12 worker # worker.ajp12.port=8007 worker.ajp12.host=localhost worker.ajp12.type=ajp13 위에서 ajp12, ajp13 은 식별자이다. 다른 식별자(가령 my1, my2 등등)를 사용해서 몇개 더 추가시켜도 된다. 가상호스트에 대한 셋팅을 다르게 가져갈 때 편하게 사용될 것 같다. 대신에 포트는 모두 다르게 가져가야 한다. 다른 셋팅도 있는데 일단 두자. 다음은 Apatche 설정파일 셋팅 파일을 열어서 밑에 내용을 기술해주자 LoadModule jk_module module/mod_jk.so JkWorkersFile /etc/httpd/conf/workers.properties JkMount /*.jsp ajp13 JkMount /alice-upload ajp13 JkMount /servlet/* ajp13 httpd.conf 다른쪽을보면 밑에와 같은 구문을 볼수있다 DirectoryIndex index.html index.html.var 이부분을 밑에처럼 index.jsp 를 추가하자 DirectoryIndex index.jsp index.html index.html.var 설정이 끝났고 톰겟올려주시고 아파치 올려주시고 테스트 해보시기 바랍니다 [추가]로 이유는 모르겠으나 tomcat이 startup를 해도 않될때에는 vi /usr/share/tomcat5/log/catalina.out
로 열어서 Caused by: java.lang.RuntimeException: Unable to create path to config file :/usr/local/apache/modules/mod_jk.so 이런에러나 Caused by: java.lang.RuntimeException: Unable to create path to config file :/usr/local/apache/conf/workers.properties 이런 에러가 발생시에는 이유는 모르겠지만 저 에러메세지에서 표시하는 디렉토리 경로대로 디렉토리 생성해주면 문제가 해결됩니다
내용을 그대로 워드로 저장시켜놨습니다 드로그해서 copy&paste하실분은
문서 받아서 하세요
세팅하면서 문제있는 세팅법들이 블로그나 웹사이트에 그대로
밑에 기술된부분이 주석처리 되어있는데 풀어주셔야합니다
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
# tar zxvf tomcat-connectors-current-src.tar.gz
에러가 날수 밖에 없죠 이것 때문에 고생많이했죠
#yum –y install httpd-devel.i386
이렇게 하면 tomcat-connectors-1.2.26-src/native/apache-2.0 에
# cp /usr/local/src/tomcat-connectors-1.2.26-src/native/apache-2.0/mod_jk.so
그리고 Apache와 Tomcat을 연동할 파일 workers.properties도 카피하자.
# cp /usr/local/src/tomcat-connectors-1.2.26-src/conf/workers.properties
이제 셋팅을 해 준다.
# vi /usr/local/apache/conf/workers.properties
# vi /usr/local/apache/conf/httpd.conf
JkLogFile /etc/httpd/logs/mod_jk.log
JkMount /*.do ajp13
JkMount /article/* ajp13
JkMount /uploadManager ajp13
JkMount /downManager ajp13
yum을 통해서 우선 톰캣 관련 패키지를 설치해준다.
설치가 완료된후 service tomcat5 start명령을 통해 데몬을 실행할 수 있다. 톰캣 자체로도 웹서버 역활을 수행할 수있다.
톰캣 서버를 시작한후 웹에서 http://ip:8080/ 로 접속하면 고양이 그림을 볼수 있고 톰캣 서버가 정상적으로 작동하는 것이다.
하지만 톰캣 서버만 사용할 경우 jsp,서블릿을 제외한 다른 서버사이드 언어(php,perl,..)를 사용할 수 없고 아파치에 비해 확장성이 떨어 지기 때문에 아파치와 같이 사용하게 된다.
아파치도 물론 설치되어 있는 상태에서 /etc/httpd/conf.d/proxy_ajp.conf 파일의 다음과 같은 내용을 추가 한다.
위 설정은 /tomcat/ 디렉토리를 요청하게 되면 톰캣 서버로 넘겨주는 역활을 하게 된다.
아파치 웹서버에서 URL/tomcat/~~~.jsp를 이용하게 되면 톰캣 서버의 수행결과를 클라이언트가 받을 수 있게 된다.
톰캣이 처리해야될 파일들은 /usr/share/tomcat5/webapps/ROOT에 위치하면 되고 아파치가 처리해야 될 파일들은 /var/www/html에 두면 된다.
서블릿도 WEB-INF/web.xml 파일을 수정 후 톰캣 단독 사용때와 똑같 이 사용하고 위URL만 /tomcat/을 이용하면 된다.
톰캣과 아파치를 같이 이용한다면 위 방법이 가장 간단한 방법이 될것 같다. 하지만 jsp, 서블릿 파일과 아파치의 웹 서버 파일이 서로 전혀 다른 폴더에 분리 되어서 관리가 힘들것 같다.
따라서 위와 같은 방법말고 아래와 같이 해줘도 된다. 아파치로 .jsp파일을 요청할때 만 톰캣으로 넘기는 방식이다.
RewriteCond %{REQUEST_FILENAME} .jsp
RewriteRule (.*) ajp://localhost:8009$1 [P]
기존의 ~~/ROOT/ 디렉토리를 삭제하고 아파치의 /var/www/html/ 디렉토리를 심볼릭 링크로 걸어 쓰면 php처럼 jsp파일을 사용할 수 있다.
하지만 이런식으로 할 경우 서블릿이 잘 돌아갈지는 모르겠다.