=================================================== Apache2.x + PHP + Mysql + Tomcat 연동 =================================================== 1. 설치환경 OS : LINUX(RedHat8.0) Apache : 2.0.44 PHP : 4.3.0 Tomcat : 4.1.18 2. 필요한 파일 http-2.0.44.tar.gz --> http://www.apache.org/dist/httpd/http-2.0.44.tar.gz php-4.3.0.tar.gz(Zend 사용을 위해 4.3.1버젼은 아직 지원 안됩니다.) --> http://www.php.net/get/php-4.3.0.tar.gz/from/a/mirror ZendOptimizer-2.1.0-Linux_glibc21-i386.tar.gz --> http://www.zend.com/store/free_download.php?pid=13 mysql-3.23.55-pc-linux-i686.tar.gz --> http://www.mysql.com/downloads/mysql-3.23.html j2sdk-1_4_1_01-linux-i586.bin --> http://java.sun.com/j2se/1.4.1/download.html tomcat-4.1.18.tar.gz --> http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/bin/tomcat-4.1.18.tar.gz tomcat-connectors-4.1.18-src.tar.gz --> http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/src/tomcat-connectors-4.1.18-src.tar.gz 3. 설치순서 a. mysql설치 b. apache 설치 c. php 설치 d. tomcat 설치 4. 참고문서 by 구경탁님 -> http://www.javaservice.net/~java/bbs/data/engine/1036132568+/RedHat8_0_Apache2_0_40%2BTomcat4_1_12.html 톰캣 연동부분은 거의 이 문서에 의존했습니다. --------------------------------------------------- A. mysql 설치 --------------------------------------------------- /usr/local/에 소스를 푼다. (모든 설치는 root 권한으로...) shell> tar xvfz mysql-3.23.55-pc-linux-i686.tar.gz 그러면 /usr/local/mysql-3.23.55-pc-linux-i686 이라는 디렉이 생깁니다. ./configure 할 필요 없습니다.^^* # 참고 # ./configure 해줬더니 이런 메세세지가 나옵니다. # ./configure 할 필요 없답니다. shell> /usr/sbin/groupadd mysql (그룹추가) shell> /usr/sbin/useradd -g mysql mysql (사용자추가) shell> ln -s /usr/local/mysql-3.23.55-pc-linux-i686 /usr/local/mysql (이케 심볼릭 링크를 해주고) shell> cd mysql shell> chown -R root /usr/local/mysql/. (소유자를 바꾼다.) shell> chown -R mysql /usr/local/mysql/data (소유자를 바꾼다.) shell> chgrp -R mysql /usr/local/mysql/. (그룹도 바꾸주고) 여기까지 하면 설치 끝... shell> bin/safe_mysqld --user=mysql & mysql 데몬이 구동된다. # 참고 # 시작 서비스에 등록할 경우 # shell> cp mysql.server /etc/rc.d/init.d/mysqld # shell> ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld # shell> ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld # 이케하고 # shell> /usr/sbin/ntsysv 해서 mysqld 항복에 체크해주면 됩니다. ( [*]mysqld 이렇게 ) ---------------------------------------------------- B. apache 설치 ---------------------------------------------------- /usr/local/src에 소스를 푼다. shell> tar xvfz http-2.0.44.tar.gz shell> cd httpd-2.0.44 shell> ./configure --prefix=/usr/local/apache (설치 디렉토리) --enable-rule=SHARED_CORE (tomcat 연동시 필요) --enable-modules=so (tomcat 연동시 필요) --enable-so (php 연동시 필요) (옵션은 주욱 붙여서 쓰세여. 괄호안 설명이 잘 맞는 지는 잘 몰라여 ^^*) shell> make shell> make install /usr/local/apache 라는 디렉이 생겼을 것입니다. src 디렉에 있는 소스파일 들은 삭제합니다. ---------------------------------------------------- C. php 설치 ---------------------------------------------------- /usr/local/src에 소스를 푼다. shell> tar xvfz php-4.3.0.tar.gz shell> cd php-4.3.0 shell> ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs (중요) --with-mysql=/usr/local/mysql --with-gd --with-zlib --enable-track-vars=yes (중요: GET, POST, cookie 변수들이 어디서 왔는지 기억한다고 하네요.) --with-mod-charset --with-language=korean --with-charset=euc_kr --disable-debug --with-xml shell> make shell> make install /usr/local/php 라는 디렉이 생겼을 것입니다. /usr/local/src/php-4.3.0 에 보면, php.ini-dist 라는 파일을 다음 처럼 복사 합니다. shell> cp /usr/local/src/php-4.3.0/php.ini-dist /usr/local/lib/php.ini 다음은 httpd.conf 파일을 수정해 줍니다.(아파치 설치 후 ServerName 설정해 주시는 것 잊으면 안됩니다.) ServerName 수정해주시고, 아마 수정 없이 아파치를 실행 하셨다면 에러메세지가 보였을 것입니다. 수정하라고...ㅡ.ㅡ; -> DirectoryIndex index.html index.php index.phtml index.jsp 시작페이지 설정부분입니다. 수정해주세여(349 라인정도) 그리고, 아래와 같이 추가해줍니다. (840 라인 즈음에...) LoadModule php4_module modules/libphp4.so AddType appllication/x-httpd-php .php4 .php3 .html .htm .phtml .ph .php AddType appllication/x-httpd-php-source .phps 자~ 이제 Zend 설치를 할 차례입니다. 아주 간단합니다. /usr/local/src에 소스를 푼다. shell> tar xvfz ZendOptimizer-2.1.0-Linux_glibc21-i386.tar.gz shell> cd Zend* ,로 들어가서 shell> ./install.sh ,해주면 GUI를 가장한(?) 설정 창이 뜹니다. 계속 OK 눌러 주시면 설치가 완료됩니다. 마지막에 나오는 메세지는 "php.ini는 새로 심볼릭 링크 했다. 수정하고 싶으면 /usr/local/Zend/etc 에있는 php.ini를 해라."는 것입니다. 여기까지 설치하셨다면 Zend가 설치되면서 아파치가 (재)구동 되었을 겁니다. 아파치 root디렉(디폴트는 /usr/local/apache/htdocs)에 간단한 test파일을 만듭니다. shell> vi test.php <? phpinfo(); ?> 또는, shell> cat > test.php <? phpinfo(); ?> ^d 하시면 파일이 만들어 집니다. 브라우져로 위의 파일을 불러오면 (http://localhost/test.php) php환경 문서가 나타납니다. ------------------------------------------------------ D. Tomcat 설치 ------------------------------------------------------ 먼저 jdk를 설치 합니다. /usr/local에 소스를 푼다. shell> chmod 755 j2sdk-1_4_1_01-linux-i586.bin shell> ./j2sdk-1_4_1_01-linux-i586.bin , 마지막에 yes해주시면 자동으로 풀립니다. shell> ln -s /usr/local/j2sdk1.4.1_01 /usr/local/j2sdk(심볼릭 링크는 더이상 설명 안하겠음.) 다음은 tomcat /usr/local에 소스를 푼다. shell> tar xvfz tomcat-4.1.18.tar.gz shell> ln -s /usr/local/jakarta-tomcat-4.1.18 /usr/local/tomcat shell> vi /etc/profile, 파일을 열어서 환경 설정을 해줍니다. JAVA_HOME=/usr/local/j2sdk CATALINA_HOME=/usr/local/tomcat PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin export JAVA_HOME CATALINA_HOME shell> source /etc/profile ,적용 ############################################# # 다음은 구경탁 jinuxer@koug.net 님의 문서를 참고 했습니다. # # "#"가 두 번 있는 것은 주석 부분이니까 혼동 없으시길... # # 구경탁 님의 문서를 복사한 부부은 #처리 했습니다. # ############################################# # 내용중 다음을 찾아서 # <Server port="8005" shutdown="SHUTDOWN" debug="0"> # 밑줄에 다음을 입력한다. # <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" /> # 내용중 다음을 찾아서 # <Host name="localhost" debug="0" appbase="webapps"> # 밑줄에 다음을 입력한다. # <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" /> # catalina.sh start # Tomcat 을 재시작하면, # /usr/local/tomcat/conf 디렉토리 아래에 # auto 디렉토리와 jk 디렉토리가 생겼을 것이고, auto 아래에 mod_jk.conf가 생겼을것이다. # cd /usr/local/tomcat/conf/jk # vi workers.properties # 아래 내용은 없는 것이니 아래내용을 복사해서 생성을 하면 된다. # #Start setup file # # workers.tomcat_home=/usr/local/tomcat # workers.java_home=/usr/local/java # ps=/ # worker.list=ajp12, ajp13 # #Definition for Ajp13 worker # # worker.ajp13.port=8009 # worker.ajp13.host=localhost # worker.ajp13.type=ajp13 # # #End setup file /usr/local/tomcat/conf/auto/mod_jk.conf 를 수정해 줍니다. 이 부분이 아주 중요했습니다. tomcat을 얹는 순간 php를 인식 못하는 문제가 있었습니다. 아래는 저의 mod_jk.conf파일 내용입니다. <IfModule !mod_jk.c> LoadModule jk_module modules/mod_jk.so </IfModule> <VirtualHost localhost> ServerName localhost JkMount /*.jsp ajp13 JkMount /servlet/* ajp13 JkMount /admin ajp13 JkMount /admin/* ajp13 JkMount /webdav ajp13 JkMount /webdav/* ajp13 JkMount /examples ajp13 JkMount /examples/* ajp13 JkMount /tomcat-docs ajp13 JkMount /tomcat-docs/* ajp13 JkMount /manager ajp13 JkMount /manager/* ajp13 </VirtualHost> 다시 구경탁 님의 문서로 돌아가서,, # vi /etc/httpd/conf/httpd.conf # 제일 아래 부분에 아래와 같이 추가해준다. # default로 인스톨되어 있는 Apache말고 새로 compile하여 install을 한 Apache인 경우도 # 마찬가지이다. # # #Load mod_jk # # LoadModule jk_module modules/mod_jk.so # # #Configure mod_jk # # JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties # JkLogFile /usr/local/tomcat/logs/mod_jk.log # JkLogLevel emerg # 여기서부터, # #Root context # JkMount /*.jsp ajp13 # JkMount /servlet/* ajp13 여기까지는 추가 하지 마세여!! # Include /usr/local/tomcat/conf/auto/mod_jk.conf # koug 라는 컨텍스트를 추가해 보겠다. # /usr/local/apache/htdocs 디렉토리에 koug 디렉토리를 만든다. # 주, 원하는 아무 디렉토리에 원하는 이름으로 생성하면 된다. # cd /usr/local/apache/htdocs # mkdir koug # vi /usr/local/tomcat/conf/server.xml ... <!-- Define properties for each web application. This is only needed if you want to set non-default properties, or have web application document roots in places other than the virtual host's appBase directory. --> <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0"/> --> <!-- Tomcat koug Context --> <Context path="/koug" docBase="usr/local/apache/htdocs/koug" debug="0" reloadable="true"/> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="ejinuxer@koug.net xamples" debug="0" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/> ... # 제대로 연동이 되는지 Test를 해보자. # cp -r /usr/local/tomcat/webapps/examples/* /var/www/koug # Tomcat과 Apache를 재시동한다. # http://localhost/koug/jsp/ # http://localhost/koug/servlets/ # 어랏! 포트번호가 빠졌다. 눈치를 챘으리라. -.-+ # Apache와 Tomcat가 연동이 되었다는 증거가 여기서 나오는 것이다. # 물론, 아래처럼 # http://localhost:8080/koug/jsp/ # http://localhost:8080/koug/servlets/ # 접속을 해도 결과는 마찬가지다. 속이 시원하지 않은가? 으햐햐?w -0- # 그렇다면, ROOT 의 디렉토리는 어떻게 하면 될까? # 그렇다. 별문제없이 되리라고 생각이 될것이다. 별반차이가 없다는것이다. # vi /usr/local/tomcat/conf/server.xml ... <!-- Define properties for each web application. This is only needed if you want to set non-default properties, or have web application document roots in places other than the virtual host's appBase directory. --> <!-- Tomcat Root Context --> <Context path="" docBase="/usr/local/apache/htdocs" debug="0" reloadable="true" /> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="examples" debug="0" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/> ... # cp -r /usr/local/tomcat/webapps/examples/* /usr/local/apache/htdocs # Tomcat과 Apache를 재시동한다. # http://localhost/jsp/ # http://localhost/servlets/ # 원하는 결과가 나왔는가? 여기까지 구경탁 님의 문서 였습니다. ^^* 글구 박승원 님께서, # 우선 위의 tomcat을 실행하면 매번 mod_jk.conf파일이 생성이 됩니다. # 이때 # # <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" /> # <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" /> # # 이 부분이 server.xml에 아직 있을텐데..이를 코멘트 해주면 편법이지만 # 계속적으로 mod_jk.conf가 생성이 되는것을 막을수 있습니다. 이런 팁을 리플해 주셨더군여.(구경탁 님의 문서에) ------------------------------------------------------- ------------------------------------------------------- 여기까집니다. 많은 도움이 되셨으면 합니다. 문의 사항이나 잘못된 부분은 리플 달아주세여. email : buomsu_s@hotmail.com by 신범수