RHEL 기반 5.8 64bit APM 소스 설치와 OCI8 연동

벌써 몇번째 APM 설치 글을 올리는지 모르겠네요.

최신 버전은 워낙 에러가 많아서 삽질에 삽질을 거듭했습니다.


RHEL, CentOS, Oracle Linux Server 5.8 64 bit 버전에서 설치는 32bit 버전과 좀 차이가 있어서 여러가지 문제가 있습니다.

일단 APM이 32비트 기반이라서 말이죠.

아파치도 그렇고, php도 그렇고 최신버전들은 설치도 잘 안되고, 아직까지도 각종 애플리케이션에서 지원도 잘 안되고 말이죠.

가장 안정적인 버전으로 설치를 진행 하도록 하겠습니다.


설치 환경

OS - Oracle Linux Server 5.8 64bit

MySql - 5.5.28

Apache - 2.2.23

PHP - 5.2.8

Zend Optimizer - 3.3.3



APM설치를 위한 사전 요구사항

필수 패키지 설치
# yum -y install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel cmake



Apache 설치를 위한 패키지 설치


소스설치 전에 APM관련 패키지가 yum 업데이트를 통해 설치가 되어 있을수도 있는데, yum erase 나 rpm -e 명령으로 설치된 패키지를 삭제 해줍니다.

apr, apr-util, mysql, httpd, php, php-common 삭제.


# cd /usr/local/src

# wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr-1.4.6
# make && make install

# wget http://mirror.apache-kr.org//apr/apr-util-1.5.1.tar.gz
# tar xvfz apr-util-1.5.1.tar.gz
# cd apr-util-1.5.1
# ./configure --prefix=/usr/local/apr-util-1.5.1 --with-apr=/usr/local/apr-1.4.6
# make && make install



MySQL 설치 (cmake 설치)


MySQL 만 최신 버전을 사용하는 이유는 역시 5.5 버전이 5 버전대 보다 성능이 월등히 뛰어나기 때문입니다.


 - 설치 위치 : /usr/local/mysql-5.5.28
 - 데이타 위치 : /mysql/data

1. MySQL (http://www.mysql.com/downloads/mysql/)
  # cd /usr/local/src/
  # tar xvfz mysql-5.5.28.tar.gz


2. User 및 디렉토리 생성
  # adduser -M -s /bin/false mysql
  # mkdir -p /mysql/data /mysql/log
  # chown mysql.mysql data
  # chown mysql.mysql log


3. 소스 컴파일
  - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기
  - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조
  - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

  # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.28 -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
  # make && make install


만약 언어셋을 eucKR을 사용한다면, cmake 옵션에서 변경해줍니다.

-DDEFAULT_CHARSET=euckr -DDEFAULT_COLLATION=euckr_korean_ci


4. 심볼릭 링크 생성
  # ln -s /usr/local/mysql-5.5.28 /usr/local/mysql


5. 환경 설정
  1) 권한 설정
  # cd /usr/local
  # chown -R mysql.mysql ./mysql-5.5.28
  # chown -R mysql.mysql /mysql
  2) 스크립트 구동
  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data


6. my.cnf
  1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file 밑에 아래 설정 화일을 /etc/my.cnf 로 복사합니다.
  - 64M 이하 : my-small.cnf
  - 65M ~ 256M : my-medium.cnf
  - 512M : my-large.cnf
  - 1G ~ 2G : my-huge.cnf
 
  2) my.cnf를 시스템에 맞게 설정한다.

7. 구동
  1) MySQL server 구동
  # cp -av /usr/local/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysqld
  # /etc/init.d/mysqld start

  2) 암호 설정
  # ./bin/mysqladmin -u root password <new-password> (<- 괄호없이 비번만 입력)
 
  3) 접속 테스트
  # mysql -p mysql
  mysql> 나오면 성공


8.  자동 구동 설정
  # vi /etc/rc.d/init.d/mysqld
  - 아래 부분 수정
  basedir=/usr/local/mysql
  datadir=/mysql/data
 

 # chkconfig --add mysqld



Apache 설치

