1. 설치에 필요한 파일 다운받기 

설치에 필요한 파일들 

imap-2001a.tar.Z (ftp://ftp.cac.washington.edu/imap) 
mysql-3.23.51.tar.gz  (http://www.mysql.com/downloads/mysql-3.23.html) 
apache_1.3.26.tar.gz  (http://www.apache.org/dist/httpd/) 
php-4.2.2.tar.gz (http://www.php.net/downloads.php) 
ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz (https://www.zend.com/store/products/zend-optimizer.php) 

해당 사이트 또는 미러사이트 등을 이용하여 파일을 다운로드 받습니다. 
설치에 필요한 소스들의 경로는 조금씩 변경될 수도 있습니다. 직접 찾아보기 번거로우시면 저의 홈페이지(http://www.kernel.tv)에서 다운받으세요.

다운받은 파일들을 /usr/local/src/ 또는 적당한 위치에 저장을 합니다. root계정으로 로그온 되어 있고, 리눅스시스템에 익숙한 분은 어느곳에 두고 설치를 해도 상관없습니다. 
하지만 소스파일들을 같은 디렉토리에 두세요. 
2. RPM으로 설치된 패키지 제거하기 

주의: 지금부터의 작업은 반드시 root의 권한으로 해야 합니다. 

배포본 리눅스에 기본적으로 설치되어 있는 RPM 패키지를 제거. 
[root@www root]# /etc/rc.d/init.d/httpd stop    아파치 데몬 종료.또는 killall httpd 
[root@www root]# ps -ef | grep httpd    httpd 데몬이 없는 것을 확인. 
root 1395 1360 0 17:12 pts/1 00:00:00 grep httpd    아무 메세지가 안뜨거나 이런형식으로 뜨면 실행되고 있는 아파치 데몬이 없는겁니다. 

[root@www root]# /etc/rc.d/init.d/mysqld stop    mysql  데몬을 종료. 
[root@www root]# ps -ef | grep mysqld    MySQL 데몬이 없는 것을 확인 
root    20246 20060  0 14:05 pts/0    00:00:00 grep mysqld 

[root@www root]# rpm -qa | grep apache    설치된 아파치 패키지를 검색합니다. 
apache-1.3.23-11 
apache-devel-1.3.23-11 
................................ 

[root@www root]# rpm -e apache    
error: removing these packages would break defendencies: 
    webserver is needed by mod_perl-1.24-6 
    webserver is needed by mod_php-4.0.4pl1-1 
    webserver is needed by mod_ssl-2.7.1-3 
    webserver is needed by mod_dav-1.0.2-2 
    webserver is needed by mod_python-2.7.6-5 
  ............................. 

아파치를 제거합시다. 그런데 에러메시지가 뜨죠? 의존성이 있는 패키지를 먼저 제거합니다. 
rpm -e --nodeps apache와 같이 의존성 검사를 무시하고 지울 수도 있으나 꼭 필요하지 않는 것을 남겨두면 공간만 차지하고 시스템효율성을 떨어뜨릴 수 있으므로 본인판단하에 사용하지 않는 것은 과감히 지우시고 다음에 필요하면 설치하세요. 
그리고 배포판 또는 설치환경에 따라 다소 패키지별로 차이가 있습니다. 
실수로 잘못 지운 것은 배포판 CD가 있으면 다시 설치하면 그대로 됩니다.(예: rpm -ivh apache-1.3.23-11.i386.rpm) 

[root@www root]# rpm -e mod_perl 
[root@www root]# rpm -e php    (php를 지울 때 의존성 문제가 뜨는 패키지도 같은 방법으로 지웁니다) 
[root@www root]# rpm -e mod_ssl 
[root@www root]# rpm -e mod_dav 

의존성이 있는 패키지를 제거하고 아파치도 제거합니다. 
[root@www root]# rpm -e apache 
[root@www root]# rpm -e apache-devel (처음 아파치의 패키지 검사시에 보였던 패키지를 모두 지운다) 

나머지 php, mysql, imap관련 패키지도 위와 같은 방법으로 지웁니다 

[root@www root]# rpm -qa | grep php    설치된 php패키지를 검색 후 삭제 
php-devel-4.2.2-7 
............................... 

[root@www root]# rpm -qa | grep mysql    설치된 mysql 패키지를 검색 후 삭제 (참고: 배포판에 따라 대소문자가 달라서 MySQL로 검색해야 할 경우도 있음.) 
mysql-3.23.49-3 
.............................. 

[root@www root]# rpm -qa | grep imap  설치된 imap 패키지를 검색 후 삭제 
imap-2001a-10 
imap-devel-2001a-10 

배포판이 생성시킨 MySQL 데이터에 추가된 것이 없을 경우 지웁니다. 
[root@www root]# rm -rf /var/lib/mysql 

/var/lib/mysql 은 MySQL을 RPM패키지로 설치했을 경우 DB파일이 저장되는 경로 입니다. 

다시 한번 관련패키지를 덜 지운 것이 없는지 확인합니다. 많은 문제점 질문중 원인이 관련패키지가 남아 있는 상태에서 컴파일을 해서 생기는 문제입니다. 
3. IMAP, MySQL, Apache, PHP4, Zend Optimizer 바이너리 파일 압축풀기 

소스파일들이 /usr/local/src 디렉토리에 있다고 가정하고 설명합니다. 

[root@www src]# tar zxvf imap-2001a.tar.Z 
[root@www src]# tar zxvf mysql-3.23.51.tar.gz 
[root@www src]# tar zxvf apache_1.3.26.tar.gz 
[root@www src]# tar zxvf php-4.2.2.tar.gz 
[root@www src]# tar zxvf ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz 
4. IMAP 설치 

[root@www src]# cd imap-2001a 
[root@www imap-2001a]# make slx  imap을 컴파일 한다 

컴파일이 완료되면 imapd 디렉토리에 imapd가 ipopd디렉토리에는 ipop2d, ipop3d가 생성된다. 
ipop2d는 잘 쓰지 않으므로 복사하지 않아도 됩니다. 

[root@www imap-2001a]# cp imapd/imapd /usr/sbin  생성된 실행화일들을 복사. 
[root@www imap-2001a]# cp ipopd/ipop3d /usr/sbin 
[root@www imap-2001a]# cp ipopd/ipop2d /usr/sbin 

이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록 하려면 환경설정을 수정해 주어야 한다. 
배포판 레드햇6.2이하에서는 inetd 슈퍼데몬에 의해 실행되므로 환경설정이 조금 다릅니다. 

[root@www imap-2001a]#  vi /etc/xinetd.d/imapd    imapd 실행을 위한 환경설정화일을 생성. 

service imap 
{ 
        disable = no 
        socket_type = stream 
        wait  = no 
        user = root 
        server = /usr/sbin/imapd 
        log_on_success += HOST DURATION 
        log_on_failure += HOST 
} 

[root@www imap-2001a]#  vi /etc/xinetd.d/ipop3d 

service pop3 
{ 
        disable = no 
        socket_type = stream 
        wait  = no 
        user = root 
        server = /usr/sbin/ipop3d 
        log_on_success += HOST DURATION 
        log_on_failure += HOST 
} 

[root@www imap-2001a]# vi /etc/services 
...... 
pop3            110/tcp        pop-3          # POP version 3 
pop3            110/udp        pop-3                                          
...... 
imap          143/tcp        imap2          # Interim Mail Access Proto v2 
imap          143/udp        imap2                                          
...... 

보통 위의 내용이 있습니다. 찾아보고 있으면 주석처리가 되어 있지 않는지만 확인하고 그대로 두세요. 

[root@www imap-2001a]# /etc/rc.d/init.d/xinetd restart    슈퍼데몬을 재가동. 

Stopping xinetd: [  OK  ] 
Starting xinetd: [  OK  ] 

telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트 합니다. 

[root@www imap-2001a]# telnet localhost 110 

Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
+OK POP3 localhost.localdomain v2001.78 server ready 
user mhbaek 
+OK User name accepted, password please 
pass abc123 
+OK Mailbox open, 0 messages 
quit 
+OK Sayonara 
Connection closed by foreign host. 

IMAP은 기본적으로 143 포트를 사용. 
5. MySQL 설치 

[root@www imap-2001a]# cd mysql-3.23.51 
[root@www mysql-3.23.51]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/var/lib/mysql 

옵션과 옵션사이는 공백 하나만 있으면 됩니다. 
위 옵션은 설치디렉토리를 지정하고 한글을 지원하도록 하고, --localstatedir 옵션은 DB파일을 저장할 디렉토리를 지정합니다. 
혹시 실수로 환경설정을 다시 해야할 경우 make distclean 명령을 하세요. 

이외에도 필요한 옵션에 대하여 알고 싶으면  ./configure --help 명령으로 살펴보세요. 

Thank you for choosing MySQL! 이라는 메시지가 나온다면 MySQL을 컴파일할 준비가 다 되었다는 말입니다. 

[root@www mysql-3.23.51]# make    컴파일 시작. 
시스템 사양에 따라 시간 차이가 있으므로 사양이 낮은 컴퓨터는 조금 기다리세요. ^^ 

[root@www mysql-3.23.51]# make install    MySQL을 설치. 

[root@www mysql-3.23.51]# scripts/mysql_install_db      MySQL의 데이터를 관리할 기초적인 DB와 테이블을 생성 

주의할 점은 mysql_install_db은 반드시 한번만 실행시켜야 합니다. 

최근의 MySQL에서 달라진 점은 MySQL이 mysql사용자 권한으로 실행됩니다. 
해당유저가 없어서 파일소유자가 root인 경우 에러가 발생합니다. 
따라서 다음과 같이 mysql 유저와 그룹을 생성합니다. 배포판에 따라 설치되었던 RPM버전에 의해 이미 생성되어 있을 수도 있습니다. 

[root@www mysql-3.23.51]# groupadd mysql 
[root@www mysql-3.23.51]# useradd -g mysql mysql 
[root@www mysql-3.23.51]# chown -R mysql /var/lib/mysql 
[root@www mysql-3.23.51]# chgrp -R mysql /var/lib/mysql 
[root@www mysql-3.23.51]# vipw  보안을 위해 새로 생성된 mysql유저가 로그인을 못하도록 수정. 

mysql:x:500:500::/home/mysql:/bin/bash  라인을 찾아서 다음과 같이 수정.  
mysql:x:500:500::/var/lib/mysql:/sbin/nologin  

:x를 통해 저장후 종료, 
You are using shadow passwords on this system. 
Would you like to edit /etc/shadow now [y/n] 라고 물으면 n 라고 하면 됩니다. 

저장후 초기 홈디렉토리인 /home/mysql를 삭제 
[root@www mysql-3.23.51]# rm -rf /home/mysql  홈디텍토리는 사용자마다 다를 수도 있습니다. 
[root@www mysql-3.23.51]# ls -al /var/lib/mysql  MySQL  DB디렉토리 확인 
합계 16 
drwx------    4 mysql    mysql        4096  7월 27 17:05 . 
drwxr-xr-x  15 root    root        4096  7월 27 17:05 .. 
drwx------    2 mysql    mysql        4096  7월 27 17:05 mysql 
drwx------    2 mysql    mysql        4096  7월 27 17:05 test 

위와 같은 출력하면을 볼 수 있습니다. DB가 하나 추가될 때마다 디렉토리가 생깁니다. 
mysql DB는 앞에서 생성시킨 MySQL을 관리할 DB입니다. 

[root@www mysql-3.23.51]# cp support-files/my-medium.cnf /etc/my.cnf 
[root@www mysql-3.23.51]# vi /usr/local/mysql/share/mysql/mysql.server 

편집기로 열어서 safe_mysql이 실행되는 라인(107 line쯤)에 --language=korean 옵션을 추가. 
참고로 mysql.server는 mysql이 정상적으로 실행되도록 짜여 있는 스크립트화일입니다. 

$bindir/safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean &    한글메세지를 띄우도록 해줍니다. 

시스템 부팅시에 자동 실행되도록 해 줍니다. 
[root@www /mysql-3.23.51]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld 

[root@www /mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld 
만일 Xwindows로 부팅할 경우를 위해 /etc/rc.d/rc5.d/ 디텍토리에도 링크를 만듭니다 
[root@www /mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld 

이후에 ntsysv명령을 하면 시스템 부팅시에 자동실행될 데몬을 쉽게 지정할 수 있습니다. 
[root@www /mysql-3.23.51]# ntsysv 

mysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해 둡니다. 

[root@www /mysql-3.23.51]# vi /root/.bash_profile 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin 
BASH_ENV=$HOME/.bashrc 
USERNAME="root" 

시스템 부팅환경은 배포판마다 조금씩 다를 수 있으니 사용자의 환경에 맞게 적절히 설정하세요. 

[root@www mysql-3.23.51]# /etc/rc.d/init.d/mysqld start 
[root@www mysql-3.23.51]# ps -ef | grep mysql    MySQL 프로세스 확인하기 
[root@www mysql-3.23.51]# /etc/rc.d/init.d/mysqld stop    MySQL 데몬 종료하기 
6. Apache Configure(1) 

[root@www mysql-3.23.51]# cd ../apache_1.3.26    초기에 아파치소스 압축을 풀어놓은 곳으로 이동. 
[root@www apache_1.3.26]# ./configure --prefix=/usr/local/apache 
7. PHP4설치 

[root@www mod_python-2.7.8] cd ../php-4.2.2 
[root@www php-4.2.2]# ./configure --with-config-file-path=/etc \ 
--with-exec-prefix=/usr/bin \ 
--with-imap=../imap-2001a \ 
--with-mysql=/usr/local/mysql \ 
--with-apache=../apache_1.3.26 \ 
--disable-debug \ 
--enable-track-vars \ 
--with-gd \ 
--enable-safe-mode 

\(역슬래시) 표시는 입력할 내용이 많을 경우 다음줄에서 보기 좋게 입력하도록 해 줍니다. 
기타옵션에 대한 추가 설명은 PHP메뉴얼을 참고하기 바랍니다. 
만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql=디렉토리경로 --with-msql=디렉토리 경로와 같이 옵션을 사용하면 됩니다. 
--enable-track-vars  옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 합니다. 꼭 설정해 두세요. 
--disable-debug  옵션은 Zend Optimizer 를 위한 옵션입니다. 

위 옵션외 기타 옵션들을 모두 설치하실 필요는 없습니다. 
사용하지 않는 옵션은 시스템 성능만 떨어뜨립니다. 

[root@www php-4.2.2]#make    컴파일 
[root@www php-4.2.2]#make install    인스톨 
8. Apache Configure(2), 컴파일 

[root@www php-4.2.2]# cd ../apache_1.3.26 
[root@www apache_1.3.26]# ./configure --prefix=/usr/local/apache \ 
--activate-module=src/modules/php4/libphp4.a \ 
--enable-module=so --enable-shared=max \ 
--sysconfdir=/usr/local/apache/conf \ 
--datadir=/home/httpd \ 
--localstatedir=/var/httpd \ 
--htdocsdir=/home/httpd/html \ 
--logfiledir=/var/log/httpd 

단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두드리지 말고 위 옵션을 잘 보고 입력하세요. 
--sysconfdir=/usr/local/apache/conf 옵션은 사용하지 않아도 Default 로 설정되는 경로입니다. 설정변경을 하실분은 참고하세요. 

[root@www apache_1.3.26]# make    아파치를 컴파일. 
[root@www apache_1.3.26]# make install    아파치 인스톨 

[root@www apache_1.3.26]# cp ../php-4.2.2/php.ini-dist /etc/php.ini  php환경설정 파일 복사 

시스템 부팅시 자동실행이 되도록 하기 위하여 설정을 합니다. 
[root@www apache_1.3.26]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd 
[root@www apache_1.3.26]# vi /etc/rc.d/init.d/httpd 

httpd를 편집기로 열어서 아래와 같이 "chkconfig: - 85 15" 를 추가합니다. 

#!/bin/sh 
# 
# Startup script for the Apache Web Server 
# 
# chkconfig: - 85 15 
# description: Apache is a World Wide Web server.  It is used to serve \ 
#              HTML files and CGI. 
# processname: httpd 

위와 같이 설정을 하고 나면 레드햇의 경우 다음과 같이 데몬시작과 종료를 편리하게 할 수 있는 툴에서 시작설정이 가능합니다. 
[root@www apache_1.3.26]# ntsysv 

또는 다음과 같이 시작과 종료설정을 해도 됩니다. 

[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S85httpd 
[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd 

시스템 종료 및 재부팅을 위하여.... 
[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15httpd 
[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15httpd 
[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15httpd 
9. 환경설정 파일 편집 

아파치 환경설정화일을 열어서 다음과 같은 환경설정을 합니다. 
[root@www apache_1.3.26]# vi /usr/local/apache/conf/httpd.conf 

404 라인쯤에 Default 시작페이지 설정을 수정해 줍니다 


DirectoryIndex index.php index.php3  index.html index.htm 

Section 2의 단락에서 아래 내용을 추가합니다. 


................................ 

# And for PHP 4.x, use: 
AddType application/x-httpd-php .php .php3 .inc .ph .htm 
AddType application/x-httpd-php-source .phps 

................................. 

환경설정 수정후 저장을 합니다. 
[root@www apache_1.3.26]# /usr/local/apache/bin/httpd -t      엔터를 두드리고  다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었습니다. 
Syntax OK  

만일 에러가 발생하였다면 몇 번째 라인에서 잘못되었다는 메시지를 보고 수정하세요. 

[root@www apache_1.3.26]# /usr/local/apache/bin/apachectl start        아파치를 실행시킵니다. 중지는 stop 재시작은 restart 인수를 사용하면 됩니다. 

아파치 관련 스크립트를 쉽게 실행하기 위한 환경설정을 합니다. 
[root@www apache_1.3.26]# vi /root/.bash_profile 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/apache/bin 
BASH_ENV=$HOME/.bashrc 
USERNAME="root" 

root 에서만 필요하므로 root의 PATH에 아파치의 디렉토리를 지정합니다. 다시 root로 로그인 하면 설정을 적용하여 사용할 수 있습니다. 
10. Test 하기 

테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다. 
메인 홈페이지 경로는 아파치 컴파일옵션(--htdocsdir=/home/httpd/html) 또는 아파치 환경설정파일 325라인 정도에서 DocumentRoot "/home/httpd/html"에 의해 설정된 경로입니다. 

[root@www apache_1.3.26]# vi /home/httpd/html/phpinfo.php 

에디터 창에서 다음내용을 입력합니다. 

phpinfo(); 
?> 

저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 봅시다. 

다음과 같은 내용이 출력된다면 정상적으로 설치가 잘 되었습니다. 
PHP LogoPHP Version 4.2.2 

System Linux linux.ctrclab.go.kr 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 unknown 
Build Date Jul 23 2002 
Configure Command './configure' '--with-config-file-path=/etc' '--with-exec-prefix=/usr/bin' '--with-imap=../imap-2001a' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.26' '--disable-debug' '--enable-track-vars' '--with-gd' '--enable-safe-mode' 
Server API Apache 
Virtual Directory Support disabled 
Configuration File (php.ini) Path /etc/php.ini 
ZEND_DEBUG disabled 
Thread Safety disabled 
  
Zend logo This program makes use of the Zend Scripting Language Engine: 
Zend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies 

11. Zend Optimizer 설치 

[root@www apache_1.3.26]# cd ../ZendOptimizer-1.3.2-Linux_glibc21-i386 
[root@www ZendOptimizer-1.3.2-Linux_glibc21-i386]# ./Install.sh 

다음과 같은 화면이 뜨면 Enter! 후 아래와 같은 간단한 내용의 질문을 읽고 환경에 맞게 입력해줍니다. 

Welcome to the Zend Optimizer 1.3.2 Installation Script! 
For more information on this script, see the Installation 
section in the Zend Optimizer User Guide. 

Specify the location where to install Zend Optimizer 

/usr/local/Zend 

Confirm the location of your php.ini file 

/etc 

Are you using the Apache web server? 

Yes 

Specify the location of your Apache root directory 

/usr/local/apache 

Install has detected PHP version 4.2.2 
Does this look correct? 
Yes 

Your php.ini is relocated to the /usr/local/Zend/etc directory 
and symbolic link from the former place /etc/httpd/php.ini is created. 
The installation completed successfully and your Zend Optimizer 
is setup for use.  


You must RESTART your Apache web server for the modifications to take effect 

설치 완료 메시지 지시대로 아파치를 재시작 해줍니다. 
[root@www apache_1.3.26]# /usr/local/apache/bin/apachectl restart 

아까 띄웠던 테스트 화면을 다시 Reload 해보면 다음과 내용을 볼 수 있습니다. 
Zend logo This program makes use of the Zend Scripting Language Engine: 
Zend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies 
    with Zend Optimizer v1.3.1, Copyright (c) 1998-2002, by Zend Technologies 

속도 테스트 

자신의 시스템에서 다음과 같은 PHP파일을 만들어 Optimizer 설치 전과 비교해 보세요.