yum(rpm) 으로 apache tomcat jdk 설치및연동 2009 년 6 월 17 일 http://www.commit.co.kr 정현호
APACHE2.2.3 + TOMCAT 5.5 RPM 설치후연동 09 년 10 월 1 일수정잘못된내용수정및오탈자수정 아파치와톰켓은 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 Tomcat5.5 Java httpd-2.2.3-22.el5.centos.1 tomcat5-5.5.23-0jpp.7.el5_2.1 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 jakarta-commons-collections-tomcat5.i386 3.2-2jpp.3 base struts-webapps-tomcat5.i386 1.2.9-4jpp.5 base 여러개나나옵니다역시 [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 Done [ -d "$webapp/web-inf/lib" ] && rebuild-jar-repository $webapp/web-inf/lib ** 09 년 10 월 1 일수정사항 : 전에는이내용대로사용하였으나다중톰켓하면서 8080 포트를주석처리시 yum 으로설치한톰켓이올라오지않아서확인되지않았지만걍찜찜해서수정하면서다시설치시에는기본값으로해봤습니다원하시는데로골라서설정하세요 ~ 다음파일을열어서밑에와같이수정해주세요 [root@ip149080 ~]# 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/share/tomcat5/conf/web.xml 밑에기술된부분이주석처리되어있는데풀어주셔야합니다 <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-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> server.xml <!-- Define an AJP 1.3 Connector on port 8009 --> <!--<Connector port="8009" enablelookups="false" redirectport="8443" protocol="ajp/1.3" />--> <<= 주석처리후 기존 AJP 프로토콜을정의한부분을주석을달고몇몇 Attribute 를추가한후저장한다. <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" /> [ 위내용새로써줍니다 ] ** 09 년 10 월 1 일수정사항 : 전에는이내용대로사용하였으나다중톰켓하면서 8080 포트를주석처리시 yum 으로설치한톰켓이올라오지않아서확인되지않았지만걍찜찜해서수정하면서다시설치시에는기본값으로해봤습니다원하시는데로골라서설정하세요 ~ [root@ip149080 ~]#service tomcat5 start 로올려주시구요 http://localhost:8080 이나 http:// 아이피주소 :8080
를쳐서고양이가나오는지확인해줍니다않나오면먼가문제가있는것입니다 4.Connector 설치 4.Connector설치 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/ 바이너리형태로배포되는 mod_jk.so를사용하도록하겠습니다 os에맞게다운받습니다전 32bit에리눅스이니 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/i586/ 위치에있는 mod_jk-1.2.28-httpd-2.2.x.so 를다운받아사용하겠습니다 다운받은뒤복사를합니다 # cp mod_jk-1.2.28-httpd-2.2.x.so /etc/httpd/modules/mod_jk.so 권한을변경합니다 chmod 755 /etc/httpd/modules/mod_jk.so tomcat 설치후 workers.properties 가연동은가능할정도세팅되어있기에 그대로복사해서사용하면되겠습니다 workers.properties 에서 ajp12, ajp13 은식별자입니다. 다른식별자 ( 가령 my1, my2 등등 ) 를사용해서몇개더추가시켜도됩니다. 가상호스트에대한셋팅을다르게가져갈때편하게사용될것같습니다대신에포트는모두다르게가져가야합니다 관련글다중톰켓 ( 유저별톰켓구성 ) 포스트. 다음은 Apatche 설정파일셋팅 # vi /etc/httpd/conf/httpd.conf 파일을열어서밑에내용을기술해줍니다 LoadModule jk_module module/mod_jk.so 밑의내용을따로파일로빼놓고 include 시켜도되며 httpd.conf 에기술하여도됩니다
전 httpd.conf 에다가설정하고사용하겠습니다 JkWorkersFile /etc/httpd/conf/workers.properties JkLogFile /etc/httpd/logs/mod_jk.log JkShmFile /usr/tomcat/logs/jk.shm JkMount /*.jsp ajp13 JkMount /*.do ajp13 JkMount /article/* ajp13 JkMount /uploadmanager ajp13 JkMount /downmanager 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 Tomcat5 의홈디렉토리를 /var/www 로변경해줍니다. # cd /usr/share/tomcat5/webapps/ # mv ROOT ROOT.old # ln -s /var/www/html /usr/share/tomcat5/webapps/root # cp -r /usr/share/tomcat5/webapps/root.old/web-inf/ /usr/share/tomcat5/webapps/root/web-inf 설정이끝났고톰겟올려주시고아파치올려주시고테스트해보시기바랍니다 webapps 에 ROOT 가없다면바로심볼릭링크작업부터해주면됩니다 복사작업은넘어가시구요 만약고양이페이지가없으신분들은아에아무것도않나올것입니다 jsp 테스트페이지로테스트해보시거나고양이페이지다운받아서 /var/www/html/ 에넣고테스트해보시기바랍니다 tomcat-default-page.zip 고양이페이지
설정이끝났고톰겟올려주시고아파치올려주시고테스트해보시기바랍니다 [ 추가 ] 로이유는모르겠으나 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 이런에러가발생시에는이유는모르겠지만저에러메세지에서표시하는디렉토리경로대로디렉토리생성해주면문제가해결됩니다