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데몬
실행하기
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
주의: 지금부터의 작업은 반드시 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 포트를 사용한다.
[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
데몬 종료하기
[root@www /mysql]#cd /tmp/apache_1.3.14 초기에
아파치소스 압축을 풀어놓은 곳으로 이동.
[root@www /apache_1.3.14]#./configure
--prefix=/usr/local/apache
[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 인스톨을 한다.
[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 아파치
인스톨
[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
[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 이런 메세지가
보인다면 아파치가 정상적인 실행이 된 것이다.
테스트 화일을 만들어 확인을 해 보세요. 물론
홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다.
메인 홈페이지 경로는 아파치 환경설정파일 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 |
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)