DigiMoon 맘대로 닦고 조이고 기름치는 재미가 있는 DigiMoon만의 기억 저장소

Posted
Filed under 컴퓨터 탐구/리눅스
작성자: 주인장 디지문
(http://www.digimoon.net/)


RHEL 4.8 x86_64
MySQL 5.5.13
Apache 2.0.64
PHP 5.2.11
ZendOptimizer 3.3.9


개발 도구 설치(up2date --show-groups 커맨드로 개발 도구 관련 패키지그룹 전체적으로 확인한 뒤 설치)
[root@localhost ~]# up2date -i "@Development Libraries" "@Development Tools" "@Base"



APM 설치에 앞서 rpm으로 이미 설치되어 있는 APM부터 삭제하고 시작
[root@localhost ~]# rpm -e --nodeps `rpm -qa | egrep -ir "mysql|http|php"`


시스템 시간 동기화
[root@localhost ~]# rdate -s time.bora.net ; clock -w




1) MySQL 설치

[root@localhost mysql-5.5.13]# up2date -i ncurses ncurses-devel


[root@localhost mysql-5.5.13]# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-mysql-user=mysql --with-extra-charsets=all --enable-thread-safe-client

※ 뒤에 아파치를 prefork 방식으로 설치하는 경우(--with-mpm=prefork 옵션 시) MySQL 컴파일 옵션에서 --enable-thread-safe-client 옵션 제거
euckr로 설치할 경우 MySQL 3.x.x ~ 4.0.x에서는 --with-charset=euc_kr, 4.1.x부터는 --with-charset=euckr, utf8로 설치할 경우 --with-charset=utf8

[root@localhost mysql-5.5.13]# make ; make install


[root@localhost mysql-5.5.13]# cp /usr/local/mysql/share/mysql/my-large.cnf /etc/my.cnf
[root@localhost mysql-5.5.13]# /usr/local/mysql/bin/mysql_install_db
[root@localhost mysql-5.5.13]# groupadd -g 27 mysql
[root@localhost mysql-5.5.13]# useradd -u 27 -g 27 -M mysql
[root@localhost mysql-5.5.13]# chown -R mysql.mysql /usr/local/mysql/data
[root@localhost mysql-5.5.13]# /usr/local/mysql/bin/mysqld_safe &
[root@localhost mysql-5.5.13]# /usr/local/mysql/bin/mysqladmin -u root password 123456
[root@localhost mysql-5.5.13]# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql-5.5.13]# chmod 700 /etc/rc.d/init.d/mysqld
[root@localhost mysql-5.5.13]# chkconfig --add mysqld
[root@localhost mysql-5.5.13]# chkconfig --level 35 mysqld on
[root@localhost mysql-5.5.13]# /etc/rc.d/init.d/mysqld {start|stop|restart|reload|force-reload|status}



2) Apache 설치

[root@localhost httpd-2.0.64]# up2date -i expat expat-devel db4 db4-devel compat-db


expat, expat-devel, db4, db4-devel, compat-db 32bit 패키지가 함께 설치되어 있다면 아래와 같이 삭제
[root@localhost httpd-2.0.64]# rpm -e --nodeps expat-1.95.7-4.i386 expat-devel-1.95.7-4.i386 db4-4.2.52-7.3.el4.i386 db4-devel-4.2.52-7.3.el4.i386 compat-db-4.1.25-9.i386

※ 패키지 버전명이 조금씩 다를 수 있음에 유의, 패키지 버전명 뒤에 .i386을 붙이면 i386버전을 찾아 지운다. x86_64버전을 지우고 싶다면 .x86_64라고 뒤에 붙여주면 된다.

