컴파일로 APM 설치해보기

6.25입니다. 나라를 위해 싸우신 모든 분들께 경의를 표합니다.


편의상 존칭을 생략합니다.


2009/05/05 - [Digital 이야기/S/W 이야기] - CentOS APM설치! yum으로 간단히 해결하기


아주 오래전에 이 블로그에서 CentOs에서 yum으로 APM을 간단히 설치 하는 방법을 알아 보았다.

그 포스트가 작성된지 4년이 넘은 시점에서 이제 컴파일로 APM을 설치하는 방법을 알아보자.


조금만 관심이 있다면 CentOs뿐 아니라 각 배포판 마다 제공하는 패키지 관리자를 이용해서 쉽게 설치가 가능하다는걸 알고 있을 것이다.


소스를 이용해 일일이 컴파일해가며 설치하는 것은처음 접하는 사람에게는 쉽지않을 뿐더러 특별한 기능이나 버전을 쓴다거나 하는 이유가 없다면! 즉, 보편적인 옵션으로 설치해서 쓸 목적이라면  별로 권장 하고 싶지는 않다. 다만, 배우고자 하는 이유에서라면  꼭해봐야 하는 단계이니 도전해보자.



참고로 이 포스트에서 사용된 리눅스는 CentOs 6.4 32bits이고 설치시  minimal+기본만 설치한 상태로 시작했다. 또한 APM아래와 같이 흔히 쓰이는 안정적인 버전으로 골랐다. (SUlinux에서 사용하는 버전 참고했음)

httpd-2.2.24

php-5.2.17

mysql-5.0.96

그리고 컴파일설치는  컴퓨터의 성능에 따라서 상당한 시간이 걸릴 수 있고, 아주 어이없는 실수나 오타 때문에도 분명 몇번이고 다시 하게 될테니까 급하게 생각하지 말고 꼼꼼히 해보도록 하자.


자 그럼 출발!

구글에 인사해보자.

# ping -c3 google.com

특별한 작업을 하지 않았다면 대부분 안될테데 아래와 같이 파일을 열어서 수정하도록 하자
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT=no 를
ONBOOT=yes 로 고쳐주자.
** 편집은 i키를 누르고 수정하면되고 esc키를 눌러 편집 종료, :wq 라고 입력하고 엔터 하면 저장 하고 종료된다. 


수정까지 하고  저장 했다면 아래와 같이 네트워크를 다시 시작해주자.. IP받아오는것을 알 수가 있다
# /etc/rc.d/init.d/network restart

그리고다시 핑테스트를 해보고나서  핑이 잘 뜨면 인터넷은 잘 된다고 보고 일단 업데이트부터 하자!  


# yum update

의존성 문제도 그렇고 일단 업데이트부터 하는게 좋겠다. 



또한 이번엔 컴파일로 설치를 하므로 아래와 같은 컴파일러등도 준비 해야한다.

# yum -y install gcc gcc-c++ compat-gcc-34 compat-gcc-34-c++ compat-gcc-34-g77 make ncurses-devel
# yum -y install ncurses-devel gd-devel libxml2-devel openssl-devel libcurl-devel gmp-devel
# yum -y install expat-devel gettext-devel bzip2-devel



기타 필수 라이브러리 설치

이제 필요한 것들을 설치할 차례인데 버전만 맞다면 인터넷에서 rpm패키지를 다운받아 설치해도되고 아래처럼 직접 컴파일해서 설치해도된다.

# mkdir /usr/src/apm


# cd /usr/src/apm

# wget http://sourceforge.net/projects/re2c/files/latest/download

# tar zxvf re2c-0.13.5.tar.gz

# cd /usr/src/apm/re2c-0.13.5

# ./configure

# make && make install


# cd /usr/src/apm

# wget http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz

# tar zxvf bison-2.4.1.tar.gz

# cd /usr/src/apm/bison-2.4.1

# ./configure

# make && make install


# cd /usr/src/apm

# wget http://prdownloads.sourceforge.net/flex/flex-2.5.4a.tar.gz?download

# tar zxvf flex-2.5.4a.tar.gz

# cd /usr/src/apm/flex-2.5.4

# ./configure

# make && make install


# cd /usr/src/apm

# wget http://sourceforge.net/projects/mhash/files/latest/download

# tar xvf mhash-0.9.9.9.tar.bz2

# cd /usr/src/apm/mhash-0.9.9.9

# ./configure

# make && make install


# cd /usr/src/apm

# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz

# tar zxvf libmcrypt-2.5.7.tar.gz

# cd /usr/src/apm/libmcrypt-2.5.7

# ./configure

# make && make install


# wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

# tar zxvf bzip2-1.0.6.tar.gz

# cd /usr/src/apm/bzip2-1.0.6

# make && make install

* 뿌띠를 이용하면 #을 제외한 각줄을 복사해 뿌띠에서 마우스 오른쪽을 클릭하면 콘솔에 붙여 넗기가 되니 타이핑하는 수고를 덜 수 있다. 오타 때문에 고생 할 필요도없고.. (파이어폭스 말고 크롬으로 긁으세요)

