Web-Programming/Linux

[리눅스 / linux / PHP ] PHP 설치, cofigure 옵션 정리

yehza 2013. 12. 31.




[리눅스 / linux / PHP ] PHP 설치, configure 옵션 정리


CentOS 5 가 최소 설치되었다고 가정하고 시작했기 때문에 컴파일 환경을 구축을 먼저 해줘야 합니다.

yum update -y

reboot

yum install gcc.x86_64 gcc-c++.x86_64 wget.x86_64 bzip2-devel.x86_64 pkgconfig.x86_64 openssl-devel.x86_64 make.x86_64 man.x86_64 nasm.x86_64 gmp.x86_64 gdbm-devel.x86_64 readline-devel.x86_64 compat-readline43.x86_64 ncurses-devel.x86_64 db4-devel.x86_64 automake* autoconf* -y

 

Donwload and Unpack

 

cd /usr/src

wget ftp://ftp.sayclub.com/pub/languages/php/php-5.2.16.tar.bz2

tar xvjf php-5.2.16.tar.bz2

cd php-5.2.16

 

Knowledge

Php는 아주 많은 기능들을 제공합니다. 이러다보니 Configure 옵션도 많아서 제대로 지정해주지 않으면 사용하지도 않는 기능이 내장이 된다거나 꼭 필요한 기능인데 shared module로 올린다거나 하는 불상사가 발생할 수 있습니다. 따라서 무엇이 필요한지 자주 사용되는 기능인지를 따져보는 것이 좋습니다.

 

Php의 많은 기능들은 컴파일할때 기능을 내장하는 Built in 방식과 필요한 기능만을 그때 그때 컴파일해서 붙여서 쓰는 shared 방식을 사용할 수 있습니다. 보통 Built in 방식으로 지정을하지 않으면 전부다 shared 방식으로 언제든지 붙여서 쓸수 있기 때문에 너무 걱정을 하지 않아도 됩니다.

 

Built in 방식은 보통 자주 쓰는 경우에 사용을하고 shared 방식은 가끔 쓰는 기능이 필요한 경우에 사용을 합니다. 따라서 Php가 어떤 목적으로 사용할 것인지를 알아야 필요한 기능을 Built in 할것인지를 알 수 있겠죠.

 

주요한 기능들은 다음과 같습니다.

 

--with-pear     - php 라이브러리인 pear 를 지원.

--with-gettext  - php내에 국제화를 위한 프로그램을 지원하기위해서 필요한 기능을 지원.

--with-iconv     - 문자셋 변환을 위한 기능을 지원.

--with-bz2      - 압축프로그램인 BZip2 기능을 지원.

--with-gmp      - GNU MP 지원. GNU MP는 멀티 프로세싱을 위한 것입니다. 쓰레드, Fork 와는 또다른 병렬 프로그래밍 기법입니다.

--with-apxs2    - apache2 와 연동 지원.

--with-zlib      - ZLIB 지원.

--with-mcrypt   - mcrypt 로 암호화 과련 기능을 지원.

--with-mhash    - mhash 지원.

--with-mysql     - mysql 데이터베이스 지원.

--with-pdo-mysql  - pdo mysql 지원.

--with-mysqli         - mysqli 지원.

--with-pgsql      - pgsql 데이터베이스 지원.

--with-pdo-pgsql  - pdo pgsql 지원.

--with-xmlrpc      - xmlrpc 지원.

--with-libxml-dir    - XML2 지원을 위한 libxml2 라이브러리 디렉토리 지정.

--with-pcre-dir    - Perl Compatible Regular Expression 지원을 위한 라이브러리 디렉토리 지정.

--with-gd          - GD 그래픽 지원.

--with-native-ttf     - TrueType 문자열 지원.

--with-jpeg-dir    - JPEG 그래픽 지원을 위한 라이브러리 디렉토리 지정.

--with-png-dir     - PNG 그래픽 지원을 위한 라이브러리 디렉토리 지정.

--with-xpm-dir     - XPM 그래픽 지원을 위한 라이브러리 디렉토리 지정.

--with-ttf          - FreeType 폰트 지원.

--with-freetype-dir - FreeType 폰트 라이브러리 디렉토리 지정.

--enable-safe-mode      - safe mode 지원.

--enable-zend-multibyte  - Zend 의 multibyte 지원.

--enable-soap   - SOAP 웹 서비스 지원.

--enable-curl     - cURL 지원.

--enable-sockets  - fsockopen 과 같은 소켓 함수를 쓰기위해서는 필요합니다.

--enable-zip        - Zip 파일을 읽고 쓸수 있는 기능 지원.

--enable-magic-quotes  - '," 와 같은 것을 자동으로 처리해주는 기능을 제공합니다.

--enable-mbstring   - multibyte 문자열 처리를 위한 지원.

--enable-shmop      - Shared Memory Operations 으로서 공유메모리 접근 기능을 지원합니다. Windows 플랫폼은 사용할 수 없습니다. 여기를 참고하세요.

--enable-pcntl(CLI/CGI only)  - Process Control 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다.

--enable-sysvmsg    - System V message 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다. 여기를 참고하세요.

--enable-sysvsem    - System V Semaphore 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다. 여기를 참고하세요.

--enable-sysvshm     - System V shared memory 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다. 여기를 참고하세요.

