Linux WEB

apache + resin 연동하여 설치하기

2008.05.19 20:42

호스트웨이 조회 수:34075


1. source 파일 다운로드

설치에 필요한 파일을 /usr/local/src 디렉토리에서 다운로드 하고 압축 해제 한다.
apache -> http://apache.org/
mysql -> http://mysql.com/
php -> http://php.net/
ZendOptimizer -> http://zend.org/
jkd -> http://java.sun.com/
resin -> http://caucho.com/

[root@localhost root]# cd /usr/local/src/
[root@localhost src]# tar xvzfp resin-3.0.23.tar.gz
[root@localhost src]# httpd-2.2.3.tar.gz
[root@localhost src]# mysql-5.0.26.tar.gz
[root@localhost src]# php-5.1.6.tar.gz
[root@localhost src]# ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz


2. mysql 설치

[root@localhost src]# cd mysql-5.0.26/
[root@localhost mysql-5.0.26]# ./configure --prefix=/usr/local/mysql --with-charset=euckr --with-extra-charsets=all && make && make install
[root@localhost mysql-5.0.26]# cd /usr/local/mysql/bin/
[root@localhost bin]# ./mysql_install_db --user=mysql
[root@localhost bin]# /usr/local/mysql/bin/mysqld_safe &


3. apache 설치

- apache를 설치하기전에, source 디렉토리내의 server/mpm/prefork/prefork.c 파일에서 #define DEFAULT_SERVER_LIMIT 부분을 1024로 수정 한다.  디폴트값 256으로 컴파일 하게 되면, 아파치 데몬이 최대 256개 까지 밖에 뜰수 없게 된다, 이런 경우는 서버의 접속량이 많을경우 서버의 자원이 남아도 더 이상의 데몬을 띄우지 못해서 서버가 느려지게 된다.

[root@localhost bin]# cd /usr/local/src/
[root@localhost src]# cd httpd-2.2.3/
[root@localhost httpd-2.2.3]# ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-shared=max --enable-rewrite --enable-ssl && make && make install
[root@localhost httpd-2.2.3]# cd /usr/local/apache2/
[root@localhost apache2]# /usr/local/apache2/bin/apachectl start


4. jdk 설치

[root@localhost apache2]# cd /usr/local/src
[root@localhost src]# sh jdk-1_5_0_09-linux-i586.bin
[root@localhost src]# mv jdk1.5.0_09/ /usr/local/java
[root@localhost src]# vi /etc/profile

- /etc/export 파일에 아래와 같이 java, resin 환경 변수 추가
----------------------------------------------------------------------------------------
JAVA_HOME=/usr/local/java
RESIN_HOME=/usr/local/resin
CLASSPATH="$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar"
export JAVA_HOME CLASSPATH RESIN_HOME
----------------------------------------------------------------------------------------

- 수정된 /etc/profile 적용
[root@localhost src]# source /etc/profile


5. resin 설치

[root@localhost src]# cd resin-3.0.23
[root@localhost resin-3.0.23]# ./configure --prefix=/usr/local/resin --with-apxs=/usr/local/apache2/bin/apxs && make && make install
[root@localhost resin-3.0.23]# cd /usr/local/src/

- apache와 연동해서 설치하기 위해서 --with-apxs 옵션을 추가해서 설치한다. resin 설치가 완료되면, /usr/local/apache2/conf/httpd.conf 파일 하단에 아래의내용이 추가된다.
----------------------------------------------------------------------------------------
LoadModule caucho_module /usr/local/apache2/modules/mod_caucho.so

ResinConfigServer localhost 6802
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
----------------------------------------------------------------------------------------


6. php 설치