** wget할때 링크에 버전이 없는 링크인 경우 위에 적시한 파일 이름이 다를 수 있으니 압축 해제나 cd할때 주의를 하기 바란다. (re2c, mhash)


mysql

컴파일 및 설치

# cd /usr/src/apm

# wget ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.96.tar.gz

# tar zxvf mysql-5.0.96.tar.gz

# cd /usr/src/apm/mysql-5.0.96

# useradd -M -s /bin/false mysql

# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all

# make && make install


설정

# vi ~/.bash_profile

굵은글씨 추가

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

수정을 다했다면 저장하고 나온다.


# source ~/.bash_profile

# cp ./support-files/my-huge.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf'? y


아래처럼 수정할 내용이 있다면  없다면 통과

# vi /etc/my.cnf 

기본엔진으로 MyISAM을 원한다면 아래와같이 추가, innodb을 원한다면 그냥둔다

[mysqld]

default-storage-engine = MyISAM


기본 캐릭터셋 바꾸고 싶다면 아래와 같이 추가 예) euckr

[client]

default-character-set = euckr


[mysqld]

init_connect="SET collation_connection = euckr_korean_ci"

init_connect="SET NAMES euckr"

init-connect = SET NAMES euckr

skip-character-set-client-handshake 

default-character-set = euckr

character-set-server = euckr

collation-server = euckr_korean_ci 


[mysqldump]

default-character-set = euckr


[mysql]

default-character-set = euckr

수정을 다했다면 저장하고 나온다.


부팅 후 자동실행을 위한 설정과 기본 db생성, 권한설정

# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

# chkconfig --level 2345 mysqld on

# chkconfig --list | grep mysqld

mysqld  0:off 1:off 2:on 3:on 4:on 5:on 6:off


# /usr/local/mysql/bin/mysql_install_db --user=mysql

# chown -R root /usr/local/mysql/bin

# chgrp -R mysql /usr/local/mysql/bin


실행확인

# /etc/init.d/mysqld start

Starting MySQL. SUCCESS!

# netstat -lntp

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      xxxx/mysqld


루트 비밀번호 설정과 기타 설정

# mysqladmin -u root password 비밀번호

mysql은 끝


# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

# echo "/usr/lib/openssl"  >> /etc/ld.so.conf

# /sbin/ldconfig



아파치

컴파일 및 설치

# cd /usr/src/apm

# wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.2.24.tar.gz

# tar zxvf httpd-2.2.24.tar.gz

# cd /usr/src/apm/httpd-2.2.24

# ./configure --prefix=/usr/local/httpd --enable-module=so --enable-shared=max --enable-rewrite --enable-ssl

# make && make install


환경설정

# vi /usr/local/httpd/conf/httpd.conf

#ServerName www.example.com:80

  => 예) ServerName localhost:80 

 일단저장하고 나온다.


자동실행을 위해 밑밥깔기

# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

# vi /etc/init.d/httpd

#!/bin/sh

# chkconfig: - 85 15 

# Licensed to the Apache Software Foundation (ASF) under one or more


위에 굵은 부분을 추가하고 저장한 뒤 나온다. (주의) # 포함이다.


자동실행 설정

# chkconfig --add httpd

# chkconfig --level 2345 httpd on

# chkconfig --list | grep httpd

httpd  0:off 1:off 2:on 3:on 4:on 5:on 6:off


실행확인

# /etc/init.d/httpd start

# netstat -lntp

tcp        0      0 :::80                       :::*                        LISTEN      xxx/httpd


httpd.conf에서 설정할게 있지만 php마저 하고 하도록 하자

httpd도 일단 끝


php

컴파일 및 설치

# cd /usr/src/apm

# wget http://museum.php.net/php5/php-5.2.17.tar.gz

# tar zxvf php-5.2.17.tar.gz

# cd /usr/src/apm/php-5.2.17

./configure \

--prefix=/usr/local/php \

--with-libdir=lib \

--with-apxs2=/usr/local/httpd/bin/apxs \

--with-config-file-path=/usr/local/httpd/conf \

--with-mysql=/usr/local/mysql \

--with-mysqli=/usr/local/mysql/bin/mysql_config \

--with-pdo-mysql=/usr/local/mysql \

--with-zlib \

--with-gd \

--with-ttf \

--with-png-dir=/usr \

--with-libexpat-dir=/usr \

--with-libxml-dir=/usr \

--with-gmp \

--with-mcrypt \

--with-mhash \

--with-gettext \

--with-jpeg-dir \

--with-freetype-dir \

--with-ttf \

--with-iconv \

--with-openssl \

--with-curl=/usr \

--with-xpm-dir=/usr \

--with-bz2 \

--enable-safe-mode \

--enable-magic-quotes \

--enable-bcmath \

--enable-gd-native-ttf \

--enable-sysvmsg \

--enable-sysvsem \