--enable-calendar    - Calendar Conversion 를 지원합니다.

--enable-bcmath     - bc 스타일의 수학함수를 지원합니다.

--enable-ftp         - ftp 지원.

--enable-exif        - 이미지 메타정보 표시를 지원합니다.

--enable-fastcgi     - FastCGI 지원.

 

주로 많이 사용하는 Configure 옵션들은 위와 같습니다. 자세히 보면 'with' 시작하는 것이 있고 'enable' 로 시작하는 것이 있는데, with 의 경우에는 외부의 라이브러리가 있어야 하며 enable은 php에 라이브러리를 내장하고 있어 기능을 켜는 역활을 합니다.

 

Configure 를 하기전에 위의 내용을 알고 있어야 자신에게 필요한 것을 Php에 내장시킬 수 있습니다. 여기에서는 큰틀에서 다음과 같은 것을 Php에 넣을 것입니다.

 

Apache 웹서버 연동. --with-apxs2 옵션 설정 필요.

Mysql 데이터베이스 연동. --with-mysql, --with-pdo-mysql 옵션 설정 필요.

Pgsql 데이터베이스 연동. --with-pgsql, --with-pdo-pgsql 옵션 설정 필요.

그래픽 이미지 지원. --with-gd, gd-native-ttf, jpg, png, freetype 기능이 필요함.

xml 처리를 위한 기능이 필요. --with-libxml 옵션 설정 필요.

pear 기능 필요. --with-pear 옵션 설정 필요.

기타 부가적인 기능들 필요. gettext, bz2, mcrypt, mbstring, magic quotas, iconv 등등

 

1~3까지는 설치 노트에 있는대로 설치를 한 것으로 간주했습니다. 나머지 설치를 위한 라이브러리 설치를 먼저 진행을 합니다. 즉 다음과 같습니다.

 

Apache2 - /usr/local/apache2

Mysql - /usr/local/mysql5.5

PostgreSQL - /usr/local/pgsql-9.0

 --with-gd를 위한 CentOS Lib 설치.

yum install gd.x86_64 gd-devel.x86_64

 --with-jpeg-dir 를 위한 CentOS Lib 설치.

yum install libjpeg.x86_64 libjpeg-devel.x86_64

 --with-png-dir 를 위한 CentOS Lib 설치.

yum install libpng.x86_64 libpng-devel.x86_64

 --with-freetype-dir 를 위한 CentOS Lib 설치.

yum install freetype.x86_64 freetype-devel.x86_64

 --with-libxml-dir 를 위한 CentOS Lib 설치.

yum install libxml2.x86_64 libxml2-devel.x86_64

 --with-bz2 를 위한 CentOS Lib 설치.

yum install bzip2.x86_64 bzip2-devel.x86_64

 --with-gettext 를 위한 CentOS Lib 설치.

yum install gettext.x86_64 gettext-devel.x86_64

 --with-jpeg-dir 를 위한 CentOS Lib 설치.

yum install libmcrypt.x86_64 libmcrypt-devel.x86_64

 --with-mhash 를 위한 CentOS Lib 설치.


yum install mhash.x86_64 mhash-devel.x86_64

 --with-gmp 를 위한 CentOS Lib 설치.

yum install gmp-devel.x86_64 gmp.x86_64

 

이외에도 필요한 기능들을 포함하면 한번쯤 CentOS 라이브러리를 패키지를 살펴봐야 합니다.

 

Configure and Compile

이제 컴파일을 위한 Configure 는 다음과 같습니다.

 

./configure --prefix=/usr/local/php5.2.16 \

--with-libdir=lib64 \

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

--with-mysql=/usr/local/mysql5.5 \

--with-pdo-mysql=/usr/local/mysql5.5 \

--with-mysqli=/usr/local/mysql5.5/bin/mysql_config \

--with-pgsql=/usr/local/pgsql9.0 \

--with-pdo-pgsql=/usr/local/pgsql9.0 \

--with-pear \

--with-libxml-dir=/usr \

--with-gettext \

--with-iconv \

--with-zlib \

--with-mcrypt \

--with-mhash \

--with-gd \

--with-jpeg-dir=/usr \

--with-png-dir=/usr \

--with-freetype-dir=/usr \

--with-bz2 \

--enable-gd-native-ttf \

--enable-zip \

--enable-mbstring \

--enable-zend-multibyte \

--enable-safe-mode

 

make

make install

cp php.ini-recommended /usr/local/php5.2.16/lib/php.ini

 

Apache PHP Configure

Apache 웹서버에서 PHP 컴파일을 인식시켜야 합니다. 이를 위해서 아파치에 설정을 해야 합니다.

 


]# cd /usr/local/apache2/conf/extra

]# vim httpd-php.conf

<IfModule php5_module>

    <FilesMatch "\.(htm|html|php)$">

        SetHandler application/x-httpd-php

    </FilesMatch>

 

    <FilesMatch "\.phps$">

        SetHandler application/x-httpd-php-source

    </FilesMatch>

 

    DirectoryIndex index.htm index.html index.php

</IfModule>

]# vim /usr/local/apache2/conf/httpd.conf

#Php settings

Include conf/extra/httpd-php.conf

 

]# /usr/local/apache2/bin/apachectl restart 









댓글

추천 글