Linux WEB

apache + resin 연동하여 설치하기

2008.05.19 20:42

호스트웨이 조회 수:32941


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 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10044
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
41 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12560
40 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11511
39 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
38 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14203
37 nginx - redirect 설정 호스트웨이 2012.08.24 17883
36 Nginx 설치 호스트웨이 2012.08.31 14900
35 Apache Max Client 값 수정 호스트웨이 2012.08.31 19640
34 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 20690
33 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 18706
32 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13524
31 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
30 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7626
29 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9405
28 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12763
27 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 17807
26 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7609
25 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10568
24 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8247