1. Apache (http://httpd.apache.org/download.cgi)

 /usr/lib/libexpat.so 을 lib64에서 심볼릭 링크를 줍니다. 기존에 있는건 삭제. 이건 64bit에서만 설정해주는 거죠.
 

  # ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so


  # cd /usr/local/src/httpd-2.2.23

  # ./configure --prefix=/usr/local/httpd-2.2.23 --enable-so --with-mpm=prefork --enable-cache --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.5.1 --enable-ssl --with-ssl=/usr --enable-rewrite --enable-lib64 --libdir=/usr/lib64
  # make && make install
  # ln -s /usr/local/httpd-2.2.23 /usr/local/apache2


   - 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고.
    http://httpd.apache.org/docs/2.4/mod/worker.html
    http://httpd.apache.org/docs/2.4/mod/mod_cache.html


 mpm 옵션에 prefork 와 worker 를 선택할수가 있는데, worker 는 멀티 CPU에서 성능이 좋고, prefork는 싱글 CPU에서 성능이 좋습니다.

 각각 장단점이 있는데 그건 나중에...


2. mod_url : 1.6.2.6 설치 (최신 버전은 컴파일 과정에서 에러남)
  # wget http://caos.kldp.net/frs/download.php/6015/mod_url-apache2-1.6.2.6.tar.bz2
  # bzip2 -d mod_url-apache2-1.6.2.6.tar.bz2
  # tar -xvf mod_url-apache2-1.6.2.6.tar
  # /usr/local/httpd-2.2.23/bin/apxs -aic mod_url.c
  그러면 아파치 모듈 디렉토리 (/usr/local/httpd-2.2.23/modules)에 설치됩니다. (755 권한)
  아파치 설정 파일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.


  LoadModule redurl_module        modules/mod_url.so
  그 하단에 추가
 
  <IfModule mod_url.c>
          CheckURL On
  </IfModule>



PHP 설치

PHP설치에 앞서 라이브러리를 인식시키는 작업을 합니다.

  # echo "/lib" >> /etc/ld.so.conf
  # echo "/lib64" >> /etc/ld.so.conf
  # echo "/lib" >> /etc/ld.so.conf
  # echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
  # echo "/usr/local/apache/modules" >> /etc/ld.so.conf
  # echo "/usr/lib64" >> /etc/ld.so.conf
  # echo "/usr/local/lib64" >> /etc/ld.so.conf
  # ldconfig

php설치시에 iconv에러가 발생되기 때문에 iconv만 따로 컴파일 작업을 진행해줘야 하죠.

  # wget mirror.koreaidc.com/library/libiconv-1.13.tar.gz
  # tar xvfz libiconv-1.13.tar.gz
  # cd libiconv-1.13
  # ./configure && make && make install

심볼릭 링크
  # ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2 (32비트 일때)
  # ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2 (64비트 일때)


PHP 다운로드 및 설치

    # tar xvfz php-5.2.8.tar.gz
  # cd php-5.2.8
  # ./configure --prefix=/usr/local/php-5.2.8 --with-mysql=/usr/local/mysql-5.5.28 --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/apache2/conf --with-png-dir=/usr/lib64 --with-zlib-dir=/usr/lib64 --with-gdbm=/usr/lib64 --with-iconv=/usr/local --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-gettext --with-imap --with-imap-ssl --with-kerberos --with-curl --with-zlib --with-gd --enable-exif --enable-wddx --enable-magic-quotes --enable-calendar --enable-sockets --enable-ftp --enable-bcmath --enable-mbstring --enable-mbregex --enable-sigchild --enable-mod-charset --with-oci8=$ORACLE_HOME
  # make
  # make install


--with-oci8=$ORACLE_HOME 

  : 오라클과 PHP를 연동하는 옵션인데, root에서 export로 오라클 홈을 지정해주지 않았다면, 오라클이 설치된 경로를 수동으로 지정 해주거나 (ex> /oracle/base/product/11g) 또는 오라클 엔진이 없을 경우는 instance client를 설치해서 설치한 경로를 지정해 줘도 됩니다.


  # cp -a php.ini-recommended /usr/local/apache2/conf/php.ini
  # perl -pi -e "s/register_globals = Off/register_globals = On/g" /usr/local/apache2/conf/php.ini
  # perl -pi -e "s/allow_url_fopen = On/allow_url_fopen = Off/g" /usr/local/apache2/conf/php.ini

  # ln -s /usr/local/php /usr/local/php-5.2.8



ZendOptimizer 설치 (php 가속화)


 Zend 의 경우 3.3.9 버전이 64bit 에서 잘 로딩이 안되는 경우도 많고, 그냥 3.3.3 버전을 설치 합니다.

압축을 풀면 install.sh 스크립트가 있는데 실행 시켜서 경로만 지정해주고 next 하면 알아서 설치가 됩니다.

설치후에 자동으로 아파치를 재구동 해주고, 설치 확인 방법은 아래와 같습니다.


# /usr/local/php/bin/php -v


이걸로 APM 설치는 끝!



APM MySQL 5.5버전 Yum 설치 하기

CentOS 혹은 Oracle Linux에서 Yum을 통한 업데이트로는 MySQL 5.5 버전 설치가 불가능 합니다.

Yum repo 업데이트를 통해 다른 repo 사이트에서 받아오는 방법입니다.


## Install Remi Repository on RHEL/CentOS 6.3-6.0 ##
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## Install Remi Repository on RHEL/CentOS 5.8-5.0 ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm


리눅스 6버전과 5버전이 좀 다릅니다. 레포를 추가해준 후에 기본적이 APM 설치를 진행합니다.


우선 기본적인 APM 설치


## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install httpd mysql mysql-server php php-common


또 Yum 업데이트시 따로 모듈을 설치 해줘야 하는게 더 있죠.


    MySQL (php-mysql) – A extension for PHP applications that use MySQL databases.
    PostgreSQL (php-pgsql) – A extension for PostgreSQL database for PHP.
    MongoDB (php-pecl-mongo) – A driver for MongoDB database.
    SQLite (php-sqlite) – Extension for SQLite Database Engine.
    Memcache (php-pecl-memcache) – Memcached caching daemon.
    Memcached (php-pecl-memcached) – Memcached caching daemon.
    GD (php-gd) – GD extension for PHP application to serve graphics.
    XML (php-xml) – XML Parser for PHP applications.
    MBString (php-mbstring) – Mbstring extension is used to handle multi-byte string in PHP applications.
    MCrypt (php-mcrypt) – A Mcrypt library for PHP scripts.
    APC (php-pecl-apc) – APC module used to optimize and cache PHP code.
    CLI (php-cli) – Command-line interface for PHP.
    PEAR (php-pear) – Application Repository framework for PHP.
    PDO (php-pdo) – Database access module for PHP applications.

    OCI8 - Oracle Database access module for PHP applications (오라클이 설치되어 있고 PHP 연동이 필요한 경우)


## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo (php-oci8 php-devel)


※ php-oci8 설치시 추가 해줘야 하는것들

php-devel 패키지를 설치해줘야 pecl install 시 에러가 나지 않습니다.


# yum --enablerepo=remi,remi-test install php-devel php-oci8

# pecl install oci8


로 설치하다보면 중간에 경로가 나오는데 오라클 클라이언트가 설치 되어 있다면, 엔터치면 자동 지정해줍니다.


# vi /etc/php.ini


에 extension=oci8.so 를 넣어준다.



시작 명령에 추가 및 데몬 구동

## Enable Apache and MySQL on Run-Levels ##
# chkconfig --levels 235 httpd on
# chkconfig --levels 235 mysqld on

## Apache Commands ##
# /etc/init.d/httpd start
# /etc/init.d/httpd stop
# /etc/init.d/httpd status

## MySQL Commands ##
# /etc/init.d/mysqld start
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld status



PHP 설치 확인


phpinfo.php 를 생성해서


<?php


     phpinfo ();
?>


를 넣어주고 웹브라우저에서 엑세스 해서 설정 정보가 나오면 설치 완료.

CentOS 6.x 64bit 버전 APM 소스 설치

설치 환경
CentOS 6.3 64bit
MySQL 5.5.28
Apache 2.4.3
PHP 5.4.8


APM설치를 위한 사전 요구사항


필수 패키지 설치


# yum -y install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel cmake


Apache 설치를 위한 패키지 설치

1) APR (소스 설치)
 * Apache 2.4.X 는 APR 1.4 이상을 필요로 합니다. CentOS 6.x  yum에서는 1.3.9 패키지를 사용함으로 소스를 컴파일해서 설치.