[root@localhost src]# cd php-5.1.6/
[root@localhost php-5.1.6]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --enable-track-vars=yes --enable-url-fopen-wrapper=yes --with-ttf --with-png-dir=/usr --with-zlib-dir --with-jpeg-dir=/usr --with-gdbm=/usr --enable-ftp --with-tiff-dir=/usr --enable-memory-limit --enable-mbstring --with-expat-dir=/usr --enable-sockets --enable-wddx --with-freetype-dir=/usr --enable-bcmath --enable-mbstr-enc-trans --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --enable-gd-imgstrttf --enable-calendar --with-openssl=/usr && make && make install
[root@localhost php-5.1.6]# cp php.ini-dist /usr/local/php/lib/php.ini

- php 설치가 완료되면 /usr/local/apache2/conf/httpd.conf 파일에 아래와 같이 php 모듈을 load 하는 부분이 추가되게 된다.
-------------------------------------------------------------------------------------------
LoadModule php5_module        modules/libphp5.so
-------------------------------------------------------------------------------------------

- .html .htm 등의 확장자에서도 php 코드가 인식가능 하도록 httpd.conf 파일에 아래와 같이 AddType 부분을 추가하고, DirectoryIndex 부분에도 Index 파일 우선순위별로 확장자를 추가한다.
-------------------------------------------------------------------------------------------
AddType application/x-httpd-php .php .php3 .ph .inc .html .htm .tpl
AddType application/x-httpd-php-source .phps

  ~

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>
-------------------------------------------------------------------------------------------


7. Zend 설치

[root@localhost php-5.1.6]# cd /usr/local/src/ZendOptimizer-3.0.1-linux-glibc21-i386/
[root@localhost ZendOptimizer-3.0.1-linux-glibc21-i386]# ./install.sh


- resin 데몬 실행 : /usr/local/resin/bin/httpd.sh start
- apache 데몬 실행 : /usr/local/apache2/bin/apachectl start

- 이상의 작업으로 mysql + apache + resin + php 의 연동 설치 작업이 끝나게 된다.

- 가상호스트 설정을 하기전 default 설정으로는 .html, .php, .htm 등의 확장자로 끝나는 파일들의 DocumentRoot 디렉토리는 /usr/local/apache2/htdocs 디렉로리, .jsp로 끝나는 확장자의 DocumentRoot 디렉토리는 /usr/local/resin/webapps/ROOT 이다.
즉, http://아이피주소/*.html, http://아이피주소/*.htm, http://아이피주소/*.php 등의 파일은 /usr/local/apache2/htdocs 디렉토리에서 찾게되며 http://아이피주소/*.jsp 파일은 /usr/local/resin/webapps/ROOT 디렉토리에서 찾게 된다.


8. 가상호스트 설정

- apache 가상호스트 설정

/usr/local/apache2/conf/httpd.conf 파일에서 아래와 같이 /home/*/public_html 디렉토리에 대한 권한 설정을 추가한다.
---------------------------------------
<Directory "/home/*/public_html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
---------------------------------------

가상호스트 설정 파일인 conf/extra/httpd-vhosts.conf 파일을 Include 하기 위해서 httpd.conf 파일에서 아래와 같이 주석을 제거한다.
---------------------------------------
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
---------------------------------------

/usr/local/apache2/conf/extra/httpd-vhosts.conf 파일에 아래와 같이 가상호스트 설정을 한 후에 apache 데몬을 리스타트 한다.
----------------------------------------------------------------------
NameVirtualHost 10.30.101.200

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost 10.30.101.200>
    ServerAdmin jook@hostway.co.kr
    DocumentRoot /home/jook/public_html
    ServerName www.jook.pe.kr
    ServerAlias jook.pe.kr
    ErrorLog logs/jook.pe.kr-error_log
    CustomLog logs/jook.pe.kr-access_log common
</VirtualHost>
----------------------------------------------------------------------

[root@localhost conf]# /usr/local/apache2/bin/apachectl restart

- resin 가상호스트 설정

