[웹서버] Fedora3 + apache2 + php5 + mysql4 + resin2 연동하기
apache, php, mysql, resin 설치
이 문서는 fedora core3를 기반으로 작성되었습니다.
레진3는 상업용 서버에서 라이센스문제로 레진2를 기준으로 설치했습니다.
유니코드사용으로 APM의 옵션에 UTF-8이 들어간 부분들이 있습니다.
한글사용자들은 euc-kr로 변경하고 설치하세요.
/usr/bin에 java, javac가 존재합니다. 기본 패스($PATH) 사용시 참고하세요.
——————————————————————————–
package version, url
apache 2.0.54
http://httpd.apache.org/download.cgi?Preferred=http%3A%2F%2Fmirror.apache.or.kr
php 5.0.4
http://kr.php.net/get/php-5.0.4.tar.gz/from/a/mirror
resin 2.1.14
http://www.caucho.com/download/index.xtp
mysql 4.1.13
http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.13a.tar.gz/from/pick
jdk 5.0 update 4
https://sdlcweb4b.sun.com/ECom/EComActionServlet/DownloadPage:~:com.sun.sunit.sdlc.content.DownloadPageInfo;jsessionid=BDE0E49C0D6658FFB9DAA19B82110D1A;jsessionid=BDE0E49C0D6658FFB9DAA19B82110D1A
libjpeg 6 beta
http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
libpng 1.2.5
http://ftp.superuser.co.kr/pub/etc/libpng-1.2.5.tar.gz
freetype 2.1.5
http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
imap 2001 alpha
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/imap-devel-2001a-18.i386.rpm
——————————————————————————–
apache install
1. preparation
server/mpm/prefork/prefork.c 파일수정
[EDITOR] #define DEFAULT_SERVER_LIMIT 256 부분,
[EDITOR] #define DEFAULT_SERVER_LIMIT 1280 으로 변경
2. install
[PROMPT] ./configure –prefix=/usr/local/apache –enable-so –enable-modules=so
[PROMPT] make
[PROMPT] make install
3. configuration
/usr/local/apache/conf/httpd.conf 파일수정
[EDITOR] #ServerName www.example.com:80 부분,
[EDITOR] ServerName [도메인 or IP주소]:80 으로 변경
[EDITOR] #NameVirtualHost *:80 부분,
[EDITOR] NameVirtualHost *:80 으로 변경
맨아랫줄에 추가
[EDITOR] <VirtualHost *:80>
[EDITOR] DocumentRoot [경로:/home/test/public_html]
[EDITOR] ServerName [도메인 or IP주소]
[EDITOR] </VirtualHost>
위에 작성한 경로[/home/test/public_html] 생성
[PROMPT] mkdir -p /home/test/public_html
아파치 시작
[PROMPT] /usr/local/apache/bin/apachectl start
——————————————————————————–
jdk install
1. install
[PROMPT] rpm -ivh jdk-1_5_0_04-linux-i586.rpm
2. configuration
path에 java 디렉토리 설정
[PROMPT] vi /etc/profile
맨아래줄에 추가
[EDITOR] JAVA_HOME=/usr/java/jdk1.5.0_04
[EDITOR] export JAVA_HOME
[EDITOR] PATH=$PATH:$JAVA_HOME/bin
[PROMPT] source /etc/profile
——————————————————————————–
resin install
1. install
resin은 패키지 디렉토리에 바로 설치되기 때문에 패키지를 설치할 디렉토리에 복사합니다.
[PROMPT] cp -rf [레진패키지] [/usr/local/resin]
[PROMPT] ./configure –with-apache=/usr/local/apache
configure중에 아래의 메세지가 나와야 정상적으로 설치됩니다.
checking for JAVA_HOME…
/usr/java/jdk1.5.0_04 java설치경로에 따라 틀릴 수 있습니다.
checking for JNI in /usr/java/jdk1.5.0_04/include/linux … found
[PROMPT] make
[PROMPT] make install
——————————————————————————–
mysql install
1. install
[PROMPT] ./configure –prefix=/usr/local/mysql –with-charset=utf8
[PROMPT] make
[PROMPT] make install
2. configuration
기본 데이타베이스 생성
[PROMPT] /usr/local/mysql/bin/mysql_install_db
데몬을 실행시킬 mysql 사용자 생성
[PROMPT] useradd mysql
mysql사용자에 mysql디렉토리 권한 부여
[PROMPT] chown -R mysql:mysql /usr/local/mysql
mysql실행
[PROMPT] /usr/local/mysql/bin/mysqld_safe &
mysql관리자 암호 설정
[PROMPT] /usr/local/mysql/bin/mysqladmin -u root password ‘[암호]’
——————————————————————————–
php modules install
1. libjpeg install
[PROMPT] wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
[PROMPT] ./configure –enable-shared –enable-static
[PROMPT] make
[PROMPT] make install
2. libpng install
[PROMPT] wget http://ftp.superuser.co.kr/pub/etc/libpng-1.2.5.tar.gz
[PROMPT] cp scripts/makefile.linux makefile
[PROMPT] make install
3. freetype install
[PROMPT] wget http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
[PROMPT] ./configure
[PROMPT] make
[PROMPT] make install
4. imap install
[PROMPT] wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/imap-devel-2001a-18.i386.rpm
[PROMPT] rpm -ivh [패키지파일명]
——————————————————————————–
php install
1. preparation
main/php_stream.h 파일 수정
[EDITOR] #define PHP_STREAM_COPY_ALL 2000000 부분,
[EDITOR] #define PHP_STREAM_COPY_ALL -1 로 변경
2. install
[PROMPT] ./configure –enable-bcmath –enable-ftp –enable-filepro –enable-libxml –enable-memory-limit –enable-sockets –enable-spl –enable-sysvsem –enable-sysvshm –enable-track-vars –enable-versioning –enable-wddx –disable-cli –disable-debug –disable-dmalloc –disable-posix –disable-rpath –with-apxs2=/usr/local/apache/bin/apxs –with-bz2 –with-expat-dir=/usr –with-freetype-dir –with-gd –with-gettext –with-imap=shared –with-imap-ssl=/usr/lib –with-jpeg-dir –with-kerberos –with-libxml-dir=/usr/local –with-mod-charset –with-mysql=/usr/local/mysql –with-openssl –with-png-dir –with-ttf –with-zlib
[PROMPT] make
[PROMPT] make install
3. configuration
[PROMPT] cp [패키지디렉토리]/php.ini-dist /usr/local/lib/php.ini
/usr/local/lib/php.ini 파일 수정
[EDITOR] register_globals = Off 부분,
[EDITOR] register_globals = On 으로 변경
[EDITOR] post_max_size = 8M 부분 값 수정
[EDITOR] upload_max_filesize = 2M 부분 값 수정
[EDITOR] max_execution_time = 30 부분 값 수정
[EDITOR] memory_limit = 8M 부분 값 수정
——————————————————————————–
configure linkage
1. apache configure
/usr/local/apache/conf/httpd.conf 파일 수정
php로 인식할 확장자를 지정하고 기본 언어설정을 UTF-8(유니코드)로 설정합니다.
적당한 부분에 추가 (맨 아래에 해도 됩니다.)
[EDITOR] AddType application/x-httpd-php .php .phtml .php3 .html .htm
[EDITOR] AddType application/x-httpd-php-source .phps
[EDITOR] AddDefaultCharset UTF-8
CustomLog레벨에 이미지리퀘스트는 로깅하지 않게 하는 옵션입니다.
[EDITOR] CustomLog logs/access_log common 부분,
[EDITOR] SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf)$ IMAGE=1
[EDITOR] CustomLog /usr/local/apache/logs/access_log common env=!IMAGE 으로 변경
Resin과 연동하기 위해 Apache설치시 작성했던 VirtualHost를 아래와 같이 변경
[EDITOR] <VirtualHost *>
[EDITOR] DocumentRoot [/home/test/public_html]
[EDITOR] ServerName [211.181.40.221]
[EDITOR] CauchoConfigFile /usr/local/resin/conf/resin.conf
[EDITOR] <Location /container-status>
[EDITOR] SetHandler caucho-status
[EDITOR] Order deny,allow
[EDITOR] Deny from all
[EDITOR] Allow from all
[EDITOR] </Location>
[EDITOR] </VirtualHost>
2. resin configure
/usr/local/resin/conf/resin.conf 파일 수정
apache 설정파일과 resin 설정파일에 서비스 할 루트디렉토리와 도메인명을 동일하게 지정해야 합니다.
[EDITOR] <caucho.com>
[EDITOR] <log id=’/log’ href=’stderr:’ timestamp='[%Y-%m-%d %H:%M:%S.%s]’/>
[EDITOR] <java compiler=”internal” compiler-args=””/>
[EDITOR] <resource-ref>
[EDITOR] <res-ref-name>jdbc/test</res-ref-name>
[EDITOR] <res-type>javax.sql.DataSource</res-type>
[EDITOR] <init-param driver-name=”com.caucho.jdbc.mysql.Driver”/>
[EDITOR] <init-param url=”jdbc:mysql_caucho://localhost:3306/test”/>
[EDITOR] <init-param user=””/>
[EDITOR] <init-param password=””/>
[EDITOR] <init-param max-connections=”20″/>
[EDITOR] <init-param max-idle-time=”30″/>
[EDITOR] </resource-ref>
[EDITOR] <jsp precompile=’true’ static-encoding=’true’ recompile-on-error=’true’/>
[EDITOR] <http-server>
[EDITOR] <srun host=’127.0.0.1′ port=’6802’/>
[EDITOR] <class-update-interval>2s</class-update-interval>
[EDITOR] <servlet-classloader-hack>false</servlet-classloader-hack>
[EDITOR] <caucho-status>true</caucho-status>
[EDITOR] <thread-max>150</thread-max>
[EDITOR] <thread-keepalive id=’100’/>
[EDITOR] <request-timeout id=’65s’/>
[EDITOR] <accept-buffer-size id=’256’/>
[EDITOR] <thread-min id=’5’/>
[EDITOR] <ignore-client-disconnect>true</ignore-client-disconnect>
[EDITOR] <cache dir=’cache’ size=’1024′ entries=’8192’/>
[EDITOR] <cache-mapping url-pattern=’/’ expires=’2s’/>
[EDITOR] <servlet-mapping url-pattern=’*.xtp’ servlet-name=’xtp’/>
[EDITOR] <servlet-mapping url-pattern=’*.jsp’ servlet-name=’jsp’/>
[EDITOR] <servlet-mapping url-pattern=’/servlet/*’ servlet-name=’invoker’/>
[EDITOR] <welcome-file-list>index.html, index.xtp, index.jsp</welcome-file-list>
[EDITOR] <host id='[211.181.40.221]’>
[EDITOR] <doc-dir>[/home/test/public_html]</doc-dir>
[EDITOR] <access-log id=’logs/access.log’
[EDITOR] format=’%h %l %u %t “%r” %s %b “%{Referer}i” “%{User-Agent}i”‘
[EDITOR] rollover-period=’1W’/>
[EDITOR] <error-log id=’logs/error.log’/>
[EDITOR] <war-dir id=’webapps’/>
[EDITOR] <web-app id=’/’>
[EDITOR] <classpath id=’WEB-INF/classes’ source=’WEB-INF/classes’
[EDITOR] compile=’true’/>
[EDITOR] <session-config>
[EDITOR] <session-max>4096</session-max>
[EDITOR] <session-timeout>30</session-timeout>
[EDITOR] <enable-cookies>true</enable-cookies>
[EDITOR] <enable-url-rewriting>true</enable-url-rewriting>
[EDITOR] </session-config>
[EDITOR] <path-mapping url-regexp=’^/~([^/]*)’
[EDITOR] real-path=’/home/$1/public_html/’/>
[EDITOR] </web-app>
[EDITOR] </host>
[EDITOR] </http-server>
[EDITOR] </caucho.com>
3. test
테스트용 html 페이지 생성
[PROMPT] echo “hello world” > /home/test/public_html/index.html
테스트용 php 페이지 생성
[PROMPT] echo “<?php phpinfo()?>” > /home/test/public_html/index.php
class 디렉토리 생성
[PROMPT] mkdir -p [/home/test/public_html/WEB-INF/classes]
테스트용 jsp 페이지 생성
[PROMPT] echo “<%@ page language=\\”java\\” import=\\”java.util.*\\” %>” > /home/test/public_html/index.jsp
[PROMPT] echo “<%” >> /home/test/public_html/index.jsp
[PROMPT] echo “String path = request.getContextPath();” >> /home/test/public_html/index.jsp
[PROMPT] echo “String basePath = request.getScheme()+\\”://\\”+request.getServerName()+\\”:\\”+request.getServerPort()+path+\\”/\\”;” >> /home/test/public_html/index.jsp
[PROMPT] echo “%>” >> /home/test/public_html/index.jsp
[PROMPT] echo “this is my JSP page.” >> /home/test/public_html/index.jsp
apache 재시작
[PROMPT] /usr/local/apache/bin/apachectl restart
resin 시작
[PROMPT] /usr/local/resin/bin/httpd.sh start