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

번호 제목 글쓴이 날짜 조회 수
83 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 6123
82 Alternative PHP Cache 설치 & 설정 호스트웨이 2015.09.18 6517
81 apache 쓸모없는 로그 남기지 않는 방법. 호스트웨이 2012.12.28 6758
80 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7605
79 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7621
78 Indexes 값 제거 호스트웨이 2015.09.18 7911
77 cronlog 설정 호스트웨이 2015.09.18 8047
76 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 8163
75 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8181
74 외부 링크 도용을 막기 위한 아파치 설정 호스트웨이 2015.09.11 8417
73 64bit 에서 php 컴파일시 에러 메세지 발생 시 대처방법-3 호스트웨이 2012.12.28 8583
72 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 8972
71 웹부하 테스트 - httperf 호스트웨이 2015.09.18 8988
70 Apache 동시접속자 수 알아내기 호스트웨이 2015.09.13 9306
69 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9400
68 SSL config error 조치사항 호스트웨이 2012.06.29 9631
67 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
66 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10042
65 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 10054
64 WEB에 특정 IP접근 차단 호스트웨이 2015.09.10 10056