CentOS. php 2개 설치

Program : php 7.0.4
OS : Centos 6.5 64bit
CPU : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz(Vitual Box)
Men : 2G
작성자 : 서비님(https://dslee1.blogspot.kr/)


1.개요


리눅스 운영체제에서 하나의 웹서버(apache) 하나의 php 를 운영중에 있다. 하지만 필요에 따라 apache 2대를 서비스 하거나 php 2대를 서비스해야되는 경우가 종종 발생된다.


apache 2대 서비스 방법에 대해서는 다음시간에 설명을 하고, 이번시간에는 php 2대를 서비스하는 방법에 대해서 설명하도록 하겠다.


2.설치


이번에 설치할 php 버전은 현재(2016.3.21) 최신버전인 7.0.4 버전 이다.
기존설치된 php 환경은 5.2.17 버전으로 오래된 버전이지만 안정성이 높고, 범용적으로 사용하는 버전이다.


2.1 mod_proxy 설치
cd /usr/local/src/httpd-2.2.31/modules/proxy
/usr/local/apache/bin/apxs -aic mod_proxy.c proxy_util.c


2.2 mod_prox_fcgi 설치
cd /usr/local/src      
wget https://github.com/ceph/mod-proxy-fcgi/archive/master.zip
mv master.zip mod-proxy-fcgi-master.zip
unzip mod-proxy-fcgi-master.zip
cd mod-proxy-fcgi-master
autoconf
### apxs path 설정 ###
export PATH=$PATH:/usr/local/apache/bin
./configure && make && make install


2.3 php 설치

cd /usr/local/src
tar xvfz php-7.0.4.tar.gz
cd php-7.0.4


./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/lib       --with-gd --with-freetype-dir --with-zlib --enable-sockets --enable-gd-native-ttf --with-png-dir       --with-jpeg-dir --enable-sigchild --with-gettext --enable-mbstring --enable-inline-optimization       --enable-bcmath --enable-shmop --enable-calendar --enable-ftp --with-gdbm --with-iconv       --enable-mbregex --with-openssl --with-curl=/usr/local/curl/ --enable-soap --disable-debug --with-mcrypt       --with-kerberos --enable-zip --with-zlib-dir --enable-exif --enable-fpm --with-fpm-user=nobody       --with-fpm-group=nobody --with-mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql


make && make install


## 환경설정 및 기타파일 복사 ##
cp php.ini-production /usr/local/php-7.0.4/lib/php.ini
cp /usr/local/php-7.0.4/etc/php-fpm.conf.default /usr/local/php-7.0.4/etc/php-fpm.conf
cp /usr/local/php-7.0.4/etc/php-fpm.d/www.conf.default /usr/local/php-7.0.4/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /usr/local/php-7.0.4/bin/php-fpmctl
chmod 700 /usr/local/php-7.0.4/bin/php-fpmctl


## 설정파일 내용 수정 ##
vi /usr/local/php-7.0.4/lib/php.ini


short_open_tag = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT
display_errors = On
date.timezone = "Asia/Seoul"


## 서비스실행 파일 복사 ##
ln -s /usr/local/php-7.0.4/bin/php-fpmctl /etc/init.d/php-fpmctl
chkconfig  php-fpmctl on
service php-fpmctl start


3.적용 및 테스트


3.1 모듈확인
## 모듈이 정상적으로 httpd.conf 파일에 적용되었는지 확인 ##
grep mod_proxy /usr/local/apache//conf/httpd.conf
grep mod_proxy_fcgi /usr/local/apache//conf/httpd.conf


만약 아무런 메시지도 표시 안되면 적용 안된것임.
LoadModule proxy_module       modules/mod_proxy.so
LoadModule proxy_fcgi_module       modules/mod_proxy_fcgi.so


적용해준다.


3.2 vhost.conf 적용

## proxy 방식으로 서비스 되기 때문에 각각의 virtual host 에 별도로 등록 해줘야된다.
<VirtualHost *:80>
   DocumentRoot "/home/pstree/www/"
   ServerName pstree.dslee.kr
   ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/pstree/www/$1
</VirtualHost>


/usr/local/apache/bin/apachectl -t
ok 떨어지면
/usr/local/apache//bin/apachectl restart


3.3 테스트
vi /home/pstree/www/phpinfo.php


<?
phpinfo();
?>




스크린샷, 2016-03-21 14:28:55.jpg


4. 마치며..

실제로 php 2개를 동시에 서비스하는 경우는 드물다. 때문에 국내에서 관련문서를 찾기 힘들었는데 이번기회에 설치 및 운영테스트를 함으로써 큰 어려움은 발견되지 않았다. 단지 아파치에서  proxy_fcgi 모듈방식으로 Match 만 잡아주고,  별도로 php-fpm 서비스를 올려주면 쉽게 해결이 되는걸 확인하였다.