블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

    2009. 6. 10. 20:24 개발/Linux 계열

    아파치 웹서버를 운영하는데 있어서 기본이 HTML 서비스를 기본으로 하고 있다. PHP 기반에서 보통 APM을 설치한다. 그외에 자바 서버를 운영하기 위하여 Tomcat을 설치해서 서블릿과 jsp를 활용할 수 있다. 
    그리고 데이터 전송의 보안을 위하여 mod_ssl 기반의 https://를 활용해 보자 




    목차 

    1.PGCC 설치 
    2.MYSQL 설치 
    3.JDK 설치 
    4.Tomcat 설치 
    5.Imap 설치 
    6.GD 설치 
    7.apache 초기 작업 
    8.openssl 설치 
    9.mm 설치 
    10.mod_ssl 설치 
    11.apache & mod_gzip 
    12.SSL 인증서 수동으로 만들기 
    13.Apache+mod_ssl 을 자동시작 하려면 
    14.DSO PHP 설치 
    15.Zend Optimizer 설치 
    16.apache & tomcat 연동 mod_webapp.so 설치 
    17.최종 연동 테스트 
    18.후기 


    _______________________________________________________________________________ 


    1.PGCC 설치 

    [바이너리 화일 다운] 

    http://www.goof.com/pcg/binaries-linux.html 

    [설치] 

    - /usr/local/pgcc 경로로 설치 후 설치되 이름을 pgcc로 변경한다. 

    # 풀면서 특정 경로에 푼다. 
    [root@vm_master PGCC]# tar zxvfp pgcc-2.95.3-linux-x86-glibc2.1.tar.gz -C / 
    ./ 
    ./usr/ 
    ./usr/local/ 
    ./usr/local/pgcc/ 
    ./usr/local/pgcc/bin/ 
    ./usr/local/pgcc/bin/gcov 
    ./usr/local/pgcc/bin/cpp 
    ./usr/local/pgcc/bin/i686-pc-linux-gnu-gcc 
    ./usr/local/pgcc/bin/protoize 
    ./usr/local/pgcc/bin/unprotoize 
    - 중략 - 
    ./usr/local/pgcc/man/ 
    ./usr/local/pgcc/man/man1/ 
    ./usr/local/pgcc/man/man1/gcc.1 
    ./usr/local/pgcc/man/man1/cccp.1 

    # 이름 구별을 위하여 pgcc, pcpp로 변경한다. 
    [root@vm_master bin]# cd /usr/local/pgcc/bin/ 
    [root@vm_master bin]# ls 
    cpp gcc gcov i686-pc-linux-gnu-gcc protoize unprotoize 
    [root@vm_master bin]# mv gcc pgcc 
    [root@vm_master bin]# mv cpp pcpp 
    [root@vm_master bin]# ls 
    gcov i686-pc-linux-gnu-gcc pcpp pgcc protoize unprotoize 


    _______________________________________________________________________________ 

    2.MYSQL 설치 

    [소스 화일 다운] 

    http://www.mysql.com/downloads/mysql.html 

    [최적화 옵션] 

    http://www.mysql.com/doc/C/o/Compile_and_link_options.html 
    http://www.mysql.com/doc/c/o/configure_options.html 
    http://www.mysql.com/doc/M/y/MySQL_binaries.html 
    http://www.mysql.com/doc/W/h/Which_version.html 

    http://tunelinux.pe.kr/mysql/manual/10.txt 
    http://database.sarang.net/database/mysql/tuning/optimize_mysql.html 
    http://www.phpleader.co.kr/study/studycontent.php?study2_seq=47 

    [설치] 

    # 다음과 같은 내용의 스크립트를 작성해서 실행 시킨다. 

    [root@vm_master mysql-3.23.47]# vi pgcc_mysql.sh 
    #!/bin/bash 

    # 옵션 설정 시작 - 펜티엄 최적화 
    CC="/usr/local/pgcc/bin/pgcc" 
    CFLAGS="-O6 -mpentiumpro -mstack-align-double -fomit-frame-pointer -march=pentiumpro" 
    CXX="/usr/local/pgcc/bin/pgcc" 
    CXXFLAGS="-O6 -mpentiumpro -march=pentiumpro -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" 

    # 초기화 설정 - 디렉토리지정, 클라이언트,서버 정적 라이브러화" 
    # - 문자셑지정, 디버깅하지 않음, 트랜잭션사용" 
    ./configure --prefix=/usr/local/mysql --with-client-ldflags=-all-static 
    --with-mysqld-ldflags=-all-static --with-charset=euc_kr --without-debug 
    --enable-assembler --with-innodb 

    #PGCC를 mysql 세팅을 한다. 
    [root@vm_master mysql-3.23.47]# chmod +x pgcc_mysql.sh 
    [root@vm_master mysql-3.23.47]# ./pgcc_mysql.sh 
    - 생략 - 
    # 컴파일 
    make 

    # 설치 
    make install 

    # 데이터 베이스 설치 
    [root@vm_master support-files]#/usr/local/mysql/bin/mysql_install_db 

    # 설치 후에 시스템에 맞추어서 시스템 최적화 옵션 화일을 /etc/ 로 복사한다. 
    # 다음은 128메모리를 사용하는 경우이다. 
    [root@vm_master mysql-3.23.47]# cd support-files 
    [root@vm_master support-files]# cp my_medium.cnf /etc/my.cnf 
    # 512 M 이면 
    [root@vm_master support-files]# cp my-large.cnf /etc/my.cnf 
    # 1G이면 
    [root@vm_master support-files]# cp my-huge.cnf /etc/my.cnf 


    # mysql 계정 및 그룹 생성 및 퍼미션 권한을 변경해준다. 
    [root@vm_master support-files]# groupadd mysql 
    [root@vm_master support-files]# useradd -g mysql mysql 
    [root@vm_master support-files]# chown -R root /usr/local/mysql 
    [root@vm_master support-files]# chown -R mysql /usr/local/mysql/var 
    [root@vm_master support-files]# chgrp -R mysql /usr/local/mysql 


    # 라이브러들을 등록해준다. 
    [root@vm_master lib]# echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf 
    [root@vm_master lib]# ldconfig 

    #redhat인 경우 데몬 스크립트를 복사를 해준후 링크를 걸어 준다. 
    [root@vm_master support-files]# cd /etc/rc.d/init.d/ 
    [root@vm_master init.d]# vi mysqld 
    #!/bin/sh 

    PATH=/sbin:/usr/sbin:/bin:/usr/bin 
    basedir=/usr/local/mysql 
    bindir=/usr/local/mysql/bin 
    datadir=/usr/local/mysql/var 
    pid_file=/usr/local/mysql/var/mysqld.pid 
    log_file=/usr/local/mysql/var/mysqld.log 
    # Run mysqld as this user. 
    mysql_daemon_user=mysql 
    export PATH 

    mode=$1 

    if test -w / # determine if we should look at the root config file 
    then # or user config file 
    conf=/etc/my.cnf 
    else 
    conf=$HOME/.my.cnf # Using the users config file 
    fi 

    # The following code tries to get the variables safe_mysqld needs from the 
    # config file. This isn't perfect as this ignores groups, but it should 
    # work as the options doesn't conflict with anything else. 

    if test -f "$conf" # Extract those fields we need from config file. 
    then 
    if grep "^datadir" $conf >/dev/null 
    then 
    datadir=`grep "^datadir" $conf | cut -f 2 -d= | tr -d ' '` 
    fi 
    if grep "^user" $conf >/dev/null 
    then 
    mysql_daemon_user=`grep "^user" $conf | cut -f 2 -d= | tr -d ' ' | head -1` 
    fi 
    if grep "^pid-file" $conf >/dev/null 
    then 
    pid_file=`grep "^pid-file" $conf | cut -f 2 -d= | tr -d ' '` 
    else 
    if test -d "$datadir" 
    then 
    pid_file=$datadir/`hostname`.pid 
    fi 
    fi 
    if grep "^basedir" $conf >/dev/null 
    then 
    basedir=`grep "^basedir" $conf | cut -f 2 -d= | tr -d ' '` 
    bindir=$basedir/bin 
    fi 
    if grep "^bindir" $conf >/dev/null 
    then 
    bindir=`grep "^bindir" $conf | cut -f 2 -d= | tr -d ' '` 
    fi 
    if grep "^log[ t]*=" $conf >/dev/null 
    then 
    log_file=`grep "log[ t]*=" $conf | cut -f 2 -d= | tr -d ' '` 
    fi 
    fi 


    # Safeguard (relative paths, core dumps..) 
    cd $basedir 

    case "$mode" in 
    'start') 
    # Start daemon 

    if test -x $bindir/safe_mysqld 
    then 
    # Give extra arguments to mysqld with the my.cnf file. This script may 
    # be overwritten at next upgrade. 
    $bindir/safe_mysqld 
    --log-update=update.log -O max_connections=500 -O max_connect_error=999999999 
    --user=$mysql_daemon_user --datadir=$datadir --pid-file=$pid_file --log=$log_file & 
    else 
    echo "Can't execute $bindir/safe_mysqld" 
    fi 
    ;; 

    'stop') 
    # Stop daemon. We use a signal here to avoid having to know the 
    # root password. 
    if test -f "$pid_file" 
    then 
    mysqld_pid=`cat $pid_file` 
    echo "Killing mysqld with pid $mysqld_pid" 
    kill $mysqld_pid 
    # mysqld should remove the pid_file when it exits, so wait for it. 

    sleep 1 
    while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ] 
    do [ -z "$flags" ] && echo "Wait for mysqld to exitc" || echo ".c" 
    flags=a$flags 
    sleep 1 
    done 
    if [ -s $pid_file ] 
    then echo " gave up waiting!" 
    elif [ -n "$flags" ] 
    then echo " done" 
    fi 
    else 
    echo "No mysqld pid file found. Looked for $pid_file." 
    fi 
    ;; 

    *) 
    # usage 
    echo "usage: $0 start|stop" 
    exit 1 
    ;; 
    esac 


    [root@vm_master init.d]# chmod +x mysqld 

    # 리부팅후 자동으로 시작하세 초기화 스크립트에 링크를 걸어 준다. 
    [root@vm_master init.d]# cd /etc/rc3.d/ 
    [root@vm_master rc3.d]# ln -s ../init.d/mysqld S98mysqld 
    [root@vm_master rc3.d]# cd /etc/rc5.d/ 
    [root@vm_master rc5.d]# ln -s ../init.d/mysqld S98mysqld 

    #데이터 베이스를 시작한다. 
    [root@vm_master init.d]# ./mysqld start 
    [root@vm_master init.d]# Starting mysqld daemon with databases from 
    /usr/local/mysql/var 

    #프로세스를 확인해서 제대로 프로세스가 뜨는지 확인 한다. 
    [root@vm_master init.d]# pstree | grep mysql 
    |-safe_mysqld---mysqld---mysqld---mysqld 

    # 루트 패스워드를 넣는다. 
    [root@vm_master /bin]# mysqladmin -u root password '패스워드' 

    [[ 패스워드 분실시 ]] 

    [root@vm_master /bin]# killall mysqld 
    [root@vm_master /bin]# ./safe_mysqld --skip-grant & 
    [root@vm_master support-files]# mysql 
    mysql> UPDATE user SET Password=PASSWORD('패스워드') WHERE user='root'; 
    mysql> FLUSH PRIVILEGES; 

    _______________________________________________________________________________ 

    3.JDK 설치 


    [프로그램 다운로드] 

    http://java.sun.com/j2se/1.3/download-linux.html 

    [설치] 

    # 리눅스용 화일을 받아서 풀고 디렉토리를 옮긴다. 
    [root@vm_master AJS]# ls -al j2sdk-1_3_1_02-linux-i386.bin 
    -rw-rw-r-- 1 root root 26311391 Jan 7 2002 j2sdk-1_3_1_02-linux-i386.bin 
    [root@vm_master AJS]# chmod +x j2sdk-1_3_1_02-linux-i386.bin 
    [root@vm_master AJS]# ./j2sdk-1_3_1_02-linux-i386.bin 
    - 중 략 - 
    [root@vm_master AJS]# mv jdk1.3.1_02/ /usr/local/jdk 



    # 전체 환경에 자바와 톰켓를 사용할 수 있게 설정을 한다. 
    [root@vm_master root]# vi /etc/profile 
    #JDK & Tomcat Setting 
    export JAVA_HOME="/usr/local/jdk" 
    export CLASSPATH=".:$JAVA_HOME/lib/tools.jar:/usr/local/jakarta-tomcat/lib/servlet.jar:$JAVA_HOME/jre/lib/rt.jar" 
    export PATH="$PATH:$JAVA_HOME/bin" 

    # 새로 로긴후 java 라고 쳐서 테스트 한다. 


    [문제해결] 

    # 다음과 같은 에러는 아래의 패키지를 설치한다. 
    [root@vm_master AJS]# java 
    /usr/local/jdk/bin/i386/native_threads/java: error while loading shared libraries: 
    libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory 

    # CD-ROM 마운트후 다음 패키지를 설치 한다. 
    [root@vm_master AJS]# cd /mnt/cdrom/RedHat/RPMS/ 
    [root@vm_master RPMS]# ls com* 
    compat-libstdc++-6.2-2.9.0.16.i386.rpm 
    [root@vm_master RPMS]# rpm -ivh compat-libstdc++-6.2-2.9.0.16.i386.rpm 
    Preparing... ########################################### [100%] 
    1:compat-libstdc++ ########################################### [100%] 


    # Jaf & JavaMail 설치 

    [다운로드] 
    JavaBeans Activation Framework : http://java.sun.com/beans/glasgow/jaf.html 
    JavaMail : http://java.sun.com/products/javamail/index.html 

    [참고 자료] 
    http://www.javastudy.co.kr/docs/lec_java/javamail/javamail.html 

    [설치] 

    # 압축을 풀고 디렉토리 이름을 바꾼다. 

    [root@vm_master AJS]# cp jaf1_0_1.zip /usr/local/ 
    [root@vm_master AJS]# cp javamail-1_2.zip /usr/local/ 
    [root@vm_master local]# cd /usr/local/ 
    [root@vm_master local]# unzip jaf1_0_1.zip 
    [root@vm_master local]# unzip javamail-1_2.zip 
    [root@vm_master local]# mv jaf-1.0.1/ jaf/ 
    [root@vm_master local]# mv javamail-1.2/ javamail/ 

    # /etc/profile 에 다음을 추가 한다. 
    [root@vm_master root]# vi /etc/profile 
    # jaf & javamail Setting 
    export CLASSPATH="$CLASSPATH:/usr/local/javamail/mail.jar:/usr/local/jaf/activation.jar" 


    _______________________________________________________________________________ 

    4.Tomcat 설치 

    [바이너리 다운로드] 
    http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/ 

    # 아파치와 연동하기 위하여 webapp_modules를 받어 놓는다. 
    http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/linux/i386/ 


    [설치] 

    # 화일을 풀고 이름을 바꾼다. 
    [root@vm_master AJS]# tar zxvfp jakarta-tomcat-4.0.1.tar.gz -C /usr/local 
    [root@vm_master AJS]# cd /usr/local/ 
    [root@vm_master local]# mv jakarta-tomcat-4.0.1/ jakarta-tomcat/ 

    _______________________________________________________________________________ 

    5.Imap 설치 

    [소스 다운로드] 
    http://www.planetmirror.com/pub/imap/ 

    [설치] 

    # 패키지 확인 후 없으면 컴파일, 설치하고 필요 라이브러리를 카피한다. 
    [root@vm_master AJS]# rpm -qa | grep imap 
    [root@vm_master AJS]# tar zxvf imap.tar.Z 

    # 디렉토리를 /usr/local/imap으로 이동 시킨다. 
    [root@vm_master AJS]# mv imap-2001a/ /usr/local/imap 
    [root@vm_master AJS]# cd /usr/local/imap 
    [root@vm_master imap]# make slx 
    [root@vm_master imap]# cp ipopd/ipop[23]d /usr/sbin/ 
    [root@vm_master imap]# cp imapd/imapd /usr/sbin/ 

    # 아파치가 imap을 인식하도록 
    [root@vm_master imap]# cp ./c-client/c-client.a /usr/lib/libc-client.a 
    [root@vm_master imap]# cp ./c-client/mail.h /usr/local/include/ 
    [root@vm_master imap]# cp ./c-client/rfc822.h /usr/local/include/ 
    [root@vm_master imap]# cp ./c-client/linkage.h /usr/local/include/ 

    # imap을 서버에서 운영가능하도록 xinetd 설정 화일을 만든다. 
    [root@vm_master xinetd.d]# cat imapd 
    service imap 
    { 
    disable = no 
    socket_type = stream 
    protocol = tcp 
    wait = no 
    user = root 
    server = /usr/sbin/imapd 
    } 

    # 서비스 확인 
    [root@vm_master xinetd.d]# netstat -at 
    Active Internet connections (servers and established) 
    Proto Recv-Q Send-Q Local Address Foreign Address State 
    tcp 0 0 *:imap *:* LISTEN 

    _______________________________________________________________________________ 

    6.GD 설치 

    [소스 다운로드] 
    http://freshmeat.net/projects/gd/homepage/ 

    [설치] 

    # 화일을 풀고 컴파일을 한후 디렉토리를 통으로 옮긴다. 
    [root@vm_master AJS]# tar zxvf gd-1.8.4.tar.gz 
    [root@vm_master AJS]# cd gd-1.8.4 
    [root@vm_master gd-1.8.4]# make 
    [root@ns gd-1.8.4]# cd .. 
    [root@vm_master AJS]# mv gd-1.8.4 /usr/local/gd 

    _______________________________________________________________________________ 

    7.apache 초기 작업 

    [소스 다운로드] 
    http://www.apache.org/dist/httpd/ 

    # 아파치를 간단히 기본 설치 디렉토리를 세팅한다. 
    [root@vm_master apache_1.3.22]# tar zxvf apache_1.3.22.tar.gz 
    [root@vm_master apache_1.3.22]# cd apache_1.3.22.tar.gz 
    [root@vm_master apache_1.3.22]# ./configure --prefix=/usr/local/apache 

    _______________________________________________________________________________ 

    8.openssl 설치 

    [소스 다운로드] 
    http://www.openssl.org/source/ 

    [설치] 

    # 소스 풀고 컴파일 한다. 인스톨은 하지 않는다. 
    [root@vm_master AJS]# tar zxvf openssl-0.9.6b.tar.gz 
    [root@vm_master AJS]# cd openssl-0.9.6b/ 
    [root@vm_master openssl-0.9.6b]# ./config 
    [root@vm_master openssl-0.9.6b]# make;make install 

    _______________________________________________________________________________ 

    9.mm 설치 

    - 공유 메모리 관련 라이브러리 

    [소스 다운로드] 
    http://www.engelschall.com/sw/mm/ 

    [설치] 


    [root@vm_master AJS]# tar zxvf mm-1.1.3.tar.gz 
    [root@vm_master AJS]# cd mm-1.1.3 
    [root@vm_master mm-1.1.3]# ./configure 
    [root@vm_master mm-1.1.3]# make 
    [root@vm_master mm-1.1.3]# make install 
    [root@vm_master mm-1.1.3]# cd .. 
    [root@vm_master AJS]# mv mm-1.1.3 /usr/local/ 

    _______________________________________________________________________________ 

    10.mod_ssl 설치 

    [소스 다운로드] 
    http://www.modssl.org/source/ 

    [설치] 
    [root@vm_master AJS]# tar zxvf mod_ssl-2.8.5-1.3.22.tar.gz 
    [root@vm_master AJS]# cd mod_ssl-2.8.5-1.3.22 
    [root@vm_master mod_ssl-2.8.5-1.3.22]# ./configure 
    > --with-apache=../apache_1.3.22 
    > --with-ssl=/usr/local/ssl --enable-shared=ssl 
    > --with-mm=/usr/local/mm-1.1.3 

    _______________________________________________________________________________ 

    11.apache & mod_gzip 

    [ mod_gzip모듈 다운로드 ] 
    http://www.remotecommunications.com/apache/mod_gzip/ 에서 mod_gzip.c 

    [ mod_gzip 참고 사이트] 
    http://www.apache.kr.net/documents/mod_gzip_kr.html 

    [소스 수정] 

    # 최대 클라이언트 접속수 조정 
    [root@vm_master apache_1.3.22]# vi src/include/httpd.h 

    #ifndef HARD_SERVER_LIMIT 
    #ifdef WIN32 
    #define HARD_SERVER_LIMIT 1024 
    #elif defined(NETWARE) 
    #define HARD_SERVER_LIMIT 2048 
    #else 
    #define HARD_SERVER_LIMIT 256 // 이곳의 숫자값을 512로 변경 
    #endif 
    #endif 

    # 버전 정보를 변경한다. 

    #define SERVER_BASEVENDOR "Apache Group" //적당히 다른 이름으로 
    #define SERVER_BASEPRODUCT "Apache" //다른 이름으로 
    #define SERVER_BASEREVISION "1.3.22" //버전을 적당히 고친다. 

    #mod_gzip.c를 받어서 아파치 디렉토리의 다름 경로로 이동 시킨후 설정 내용에 
    #mod_gzip에 관한 내용을 집어 넣는다. 
    [root@vm_master AJS]# cp mod_gzip.c apache_1.3.22/src/modules/extra/ 
    [root@vm_master AJS]# echo "AddModule modules/extra/mod_gzip.o" >> apache_1.3.22/src/Configuration.tmpl 

    [root@localhost AJS]# cd apache_1.3.22 
    [root@vm_master apache_1.3.22]# EAPI_MM="/usr/local/mm-1.1.3" SSL_BASE="/usr/local/ssl" 

    #만약 php를 DSO방식으로 처리를 하고 싶다면 아파치를 먼저 컴파일 한다. 
    [root@vm_master apache_1.3.22]# ./configure --prefix=/usr/local/apache 
    > --enable-rule=SHARED_CORE --enable-shared=ssl 
    > --enable-module=ssl --enable-module=so --enable-shared=max 

    #만약 php를 DSO로 하지 않는 경우 php를 먼저 컴파일 하고 다음 옵션을 넣는다. 
    [root@vm_master /AJS]#tar zxvf php-4.1.1.tar.gz 
    [root@vm_master /AJS]#cd php-4.1.1 
    [root@vm_master /php-4.1.1]#./configure --prefix=/usr/local/php 
    --with-apache=../apache_1.3.22 
    --with-mysql=/usr/local/mysql 
    --with-imap=/usr/local/imap 
    --with-gd=/usr/local/gd 
    --enable-track-vars 
    --with-language=korean 
    --with-config-file=/usr/local/php/lib 
    --with-charset=euc_kr 
    --disable-debug 
    --with-xml --enable-magic-quotes 
    [root@vm_master /php-4.1.1]#make;make install 

    ## php.ini와 기타 설정은 하단 PHP DSO방식으로 하기 참조 ## 

    #php를 먼저 컴파일 하고 아파치에서 옵션을 넣는다. 
    [root@vm_master apache_1.3.22]# ./configure --prefix=/usr/local/apache 
    --enable-rule=SHARED_CORE --enable-shared=ssl 
    --enable-module=ssl --enable-module=so --enable-shared=max 
    --activate-module=src/modules/php4/libphp4.a 

    [root@vm_master apache_1.3.22]# make 

    # 이과정에서 서버를 묻는다.. 정확히 자신의 https 서버이름을 지정해야 한다. 
    [root@vm_master apache_1.3.22]# make certificate TYPE=custom 

    [root@vm_master apache_1.3.22]# make install 

    #설치후 mod_gzip 설정 화일을 httpd.conf에 넣는다. 참고로 옆에 있는 #있는 주석은 모두 지운다. 


    mod_gzip_on Yes 
    mod_gzip_dechunk Yes 
    mod_gzip_min_http 1000 # 1000 = HTTP/1.0, 1001 = HTTP/1.1 
    mod_gzip_minimum_file_size 300 # 압축할 최소 Size 
    mod_gzip_maximum_file_size 0 
    mod_gzip_maximum_inmem_size 100000 
    mod_gzip_keep_workfiles No 
    mod_gzip_item_include file .html$ # 압축할 파일들 설정 
    mod_gzip_item_include file .htm$ 
    mod_gzip_item_include file .jsp$ 
    mod_gzip_item_include file .php$ 
    mod_gzip_item_include file .pl$ 
    mod_gzip_item_include mime ^text/.* 
    mod_gzip_item_include mime ^text/.html # 설명서에는 이렇게 되있는데 
    # 다음줄을 넣어야 되더군요. 
    mod_gzip_item_include mime ^text/html$ # HTML 형식 모두 압축 
    mod_gzip_item_include mime ^application/x-httpd-php # PHP 스크립트 압축 
    mod_gzip_item_include mime ^httpd/unix-directory$ 
    mod_gzip_item_include handler ^perl-script$ 
    mod_gzip_item_include handler ^server-status$ 
    mod_gzip_item_include handler ^server-info$ 
    mod_gzip_item_exclude file .css$ # 압축 제외 파일들. 
    mod_gzip_item_exclude file .js$ 
    mod_gzip_item_exclude mime ^image/.* 

    mod_gzip_temp_dir /dev/shm # 이것 Linux용이고요 보통 '/tmp'하시면됩니다. 
    LogFormat "%h %l %u %t "%V %r" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2 
    CustomLog logs/mod_gzip common_with_mod_gzip_info2 




    _______________________________________________________________________________ 

    12. SSL 인증서 수동으로 만들기 

    [아파치에서 make certificate에서 인증서 자동으로 생성된다. 하지만 잘 안되는 경우는 
    다음과 같이 해서 인증서를 만든다. ] 


    # 여러가지 묻는데 "."로 하면 그냥 넘어간다. 혹은 메세지에 맞게 항목을 넣는다. 
    [root@vm_master apache_1.3.22]# cd /usr/local/ssl/bin/ 
    [root@vm_master bin]# ./openssl req -new > new.cert.csr 
    [root@vm_master bin]# ./openssl rsa -in privkey.pem -out new.cert.key 
    [root@vm_master bin]# ./openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 999 

    # 키값을 복사한다. 

    [root@vm_master bin]# cp new.cert.key /usr/local/apache/conf/ssl.key/server.key 
    [root@vm_master bin]# cp new.cert.cert /usr/local/apache/conf/ssl.key/server.crt 

    _______________________________________________________________________________ 

    13. Apache+mod_ssl 을 자동시작 하려면 

    [참고 사이트] 
    http://linux.sarang.net/board/?p=read&table=qa&no=105693&page=3&o[at]=s&o[sc]=a&o[ss]=mod_ssl&o[st]=a 


    'httpd.conf' 파일을 열어서 'SSLPassPharaseDialog'란 부분을 
    찾아서 그 뒷부분에다가 'exec:실행파일명' 형식으로 적어주시고 
    그 '실행파일'을 만들어주심 됩니다. 이 '실행파일'이 하는 일은 
    단순히 SSL Private Key에 대한 패스워드를 Clean Text 형식으로 
    출력해주는 것입니다. 
    아래는 예입니다. (패스워드가 'password'라고 가정함) 

    ------------ httpd.conf 의 부분 ---------------------- 
    SSLPassPhraseDialog exec:/usr/local/sbin/ssl_pass.sh 
    ------------ 이 부분에서 자르세요 -------------------- 

    ------------ ssl_pass.sh ----------------------------- 
    #!/bin/sh 
    echo password 
    ------------ 이 부분에서 자르세요 -------------------- 

    여기서 반드시 주의하실 점은 'ssl_pass.sh'의 권한 설정입니다. 
    절대적으로 root만 읽고 실행할 수 있어야 합니다. 

    # chown root.root ssl_pass.sh 
    # chmod 500 ssl_pass.sh 


    위에서 예를 든 방법 외에 그냥 바로 'httpd.conf' 파일내에 
    패스워드를 적어주는 방법도 있지만, 보안 상 그다지 추천할 
    만한 방법은 아닌 것 같습니다. 
    좀 더 자세한 정보를 얻고 싶으시면, mod_ssl 홈페이지에 
    가셔서 'SSLPassPharaseDialog'란 키워드로 검색을 해보심 
    됩니다. 



    14.DSO PHP 설치 

    [소스 다운로드] 
    http://www.php.net/downloads.php 

    # 소스를 풀고 설정을 한다. 
    [root@vm_master php-4.1.1]# CFLAGS='-O2 -I/usr/local/ssl/include' ./configure 
    --prefix=/usr/local/php 
    --with-apxs=/usr/local/apache/bin/apxs 
    --with-mysql=/usr/local/mysql 
    --with-imap=/usr/local/imap 
    --with-gd=/usr/local/gd 
    --enable-track-vars 
    --enable-magic-quotes 
    --with-openssl=/usr/local/ssl 
    --with-language=korean 
    --with-charset=euc_kr 
    --disable-debug 
    --with-xml 

    # 설치 한다. 
    [root@vm_master php-4.1.1]# make ;make install 

    [root@vm_master php-4.1.1]# cp php.ini-dist /usr/local/php/lib/php.ini 

    # 다음 php 관련 내용이 아파치 설정 화일에 있는지 확인 한다. 
    [root@vm_master conf]# cat httpd.conf | grep php 
    LoadModule php4_module libexec/libphp4.so 
    AddModule mod_php4.c 
    DirectoryIndex index.html index.php 
    # http://www.php.net) will typically use: 
    #AddType application/x-httpd-php3 .php3 
    #AddType application/x-httpd-php3-source .phps 
    AddType application/x-httpd-php .php .phtml .html .htm .ph 
    AddType application/x-httpd-php-source .phps 

    mod_gzip_item_include file .php$ 
    mod_gzip_item_include mime ^application/x-httpd-php 


    _______________________________________________________________________________ 

    15.Zend Optimizer 설치 

    [다운로드] 
    http://www.zend.com/store/products/zend-optimizer.php 

    # 소스를 풀고 디렉토리를 만들고 php.ini를 수정한다. 
    [root@vm_master AJS]# tar zxvf ZendOptimizer-1[1].2.0-PHP_4.1.0-Linux_glibc21-i386.tar.gz 
    [root@vm_master AJS]# mkdir -p /usr/local/Zend 
    [root@vm_master AJS]# mkdir -p /usr/local/Zend/lib 
    [root@vm_master AJS]# cd ZendOptimizer-1.2.0-PHP_4.1.0-Linux_glibc21-i386/data 
    [root@vm_master data]# cp ZendOptimizer.so /usr/local/Zend/lib/ 

    # 다음 라인을 추가한다. 
    [root@vm_master data]# vi /usr/local/php/lib/php.ini 
    [Zend Optimizer] 
    zend_optimizer.optimization_level=7 
    zend_extension="/usr/local/Zend/lib/ZendOptimizer.so" 

    _______________________________________________________________________________ 

    16.apache & tomcat 연동 mod_webapp.so 설치 

    [ 모듈 다운로드 ] 
    http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/linux/i386/ 

    # 소스를 풀고 모듈을 설치 한다. 
    [root@vm_master AJS]# tar zxvf webapp-module-1.0-tc40-linux-glibc2.2.tar.gz 
    [root@vm_master AJS]# cd webapp-module-1.0-tc40 
    [root@vm_master webapp-module-1.0-tc40]# cp mod_webapp.so /usr/local/apache/libexec/ 

    # 아파치 설정 화일에 다음 라인을 추가 한다. 
    [root@vm_master webapp-module-1.0-tc40]# cat /usr/local/apache/conf/httpd.conf | grep web 
    LoadModule webapp_module libexec/mod_webapp.so 
    AddModule mod_webapp.c 

    # 아파치 설정 화일에서 도규먼트 루트 디렉토리를 톰켓 디렉토리로 변경한다. 
    # 그리고 ssl 가상 호스트 또한 변경을 한다. 

    [root@vm_master webapp-module-1.0-tc40]# cat /usr/local/apache/conf/httpd.conf | grep DocumentRoot 
    # DocumentRoot: The directory out of which you will serve your 
    #DocumentRoot "/usr/local/apache/htdocs" 
    DocumentRoot "/usr/local/jakarta-tomcat/webapps/ROOT" 

    # This should be changed to whatever you set DocumentRoot to. 
    # even if you change the DocumentRoot. Comment it if you don't want to 
    # DocumentRoot /www/docs/dummy-host.example.com 
    #DocumentRoot "/usr/local/apache/htdocs" 
    DocumentRoot "/usr/local/jakarta-tomcat/webapps/ROOT" 


    # 아파치와 톰켓을 연결하는 부분이다. 이부분을 맨 마지막 부분에 넣는다. 
    [root@vm_master bin]# cat /usr/local/apache/conf/httpd.conf | grep WebApp 
    WebAppConnection conn warp localhost:8008 
    WebAppDeploy examples conn /examples 
    WebAppInfo /webapp-info 


    # 최종 테스트 순서 톰켓을 먼저 구동한 다음에 아파치를 구동한다. 

    [root@vm_master bin]# cd /usr/local/jakarta-tomcat/bin/ 
    [root@vm_master bin]# ./startup.sh 
    Guessing CATALINA_HOME from catalina.sh to ./.. 
    Setting CATALINA_HOME to ./.. 
    Using CLASSPATH: ./../bin/bootstrap.jar:/usr/local/jdk/lib/tools.jar 
    Using CATALINA_BASE: ./.. 
    Using CATALINA_HOME: ./.. 
    Using JAVA_HOME: /usr/local/jdk 

    # 아파치 실행 할때 에러 메세지가 난다. 이것은 무시해도 된다. 잘 되네요. 
    [root@vm_master bin]# /usr/local/apache/bin/apachectl start 
    [Thu Jan 17 07:56:38 2002] [warn] Loaded DSO libexec/mod_webapp.so uses plain Apache 1.3 API, 
    this module might crash under EAPI! (please recompile it with -DEAPI) 
    /usr/local/apache/bin/apachectl start: httpd started 

    _______________________________________________________________________________ 

    17.최종 연동 테스트 

    http://hostname/ 
    https://hostname/ 

    두가지가 모두 잘나온다면 성공.. 추카.. ^^; 

    # 아파치 구동시 문제가 있더라도 만약 다음과 에러가 나오더라도 이상 없는 것이다. 
    [Thu Jan 17 07:52:34 2002] [warn] Loaded DSO libexec/mod_webapp.so uses plain Apache 1.3 API, 
    this module might crash under EAPI! (please recompile it with -DEAPI) 
    posted by 좋은느낌/원철