resin의 설정파일은 /usr/local/resin/conf/resin.conf 파일이며, default host 설정은 아래와 같이 되어 있으며, default DocumentRoot 디렉토리를 변경하려면 <web-app id="/" document-directory="webapps/ROOT"/> 부분에서 변경할 수 있다.
-----------------------------------------------------------------------------------
    <host id="" root-directory=".">
      <!--
         - configures an explicit root web-app matching the
         - webapp's ROOT
        -->
      <web-app id="/" document-directory="webapps/ROOT"/>

      <resin:if test="${java.isJava5()}">
        <!--
           - Administration application /resin-admin
           -
           - password is the md5 hash of the password.
           - localhost is true to limit access to the localhost
          -->
        <resin:set var="resin_admin_password"  default=""/>
        <resin:set var="resin_admin_localhost" default="true"/>

        <web-app id="/resin-admin" document-directory="${resin.home}/php/admin"/>
       </resin:if>
    </host>
-----------------------------------------------------------------------------------

가상호스트 추가는 아래와 같은 형식으로 추가하며, 추가위치는 default host 설정부분의 아래에 차례로 추가 하면 된다.
가상호스트 추가완료후 resin 데몬을 restart 한다.
--------------------------------------------------------------
    <host id="www.jook.pe.kr" root-directory="/home/jook">
      <host-alias>jook.pe.kr</host-alias>
      <web-app id="/" document-directory="public_html"/>
    </host>
--------------------------------------------------------------

[root@localhost conf]# /usr/local/resin/bin/httpd.sh stop
[root@localhost conf]# /usr/local/resin/bin/httpd.sh start


9. mysql connector 설치

- jsp를 이용해서 mysql을 연결하기 위해서는 mysql connector를 설치해야한다.
connector는 http://mysql.com 에서 다운로드 받을수 있다.
http://mysql.com 에서 "Downloads" -> "Connectors" -> "Connector/J" 메뉴에서 다운로드 받아서 /usr/local/src 디렉토리에 업로드 한후 압축 해제한다.
mysql 연결에 필요한 connector 파일은 mysql-connector-java-5.0.7-bin.jar 이기 때문에 mysql-connector-java-5.0.7-bin.jar 파일을 /usr/local/java/lib 디렉토리에 옮겨놓고, /etc/profile에서 CLASSPATH에 추가한다.

[root@localhost conf]# cd /usr/local/src
[root@localhost src]# tar xvzfp mysql-connector-java-5.0.7.tar.gz
[root@localhost src]# cd mysql-connector-java-5.0.7
[root@localhost mysql-connector-java-5.0.7]# cp mysql-connector-java-5.0.7-bin.jar /usr/local/java/lib
[root@localhost mysql-connector-java-5.0.7]# vi /etc/profile

----------------------------------------------------------------------------------------------------------------
CLASSPATH="$JAVA_HOME/lib/mysql-connector-java-5.0.7-bin.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar"
----------------------------------------------------------------------------------------------------------------

[root@localhost mysql-connector-java-5.0.7]# source /etc/profile

- 최종적으로 resin 데몬을 재시작 하면 모든 작업이 완료되게 된다.

[root@localhost mysql-connector-java-5.0.7]# cd /usr/local/resin/bin
[root@localhost bin]# /usr/local/resin/bin/httpd.sh stop
[root@localhost bin]# /usr/local/resin/bin/httpd.sh start


10. php, jsp mysql 연결 확인

- 아래와 같이 test.php, test.jsp, dbtest.jsp 파일을 만들어 DocumentRoot 디렉토리에 업로드 하고 웹상에서 php와 jsp가 정상적으로 동작하는지, 이상없이 DB 연결이 되는지를 테스트 한다.

test.php
----------
<?
phpinfo();
?>
----------

test.jsp
--------------------
2 + 2 = <%= 2 + 2 %>
--------------------

dbtest.jsp
-------------------------------------------------------------------
<%@ page import="java.sql.*"
contentType="text/html;charset=euc-kr"%>
<%
String DB_URL = "jdbc:mysql://localhost:3306/mysql";
String DB_USER = "root";
String DB_PASSWORD= "";
Connection conn;
Statement stmt;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.close();
out.println("MySQL connected");
} catch(Exception e)
{out.println(e);}
%>
-------------------------------------------------------------------