아파치 소스가 본래 32비트 리눅스 라이브러리 경로(/lib, /usr/lib)를 참고토록 빌드되어 있기 때문에 /usr/lib64에 위치한 라이브러리를 /usr/lib에 링크해 주는 작업을 한다.
[root@localhost httpd-2.0.64]# ln -sf /usr/lib64/libexpat.so /usr/lib/libexpat.so
[root@localhost httpd-2.0.64]# ln -sf /usr/lib64/libdb-4.2.so /usr/lib/libdb-4.2.so


컴파일 설치
[root@localhost httpd-2.0.64]# ./configure --prefix=/usr/local/apache --with-mpm=worker --enable-mods-shared=all --enable-ssl
[root@localhost httpd-2.0.64]# make
[root@localhost httpd-2.0.64]# make install


init 구동 스크립트 작성
[root@localhost httpd-2.0.64]# echo "--- /etc/rc.d/init.d/apachectl ---" >> /usr/local/apache/bin/apachectl
[root@localhost httpd-2.0.64]# echo "# chkconfig: - 92 92 " >> /usr/local/apache/bin/apachectl
[root@localhost httpd-2.0.64]# echo "# description: Apache Web Server Version : 2.0.64 " >> /usr/local/apache/bin/apachectl
[root@localhost httpd-2.0.64]# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/
[root@localhost httpd-2.0.64]# chmod 700 /etc/rc.d/init.d/apachectl
[root@localhost httpd-2.0.64]# chkconfig --add apachectl
[root@localhost httpd-2.0.64]# chkconfig --level 35 apachectl on
[root@localhost httpd-2.0.64]# /etc/rc.d/init.d/apachectl {start|restart|graceful|stop}




3) PHP 설치

PHP는 설치에 앞서 컴파일 옵션에서 요구되는 라이브러리 패키지들부터 설치해 두어야 한다.
[root@localhost php-5.2.11]# up2date -i openssl openssl-devel mhash mhash-devel libtool libtool-ltdl libtool-ltdl-devel imap-devel imap zlib-devel zlib freetype-devel freetype libpng-devel libpng libjpeg-devel libjpeg libtiff-devel libtiff gd-devel gd pcre-devel pcre libxml-devel libxml libxml2-devel libxml2 gdbm-devel gdbm ncurses-devel ncurses curl-devel curl expat-devel expat bzip2-devel bzip2-libs bzip2 uw-imap-devel libc-client libc-client-devel libmcrypt libmcrypt-devel libidn libidn-devel libc-client libc-client-devel krb5-auth-dialog krb5-devel krb5-libs krb5-server krb5-workstatio


