Linux WEB

apache + resin 연동하여 설치하기

2008.05.19 20:42

호스트웨이 조회 수:32929


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);}
%>
-------------------------------------------------------------------

번호 제목 글쓴이 날짜 조회 수
43 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12546
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
41 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10042
40 SSL config error 조치사항 호스트웨이 2012.06.29 9631
39 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 23693
38 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 14714
37 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 11264
36 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 17546
35 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 8972
34 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 10054
33 mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 19935
32 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 20125
31 Zend Guard Loader 설치 호스트웨이 2012.04.20 17811
30 PHP에서 MS-SQL 서버를 연동하기 위한 방법 호스트웨이 2012.04.13 25303
29 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 12587
28 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 13982
27 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 15582
26 mod_rewrite 모듈 설치 및 기본 사용법 sylee 2009.07.02 38418
25 아파치2 에서 mod_cband 사용법 sylee 2009.06.05 24553
24 register_globals 옵션에 따른 변수 전달 jook 2009.02.19 34709