MySQL + Apache + PHP4 + IMAP + Zend Optimizer 설치하기

작성자: 백명훈
E-mail:
mhbaek@chollian.net
URL:
http://www.rotaract.or.kr     http://linux.ks.ac.kr

최종수정일: 2001년 1월28일

설치환경
CPU : Intel Pentium III 333Mhz *2
RAM: 384M
HDD: IBM 9G
OS: Redhat Linux 7.0
Kernel: 2.2.16

설치에 필요한 파일
imap-2000b.tar.Z (
ftp://ftp.cac.washington.edu/imap)
mysql-3.23.32.tar.gz  (
http://www.mysql.com/downloads/mysql-3.23.html)
apache_1.3.14.tar.gz  (
http://www.apache.org/mirrors/ )
php-4.0.4pl1.tar.gz (
http://www.php.net/downloads.php)
ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz (
http://www.zend.com/download.php)

PHP Zend를 설치를 해보고 싶어하는 분들을 위해 이 글을 작성합니다.
가급적 초보분들을 위해 최대한 쉽게 설명하였으나 의문점이 있으면 메일을 주세요.
그동안 이 글을 읽고 여러 가지 문제점을 지적해 주신 분들께 감사드립니다.
컴파일을 위한 소스는 2001년1월28일 현재 가장 최신버젼으로 하였습니다.

현재 출시되어 있는 RedHat 7.0에서 전체설치를 하고, 업데이트 에이젼트를 이용하여 전체업데이트를 하면 php-4.0.4pl1으로 업데이트 됩니다.
설치가 어렵게 느껴지는 분은 레드햇7.0의 기본 RPM패키지를 이용하셔도 무난할 것 같군요.
이후 새로운 버전이 출시되어 설치방법에 문제가 있으면 저에게 개선방안을 메일로 보내주시면 감사하겠습니다.

지금 부터는 경어를 생략하고 설명하겠습니다.

설치순서
1. 설치에 필요한 파일 다운받기
2. RPM으로 설치된 패키지 제거하기
3. IMAP, MySQL, Apache, PHP4 바이너리 파일 압축풀기
4. IMAP 설치
5. MySQL 설치
6. Apache Configure(1)
7. PHP4설치
8. Apache Configure(2), 컴파일
9. Zend Optimizer 설치
10. 환경설정화일 편집
11. Test 하기
12. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기


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

imap-2000b.tar.Z (ftp://ftp.cac.washington.edu/imap)
mysql-3.23.32.tar.gz  (
http://www.mysql.com/downloads/mysql-3.23.html)
apache_1.3.14.tar.gz  (
http://www.apache.org/mirrors/ )
php-4.0.4pl1.tar.gz (
http://www.php.net/downloads.php)
ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz (
http://www.zend.com/download.php)

해당 사이트 또는 미러사이트 등을 이용하여 파일을 다운로드 받는다.
아니면 저의 홈페이지에서 받으셔도 됩니다. http://linux.ks.ac.kr

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@www /root]#/etc/rc.d/init.d/mysqld stop     mysql  데몬을 종료시킨다.
[root@www /root]#ps -ef | grep mysqld  

[root@www /root]#rpm -qa | grep apache    설치된 아파치 패키지를 검색한다.
apache-1.3.14-3
apache-devel-1.3.14-3
................................

[root@www /root]#rpm -qa | grep php    설치된 php패키지를 검색한다.
...............................

[root@www /root]#rpm -qa | grep mysql    설치된 mysql 패키지를 검색한다. (참고: 배포판에 따라 MySQL로 검색해야 할 경우도 있음.)
..............................

[root@www /root]#rpm -qa | grep imapl    설치된 imap 패키지를 검색한다.
imap-2000-3
imap-devel-2000-3  

[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 

아파치를 제거합시다. 그런데 에러메시지가 뜨죠? 의존성이 있는 패키지를 먼저 제거합니다. 
[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관련 패키지도 위와 같은 방법으로 지웁니다.

배포판이 생성시킨 MySQL 데이터도 지웁니다.
[root@www /root]# rm -rf /var/lib/mysql

3. IMAP, MySQL, Apache, PHP4 바이너리 파일 압축풀기

소스화일들이 tmp 디렉토리에 있다고 가정하고 설명한다. root계정으로 로그온 되어 있으면 설치화일이 어디에 있어도 상관은 없다.
[root@www /tmp]# tar zxvf imap-2000b.tar.Z
[root@www /tmp]# tar zxvf mysql-3.23.32.tar.gz
[root@www /tmp]# tar zxvf apache_1.3.14.tar.gz
[root@www /tmp]# tar zxvf php-4.0.4pl1.tar.gz

4. IMAP 설치
[root@www /tmp]# mv imap-2000b  /usr/local/imap
[root@www /tmp]# cd /usr/local/imap
[root@www /imap]# make slx  imap을 컴파일 한다

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

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

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

[root@www imap]# cd /etc/xinetd.d
[root@www xinetd.d]#  vim imapd    imapd 실행을 위한 환경설정화일을 생성시킨다.

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

[root@www xinetd.d]#  vim ipop3d

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

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

[root@www xinetd.d]# /etc/rc.d/init.d/xinetd restart    슈퍼데몬을 재가동한다.

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

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

[root@www xinetd.d]# telnet localhost 110

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2000.70 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 /tmp]#cd mysql-3.23.32
[root@www /mysql-3.23.32]#./configure --prefix=/usr/local/mysql \
                                            --with-charset=euc_kr

\(역슬래시) 표시는 입력할 내용이 많을 경우 다음줄에서 보기 좋게 입력하도록 해준다.
옵션과 옵션사이는 공백 하나만 있으면 된다.
위 옵션은 설치디렉토리를 지정하고 한글을 지원하도록 하는 옵션이다.
DB 데이터를 저장할 디렉토리를 지정을 하려면 --localstatedir=/usr/local/mysql/data 와 같이 해 준다.
혹시 실수로 환경설정을 다시 해야할 경우 make distclean 명령을 한다.

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

Thank you for choosing MySQL! 이라는 메시지가 뜰것이다.

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

[root@www /mysql-3.23.32]#make install    MySQL을 설치한다.

[root@www /mysql-3.23.32]#cd /usr/local/mysql/bin    MySQL이 설치된 디렉토리로 이동한다.
[root@www /bin]#./mysql_install_db    MySQL의 데이터를 관리할 기초정인 테이블 6개를 생성시킨다.

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

[root@www /bin]#cd /usr/local/mysql/share/mysql
[root@www /mysql]#vi mysql.server

편집기로 열어서 safe_mysql이 실행되는 라인(78 line)에 --language=korean 옵션을 추가한다.

$bindir/safe_mysqld --user=$mysql_daemon_user --pid-file=$pid_file --datadir=$datadir --language=korean &

[root@www /mysql]#chmod 755 mysql.server    실행권한을 준다.

mysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해둔다.
[root@www /mysql]# cp -p ./mysql.server /usr/local/mysql/bin
[root@www /mysql]# vim /etc/profile

# /etc/profile
# System wide environment and startup programs
# Functions and aliases go in /etc/bashrc

PATH="$PATH:/usr/X11R6/bin:/usr/local/mysql/bin"

[root@www /mysql]#mysql.server start    MySQL 데몬 시작하기, 엔터를 한번 두드리세요.
 참고로 mysql.server는 mysql이 정상적으로 실행되도록 짜여 있는 스크립트화일이다.

[root@www /mysql]#ps -ef | grep mysql    MySQL 프로세스 확인하기
[root@www /mysql]#mysql.server stop    MySQL 데몬 종료하기

6. Apache Configure(1)

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

 

7. PHP4설치

[root@www /apache_1.3.14]#cd ..
[root@www /tmp]#cd php-4.0.4pl1
[root@www /php-4.0.4pl1]#./configure --with-config-file-path=/etc/httpd --disable-debug \
--with-imap=/usr/local/imap --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.14 \
--enable-track-vars --prefix=/usr --with-regex=system --with-gettext --with-gd=shared \
--with-jpeg-dir=/usr --with-png --with-zlib --enable-pic --with-db2 --with-db3 --with-gdbm \
--enable-debugger --enable-magic-quotes --enable-safe-mode --enable-sysvsem \
--enable-sysvshm --with-exec-dir=/usr/bin  --enable-ftp --enable-inline-optimization \
--with-xml --with-ldap  --enable-shared --enable-yp

옵션에 대한 추가 설명은 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.0.4pl1]#make    컴파일을 하고,
[root@www /php-4.0.4pl1]#make install    인스톨을 한다.

 

8. Apache Configure(2), 컴파일

[root@www /php-4.0.4pl1]#cd /tmp/apache_1.3.14
[root@www /apache_1.3.14]#./configure --prefix=/usr/local/apache \
--activate-module=src/modules/php4/libphp4.a

단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두르리지 말고 위 옵션을 잘 보고 입력하세요.

[root@www /apache_1.3.14]#make    아파치를 컴파일한다.
[root@www /apache_1.3.14]#make install    아파치 인스톨

9. Zend Optimizer 설치

[root@www /apache_1.3.14]#cd /tmp
[root@www /tmp]#tar zvxf ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz
[root@www /tmp]#mkdir /usr/local/Zend
[root@www /tmp]#mv ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386 /usr/local/Zend/lib

 

10. 환경설정 파일 편집

[root@www /tmp]# cp /tmp/php-4.0.4pl1/php.ini-dist   /etc/httpd/php.ini

[root@www /tmp]#vim /etc/httpd/php.ini    php.ini 파일을 열어서 맨 마지막에 다음과 같이 Optimizer를 위한 설정을 추가한다.   

zend_optimizer.optimization_level=15
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"

[root@www /tmp]#vim /usr/local/apache/conf/httpd.conf    아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.   

360라인쯤에 Default 시작페이지 설정을 해 준다
<IfModule mod_dir.c>
DirectoryIndex index.php index.php3  index.php4 index.html index.htm
</IfModule>

720라인 정도에서 다음 내용의 주석을 풀고 원하는 환경으로 설정을 한다.

AddType application/x-httpd-php .php .php3 .ph
AddType application/x-httpd-php-source .phps

apache 데몬의 시작, 종료, 재시작을 편하게 하기 위하여 다음 작업을 한다.
[root@www /tmp]#cd /root
[root@www /root]#vim .bash_profile

PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH:$HOME/bin:/usr/local/apache/bin

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

[root@www /root]# /usr/local/apache/httpd -t    엔터를 두드리고  다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었다.

Syntex OK

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

[root@www root]# /usr/local/apache/apachectl start
/usr/bin/apachectl start: httpd started    이런 메세지가 보인다면 아파치가 정상적인 실행이 된 것이다.

 

11. Test 하기

테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다.
메인 홈페이지 경로는 아파치 환경설정파일 281라인 정도에서 DocumentRoot "/usr/local/apache/htdocs"에 의해 설정된 경로입니다.

[root@www /root]#vim /usr/local/apache/htdocs/test.php

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

<?
phpinfo();
?>


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

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

PHP Version 4.0.4pl1


System Linux linux.kyungsung.ac.kr 2.2.16-22smp #1 SMP Tue Aug 22 16:39:21 EDT 2000 i686 unknown
Build Date Nov 27 2000
Configure Command

'./configure' '--with-config-file-path=/etc/httpd' '--disable-debug' '--with-imap=/usr/local/imap' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.14' '--enable-track-vars' '--prefix=/usr' '--with-regex=system' '--with-gettext' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png' '--with-zlib' '--enable-pic' '--with-db2' '--with-db3' '--with-gdbm' '--enable-debugger' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sysvsem' '--enable-sysvshm' '--with-exec-dir=/usr/bin' '--enable-ftp' '--enable-inline-optimization' '--with-xml' '--with-ldap' '--enable-shared' '--enable-yp'

Server API Apache
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/httpd
ZEND_DEBUG disabled
Thread Safety disabled

Zend logo This program makes use of the Zend scripting language engine:
Zend Engine v1.0.3, Copyright (c) 1998-2000 Zend Technologies
    with Zend Optimizer v1.0.0, Copyright (c) 1998-2000, by Zend Technologies


속도 테스트

자신의 시스템에서 다음과 같은 프로그래밍으로 Optimizer하기전과 비교해 보세요.

<?
    $start = time();
    for ( $i = 1; $i <= 5000000; $i++ );
    $t_time = time() - $start;
    echo "Time : $t_time";
?>              
참고로 저의 PC에서는 처음 14초가 나왔는데 Optimizer를 하고난후 7초가 나왔습니다.

 

12. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기

/etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.

[root@www /root]#vim /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/mysql.server &

또는 다음과 같이 배포판처럼 부팅시 실행과정을 확인하도록 만들 수도 있다.

[root@www root]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
[root@www root]# cp -p /usr/local/mysql/bin/mysql.server /etc/rc.d/init.d/mysqld
[root@www root]# cd /etc/rc.d/rc3.d
[root@www rc3.d]# ln -s /etc/rc.d/init.d/httpd S85httpd
[root@www rc3.d]# ln -s /etc/rc.d/init.d/mysqld S85mysqld

혹시 서버를 xwindow로 부팅되도록 해두었다면 /etc/rc.d/rc5.d 디렉토리에 같은 방법으로 설정해 두면 된다

[root@www2 rc3.d]#reboot    리부팅을 시켜 잘 실행이 되는지 확인하자.

이상으로 MySQL+Apache+PHP4+IMAP+Zend Optimizer 의 설정을 모두 마쳤습니다.
부족한 내용이 많지만 이 글을 통해 리눅스에 입문하는 분들께 많은 도움이 되기를 바랍니다.

2001. 1. 28     백명훈(mhbaek@chollian.net)