○ CentOS 64bit Apache PHP 컴파일 설치

mysql은 rpm을 사용

 

▷ PHP 관련 라이브러리 설치

- rpm 과 연동하여 컴파일을 해도 되지만 rpm 업데이트시에 정상 동작을 보장할수 없다

버그패치 정도의 업데이트가 아닌 라이브러리의 버전 업데이트는 Apache의 기동이

되지 않는 상황이 발생할수 있다

▷ 라이브러리 설치

- 설치할 소스 : zlib-1.2.5 openssl-0.9.8op freetype-2.3.12 jpegsrc.v8a.tar.gz

libpng-1.2.39 libxml2-2.6.30 expat-2.0.1 fontconfig-2.8.0 gd-2.0.35

- 설치되는 소스는 /usr/local 에 설치될 것이며 각각의 설치된 라이브러리를 등록 시켜야 한다

 

[root@web ~]# rpm -qa | grep mysql
mysql-5.0.77-4.el5_5.3
mysql-5.0.77-4.el5_5.3
mysql-devel-5.0.77-4.el5_5.3
mysql-devel-5.0.77-4.el5_5.3mysql-5.0.77-4.el5_5.3
mysql-5.0.77-4.el5_5.3
mysql-devel-5.0.77-4.el5_5.3
mysql-devel-5.0.77-4.el5_5.3

 

PHP 컴파일 설치시에 /usr/local/lib에 설치된 라이브러리를 /usr/local/lib64에서 찾으려고 하는 문제가 있다

PHP설치 옵션의 PATH를 /usr/local/lib으로 지정해도 라이브러리를 찾을 수 없다는

Error 가 발생한다

다음과 같이 심볼릭 링크로 설정하자

[root@web5 ~]# ln -s /usr/local/lib /usr/local/lib64

 

 

- zlib 설치

다운로드 URL : http://www.zlib.net

 

[root@web ~]# cd /usr/local/src/

[root@web6 src]# wget http://zlib.net/zlib-1.2.5.tar.gz

[root@web6 src]# tar xvfz zlib-1.2.5.tar.gz

[root@web6 src]# cd zlib-1.2.5

[root@web6 zlib-1.2.5]# ./configure --shared --prefix=/usr/local

[root@web6 zlib-1.2.5]# make

[root@web6 zlib-1.2.5]# make install

[root@web6 zlib-1.2.5]# ldconfig

[root@yt-web6 zlib-1.2.5]# cd ..

 

- openssl 설치

다운로드 URL : http://www.openssl.org

[root@yt-web6 zlib-1.2.5]# cd ..

[root@web6 src]# wget  http://www.openssl.org/source/openssl-0.9.8o.tar.gz

[root@web6 src]# tar xvfz openssl-0.9.8o.tar.gz

[root@web6 src]# cd openssl-0.9.8o

[root@web6 openssl-0.9.8o]# ./config --prefix=/usr/local zlib shared

[root@web6 openssl-0.9.8o]# make

[root@web6 openssl-0.9.8o]# make install

[root@yt-web6 openssl-0.9.8o]# cd ..

 

- freetype 설치

다운로드 URL : http://freetype.sourceforge.net/index2.html

[root@web6 src]# wget http://sourceforge.net/projects/freetype/files/freetype2/2.3.12/freetype-2.3.12.tar.gz/download

[root@web6 src]# tar xvfz freetype-2.3.12.tar.gz

[root@web6 src]# cd openssl-0.9.8o

[root@yt-web6 freetype-2.3.12]# ./configure --prefix=/usr/local --disable-static

[root@yt-web6 freetype-2.3.12]# make

[root@yt-web6 freetype-2.3.12]# make install

[root@yt-web6 freetype-2.3.12]# ldconfig

[root@yt-web6 freetype-2.3.12]# cd ..

 

- jpeg 설치

다운로드 URL : http://www.ijg.org

[root@web6 src]# wget http://www.ijg.org/files/jpegsrc.v8b.tar.gz

[root@web6 src]# tar xvfz jpegsrc.v8a.tar.gz

[root@web6 src]# cd jpeg-8a

[root@yt-web6 jpeg-8a]# ./configure --prefix=/usr/local --enable-shared --enable-static

[root@yt-web6 jpeg-8a]# make

[root@yt-web6 jpeg-8a]# make install

[root@yt-web6 jpeg-8a]# ldconfig

[root@yt-web6 jpeg-8a]# cd ..

 

- libpng 설치

다운로드 URL : http://libpng.sourceforge.net

[root@web6 src]# wget http://sourceforge.net/projects/libpng/files/libpng-stable/1.2.39/libpng-1.2.39.tar.gz/download

[root@web6 src]# tar xvfz libpng-1.2.39.tar.gz

[root@web6 src]# cd libpng-1.2.39

[root@yt-web6 libpng-1.2.39]# ./configure --prefix=/usr/local

[root@yt-web6 libpng-1.2.39]# make

[root@yt-web6 libpng-1.2.39]# make install

[root@yt-web6 libpng-1.2.39]# ldconfig

[root@yt-web6 libpng-1.2.39]# cd ..

 

- libxml2설치

다운로드 URL : http://xmlsoft.org

[root@web6 src]# wget http://xmlsoft.org/sources/old/libxml2-2.6.30.tar.gz

[root@web6 src]# tar xvfz libxml2-2.6.30.tar.gz

[root@web6 src]# cd libxml2-2.6.30

[root@yt-web6 libxml2-2.6.30]# ./configure --prefix=/usr/local

[root@yt-web6 llibxml2-2.6.30]# make