# cd /usr/local/src
 
# wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr-1.4.6
# make && make install


# wget http://mirror.apache-kr.org//apr/apr-util-1.4.1.tar.gz
# tar xvfz apr-util-1.4.1.tar.gz
# cd apr-util-1.4.1
# ./configure --prefix=/usr/local/apr-util-1.4.1 --with-apr=/usr/local/apr-1.4.6
# make && make install




MySQL 설치 (cmake 설치)

 - 설치 위치 : /usr/local/mysql-5.5.28
 - 데이타 위치 : /mysql/data

1. MySQL (http://www.mysql.com/downloads/mysql/)

  # cd /usr/local/src/
  # tar xvfz mysql-5.5.28.tar.gz


2. User 및 디렉토리 생성
  # adduser -M -s /bin/false mysql
  # mkdir -p /mysql/data /mysql/log
  # chown mysql.mysql data
  # chown mysql.mysql log


3. 소스 컴파일
  - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기
  - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조
  - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

  # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.28 -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=euckr \

  -DDEFAULT_COLLATION=euckr_korean_ci -DWITH_EXTRA_CHARSETS=all
  # make && make install
 
  (UTF8 설정시 옵션)
  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci


4. 심볼릭 링크 생성
  # ln -s /usr/local/mysql-5.5.28 /usr/local/mysql
 
5. 환경 설정
  1) 권한 설정

  # cd /usr/local
  # chown -R mysql.mysql ./mysql-5.5.28
  # chown -R mysql.mysql /mysql


  2) 스크립트 구동

  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data


