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)