RHEL4에 기본 포팅되어 있지 않은 rpm 패키지들의 경우 rpmforge 등에서 받아 설치한다(http://pkgs.org 추천).
libmcrypt
libmcrypt-devel
libmhash
libmhash-devel

64비트 리눅스에서는 아파치 설치 때 해준 것과 같이 라이브러리 링크 작업 역시 해 주어야 한다.
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libpng12.so /usr/lib/libpng12.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libfreetype.so /usr/lib/libfreetype.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libtiff.so /usr/lib/libtiff.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libtiffxx.so /usr/lib/libtiffxx.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libpng.so /usr/lib/libpng.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libpng12.so /usr/lib/libpng12.so
[root@localhost php-5.2.11]# ln -sf /usr/lib64/libgd.so /usr/lib/libgd.so
[root@localhost php-5.2.11]# ln -s /usr/lib64/libc-client.a /usr/lib/libc-client.a


아래 스크립트 구문 실행(64bit 기반에서 kerberos 링크 처리)
#!/bin/sh

KRB5_LIBS_64_FILES=`rpm -ql krb5-libs.x86_64 | grep "/usr/lib64/lib"`
  for FILE_LISTS_TMP in $KRB5_LIBS_64_FILES ; do
        if [ ! -L $FILE_LISTS_TMP ]; then
           KRB5_LIBS_32_FILES=`echo $FILE_LISTS_TMP | sed -e 's/\/lib64\//\/lib\//g' | awk -F"." '{print $1"."$2}'`
           ln -s $FILE_LISTS_TMP $KRB5_LIBS_32_FILES
        fi
   done


라이브러리 작업이 다 끝났으면 PHP 컴파일 설치
[root@localhost php-5.2.11]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --enable-mod-charset --enable-safe-mode --enable-sigchild --enable-magic-quotes --with-libxml-dir --with-openssl --with-zlib --with-zlib-dir --with-bz2 --enable-calendar --with-curl --enable-dba --with-gdbm --enable-exif --enable-ftp --with-gd --with-jpeg-dir --with-png-dir  --with-ttf --with-freetype-dir --enable-gd-native-ttf --with-gettext --with-imap --with-imap-ssl --with-kerberos --enable-mbstring --with-mhash --with-mcrypt --with-mysql=/usr/local/mysql --enable-sockets --with-regex=php --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zend-multibyte  --with-config-file-path=/usr/local/apache/conf


[root@localhost php-5.2.11]# make ; make install


make install 시 아래와 같은 에러가 출력되므로
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

-> PHP 설치 뒤 /usr/local/php/lib/php/.channel 디렉토리 삭제하거나
/usr/local/php/bin/pear update-channels 커맨드 실행하면 해결됨

[root@localhost php-5.2.11]# cp php.ini-dist /usr/local/apache/conf/php.ini


/usr/local/apache/conf/httpd.conf 파일의 874줄 정도 부분에 아래 내용 추가/수정(붉은색 텍스트가 추가 부분)
AddType application/x-compress .Z
AddType application/x-httpd-php .htm .html .php .ph php3 .php4 .phtml .inc
AddType application/x-httpd-php-source .phps
AddType application/x-gzip .gz .tgz




4) ZendOptimizer 3.3.9 설치

ZendOptimizer 3.3.3 이하 버전과는 달리 3.3.9는 install.sh 설치 스크립트를 제공하지 않고 ZendOptimizer.so 파일만을 제공한다. 아파치를 prefork 옵션으로 설치했을 시에만 연동 가능한 파일임에 주의한다. worker 옵션으로 설치했으면 3.3.3을 설치한다.
(본 문서에서는 아파치를 worker 방식으로 설치하는 케이스로 다루고 있으므로 여태 그대로 따라 진행해 왔다면 3.3.9는 설치 불가)

/usr/local/apache/conf/php.ini 파일 맨 아래에 아래 내용 추가(ZendOptimizer.so 파일은 어느 경로에 위치시켜도 무방)
[Zend]
zend_optimizer.version=3.3.9
zend_extension=/usr/local/apache/modules/ZendOptimizer.so


아파치 리스타트
[root@localhost ~]# service apachectl restart


APM 버전이 아래와 같이 확인된다면 잘 설치된 것이다.
[root@localhost ~]# /usr/local/mysql/bin/mysql -V
/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.5.13, for linux2.6 (x86_64) using readline 5.1
[root@localhost ~]# /usr/local/apache/bin/apachectl -v
Server version: Apache/2.0.64
Server built:   Jun 20 2011 14:56:55
[root@localhost ~]# /usr/local/php/bin/php -v
PHP 5.2.11 (cli) (built: Jun 20 2011 15:26:38)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
[root@localhost ~]#

Creative Commons License
2011/06/24 10:51 2011/06/24 10:51

간만에 APM 컴파일 삽질을 하게 되었다.PHP 5.2.11까지 연동 설치하고 ZendOptimizer 3.3.9를 연동 시도해 보았는데 요 놈은 install.sh 파일이 없고 각 PHP 버전에 맞는 ZendOptimizer.so 파일만 제공하고 있다.(여담이지만 2010년 12월 릴리즈되기 시작한 PHP 5.3.x부터는 ZendOptmizer가 더 이상 지원치 않고 ZendGuardLoader라는 걸 연동하도록 되어 있다)php.ini 파일에...