--enable-sysvshm \

--enable-wddx \

--enable-inline-optimization \

--enable-mbstring \

--enable-mbregex \

--enable-ftp \

--enable-exif \

--enable-calendar \

--enable-sockets \

--enable-mod-charset \

--enable-zend-multibyte \

--enable-soap \

--enable-shmop \

--enable-zend-multibyte \

--disable-debug \

--disable-rpath 

*혹시 64bit라면 각종 경로를 그에 맞도록 설정 해줘야 한다.

** 사람 마다 필요한 옵션이 다르다보니 위 옵션목록에 전혀 필요 없는것이 있는가하면 필요한것이 빠진것도 있을 것이다. 본인이 일하면서 필요해서 사용했던 것들을 주로 적었다. 익숙해지면 필요한 부분을 설치하거나 빼도록 하자.


그리고 타이핑 할  생각하니 무시무시하겠지만 위에 알려준 팁대로 뿌띠를 이용하면 순식간이다. 적어도 본인이 여기에 적어둔 것들은 본인이 직접해본 결과물들이니 오타때문에 고생할 일은 없을 것이다.


configure가 끝나고 박스에 Attention 어쩌고 나오면 뭔가 잘못 된거니까 (라이센스 박스만 나와야 한다.) 아래처럼 해서 문제가 뭔지 알아 보도록 하고 다시 시도하자

# vi debug.log

* 본인도 컴파일 하다보면 분명 있는데 특정 라이브러리가 없다거나 하는 경우가 있는데 마지막 옵션인 --disable-rpath를 제외하고 시도하자.


컴파일 설치

# make && make install


환경설정

# cp php.ini-dist /usr/local/httpd/conf/php.ini

# vi /usr/local/httpd/conf/httpd.conf

<IfModule dir_module>

   DirectoryIndex index.html index.htm index.php

</IfModule>


<IfModule mime_module>

   AddType application/x-httpd-php .htm .html .php .ph php3 .php4 .phtml .inc

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

</IfModule>


저장하고 나온다.

* 일단 php.ini는 수정 할게 없고 따로 필요한 부분이 있다면 수정 하면 된다.


# /etc/init.d/httpd stop
# /etc/init.d/httpd start

아파치를 재시작하면 기본적인 모든것이 끝


일단 테스트

# vi /usr/local/httpd/htdocs/check.php

<?php phpinfo(); ?>

저장하고 나온 다음 브라우저로 확인해보자

* 방화벽에 HTTP 잠겨 있으면 풀어주길 바란다. 방화벽 막혀 있는데 안된다고 하는 사람 없길.


Zend Optimizer 설치

http://www.zend.com/en/products/guard/downloads-prev

다운 받도록 하자 회원가입도 해야하고 로그인도 해야 하지만 배포는 오로지 자기들만 할 수 있다니 가서 받아야 한다. (잘 찾아보면 여기저기 많기는 하다.)

각자 자신에게 맞는 버전을 받으면 되겠다. 본인은 ZendOptimizer-3.3.9-linux-glibc23-i386.tar 를 받았다.


# cd /usr/src/apm 

# wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

# cp ./ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/httpd/modules

* 64비트용은 http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz


# vi /usr/local/httpd/conf/php.ini

제일 마지막 부분에 아래처럼 추가하자


[Zend]

zend_optimizer.version=3.3.9

zend_extension=/usr/local/httpd/modules/ZendOptimizer.so


; Local Variables:

; tab-width: 4

; End:


설정

# vi ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin/

수정을 다했다면 저장하고 나온다.


아파치 재시작 후 아래처럼 확인해보고 브라우저로도 꼭 확인해보자

# source ~/.bash_profile

# /etc/init.d/httpd stop

# /etc/init.d/httpd start

# php -v

PHP 5.2.17 (cli) (built: Jun 26 2013 01:17:54)

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies


테스트 설치 환경

RAM :  1024MB

HDD : 20GB

OS image :CentOS-6.4-i386-bin-DVD1, CentOS-6.4-i386-bin-DVD2



이 포스트를 작성하는데 테스트한다고 적어도 50번은 가까이 설치를 해본것 같습니다. 배포판도 CentOs, Sulinux, 데비안, 우분투에서 모두 테스트 해봤고 잘 동작하네요. 여기선 CentOS에서 작업하는 예를 들었지만 다른 배포판도 센스가 있으신 분들은 별다른 어려움 없이 설치 하실 수 있으리라고 봅니다.

그리고 역시나 보안에 대해서는 일절 다루지 않았습니다. 보안과 관련된 문서를 찾아 보시고 꼭 설정도 해보시길 바랍니다.

원래 목표는 HTTPS을 위하 SSL설치까지 였는데 SSL 인증서 설치부분은 이어서 수정을 할지 다른 포스트로 새로 작성할지 좀 생각해봐야 되겠습니다.

아무쪼록 리눅스 공부하시는데 조금이라도 도움이 되셨기를 바랍니다.



Posted by TheBits