[root@yt-web6 libxml2-2.6.30]# make install

[root@yt-web6 libxml2-2.6.30]# ldconfig

[root@yt-web6 libxml2-2.6.30]# cd ..

 

- expat2설치

다운로드 URL : http://www.libexpat.org

[root@web6 src]# wget http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download

[root@web6 src]# tar xvfz tar xvfz expat-2.0.1.tar.gz

[root@web6 src]# cd expat-2.0.1

[root@yt-web6 expat-2.0.1]# ./configure --prefix=/usr/local

[root@yt-web6 expat-2.0.1]# make

[root@yt-web6 expat-2.0.1]# make install

[root@yt-web6 expat-2.0.1]# ldconfig

[root@yt-web6 expat-2.0.1]# cd ..

 

- fontconfig2설치

다운로드 URL : http://fontconfig.org/wiki

[root@web6 src]# wget http://fontconfig.org/release/fontconfig-2.8.0.tar.gz

[root@web6 src]# tar xvfz fontconfig-2.8.0.tar.gz

[root@web6 src]# cd fontconfig-2.8.0

[root@yt-web6 fontconfig-2.8.0]# ./configure --prefix=/usr/local --with-expat=/usr/local

[root@yt-web6 fontconfig-2.8.0]# make

[root@yt-web6 fontconfig-2.8.0]# make install

[root@yt-web6 fontconfig-2.8.0]# ldconfig

[root@yt-web6 expat-2.0.1]# cd ..

 

- gd2설치

다운로드 URL : http://www.libgd.org/Main_Page

make시에 에러가 난다면 make를 한번더 실행

[root@web6 src]# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz

[root@web6 src]# tar xvfz gd-2.0.35.tar.gz

[root@web6 src]# cd gd-2.0.35

[root@yt-web6 fontconfig-2.8.0]# ./configure --prefix=/usr/local/gd --with-freetype=/usr/local --with-png=/usr/local --with-jpeg=/usr/local --with-fontconfig=/usr/local

[root@yt-web6 gd-2.0.35]# make

[root@yt-web6 gd-2.0.35]# make

[root@yt-web6 gd-2.0.35]# make install

[root@yt-web6 gd-2.0.35]# ldconfig

[root@yt-web6 gd-2.0.35]# cd ..

 

- httpd2설치

다운로드 URL : http://httpd.apache.org

[root@web6 src]# wget http://apache.tt.co.kr/httpd/httpd-2.2.15.tar.gz

[root@web6 src]# tar xvfz httpd-2.2.15.tar.gz

[root@web6 src]# cd httpd-2.2.15

[root@yt-web6 httpd-2.2.15]# vi server/mpm/worker/worker.c

85 #define DEFAULT_SERVER_LIMIT 1024

103 #define DEFAULT_THREAD_LIMIT 64

[root@yt-web6 httpd-2.2.15]# ./configure --prefix=/usr/local/apache --enable-so --with-mpm=worker --enable-ssl --with-ssl=/usr/local --enable-expires

[root@yt-web6 httpd-2.2.15]# make

[root@yt-web6 httpd-2.2.15]# make install

[root@yt-web6 httpd-2.2.15]# cd ..

 

worker 방식의 Apache를 설치하였으며 정적 컴파일 설치를 하였다

worker.c의 85번, 103번 라인을 서버 상황에 맞게 여유있게 설정한다

DEFAULT_SERVER_LIMIT 는 프로세스의 개수 제한

DEFAULT_THREAD_LIMIT 는 프로세스당 쓰레드의 갯수 제한

위의 설정은 1024 * 64 = 65536 개의 쓰레드를 생성할수 있으며 work 방식의 장점은 pork 방식에 비하여 메모리를 확실히 절약할 수 있다

work방식의 튜닝은 프로세스당 적당량의 쓰레드의 설정이 관건이다

너무 많은 쓰레드를 할당하면 프로세스당 메모리 사용량이 비대해져서 메모리의 절약은 있는 반면 성능저하의 원인이 될수 있다

현재의 설정은 최대의 개수제한을 설정 및 컴파일한 것으로 세부적인 설정은 config 파일에서 조정할 수 있다

 

- php 설치

다운로드 URL : http://www.php.net

[root@web6 src]# wget http://www.php.net/get/php-5.3.2.tar.gz/from/a/mirror

[root@web6 src]# tar xvfz tar xvfz php-5.3.2.tar.gz

[root@web6 src]# cd php-5.3.2

[root@yt-web6 php-5.3.2]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr --with-mysqli=/usr/lib64/mysql/mysql_config --with-config-file-path=/usr/local/apache/conf --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --with-libxml-dir=/usr/local --with-gd=/usr/local/gd --with-iconv --enable-ftp --with-openssl=/usr/local --with-libdir=lib64

[root@yt-web6 httpd-2.2.15]# make

[root@yt-web6 httpd-2.2.15]# make install

[root@yt-web6 httpd-2.2.15]# cp php.ini-development /usr/local/apache/conf/

[root@yt-web6 httpd-2.2.15]# vi /usr/local/apache/conf/httpd.conf

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php .phtml .html .htm .inc .cfg

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

 

 

작성자 goodnux@paran.com 크리엘

'Dev > PHP' 카테고리의 다른 글

php mssql 연동 (freetds)  (0) 2011.05.13
FreeTDS 설치 (PHP와 MS-SQL 연동)  (0) 2011.05.13
PHP Configure Option  (0) 2011.05.13
PHP 암호화 함수정리  (0) 2011.05.07
[PHP] Thread safe / non Thread safe  (2) 2011.04.19

+ Recent posts