6. my.cnf
  1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file 밑에 아래 설정 화일을 /etc/my.cnf 로 복사합니다.
  - 64M 이하 : my-small.cnf
  - 65M ~ 256M : my-medium.cnf
  - 512M : my-large.cnf
  - 1G ~ 2G : my-huge.cnf
 
  2) my.cnf를 시스템에 맞게 설정합니다.

7. 구동
  1) MySQL server 구동
  # cp -av /usr/local/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysqld
  # /etc/init.d/mysqld start

  2) 암호 설정
  # ./bin/mysqladmin -u root password <new-password> (<- 괄호없이 비번만 입력)
 
  3) 접속 테스트
  # mysql -p mysql
  mysql> 나오면 성공


8.  자동 구동 설정
  # vi /etc/rc.d/init.d/mysqld
  - 아래 부분 수정
  basedir=/usr/local/mysql
  datadir=/mysql/data


  # chkconfig --add mysqld




Apache 설치

1. Apache (http://httpd.apache.org/download.cgi)
  # cd /usr/local/src/httpd-2.4.3

  # ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so
  #./configure --prefix=/usr/local/httpd-2.4.3 --enable-so --with-mpm=prefork --enable-cache --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.4.1 --enable-ssl --with-ssl=/usr --enable-rewrite --enable-lib64 --libdir=/usr/lib64
 
   - 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고.
    http://httpd.apache.org/docs/2.4/mod/worker.html
    http://httpd.apache.org/docs/2.4/mod/mod_cache.html
 
  # make && make install
  # ln -s /usr/local/httpd-2.4.3 /usr/local/apache2


2. mod_url : 1.6.2.6 설치 (최신 버전은 컴파일 과정에서 에러남)

  # wget http://caos.kldp.net/frs/download.php/6015/mod_url-apache2-1.6.2.6.tar.bz2
  # bzip2 -d mod_url-apache2-1.6.2.6.tar.bz2
  # tar -xvf mod_url-apache2-1.6.2.6.tar
  # /usr/local/httpd-2.4.3/bin/apxs -aic mod_url.c

  그러면 아파치 모듈 디렉토리 (/usr/local/httpd-2.4.3/modules)에 설치됩니다. (755 권한)


  아파치 설정화일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.
  LoadModule redurl_module        modules/mod_url.so
  그 하단에 추가
 
  <IfModule mod_url.c>
          CheckURL On
  </IfModule>




PHP 설치
  # wget http://kr1.php.net/get/php-5.4.8.tar.gz/from/this/mirror
  # tar xvfz php-5.4.8.tar.gz
  # cd php-5.4.8.tar.gz
  # ./configure --prefix=/usr/local/php-5.4.8 --with-apxs2=/usr/local/httpd-2.4.3/bin/apxs --with-mysql=/usr/local/mysql-5.5.28 --with-config-file-path=/usr/local/httpd-2.4.3/conf --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib=/usr --enable-mbstring --enable-exif
  # make && make install




apache 추가 환경설정
  # vi httpd.conf
  - 아래 부분 삽입
   <IfModule dir_module>
      DirectoryIndex index.html index.htm index.php
  </IfModule>
 
- 아래 주석 해제 및 삽입
  <IfModule mime_module>
      AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
      AddType application/x-httpd-php-source .phps
  </IfModule>




PHP 환경설정
  # cd /usr/local/src/php-5.4.8
  # cp php.ini-production /usr/local/httpd-2.4.3/conf/php.ini
  # cd /usr/local/httpd-2.4.3/conf
  # vi php.ini 




Apache 자동 구동 설정
   # cd /usr/local/httpd-2.4.3/bin
   # cp apachectl /etc/rc.d/init.d/httpd
 
  - Apache Config test
  # /etc/rc.d/init.d/httpd configtest
 
  - Apache Start
  # /etc/rc.d/init.d/httpd start


최신버전이 좋기만 한것도 아니고 실제로 PHP의 경우는 신버전이 ZendOptimizer 설치가 되질 않습니다....

거의 쓸 일은 없겠지만 설치 테스트하는 겸 해서 여기 저기 참고해서 한번 만들어 봤습니다.

  1. 시스템 메모 크기느 ㄴ어떻게 아나요???

  2. 아파치 설정화일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.
    LoadModule redurl_module modules/mod_url.so
    그 하단에 추가

    <IfModule mod_url.c>
    CheckURL On
    </IfModule>


    /etc/httpd/에서 vi 로 httpd.conf 여기에서 하라는 말씀이신가요?
    LoadModule redurl_module modules/mod_url.sO 아무리 찾아봐도 이런건 있지가 않아요
    자세한 설명 좀 부탁드릴게요. 부탁드리겠습니다!

  3. oci8 연동까지 하신 것 있나요?
    있으시면 좀 올려주시면 감사하겠습니다.