iVPS 가상서버호스팅

[CentOS] 7.x PHP Multiple로 여러가지 버전 설치 방법 본문

분류없음

[CentOS] 7.x PHP Multiple로 여러가지 버전 설치 방법

iVPS 영은파더♥ 2019.04.04 14:36

CentOS 7.x 기본 PHP 버전은 5.4 버전입니다.

그런데 하나의 서버에 여러가지 버전별로 설치하여 VirtualHost 별로 서로 다른 버전이 동작하도록 설정이 가능합니다.

nginx 라면 포트를 이용해서 분기하는 방법이 있습니다.

그리고 Apache 는 mod_fcgid 이라는 모듈을 이용합니다.

 

yum install epel-release 
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

yum install yum-utils 

 

기본적으로 운영할 버전을 설정 ( 5.4 를 기본으로 한다면 패스해도 됨 )
yum-config-manager --enable remi-php56

yum-config-manager --enable remi-php70

yum-config-manager --enable remi-php71

yum-config-manager --enable remi-php72

 

위에서 지정한 버전으로 설치 ( 디폴트 PHP 버전 )

# yum install php php-common php-fpm php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo

 

PHP 버전별로 설치를 합니다.

yum install php56 php56-php-common php56-php-fpm php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo 
yum install php70 php70-php-common php70-php-fpm php70-php-mysql php70-php-pecl-memcache php70-php-pecl-memcached php70-php-gd php70-php-mbstring php70-php-mcrypt php70-php-xml php70-php-pecl-apc php70-php-cli php70-php-pear php70-php-pdo 
yum install php71 php71-php-common php71-php-fpm php71-php-mysql php71-php-pecl-memcache php71-php-pecl-memcached php71-php-gd php71-php-mbstring php71-php-mcrypt php71-php-xml php71-php-pecl-apc php71-php-cli php71-php-pear php71-php-pdo 
yum install php72 php72-php-common php72-php-fpm php72-php-mysql php72-php-pecl-memcache php72-php-pecl-memcached php72-php-gd php72-php-mbstring php72-php-mcrypt php72-php-xml php72-php-pecl-apc php72-php-cli php72-php-pear php72-php-pdo 

 

yum install mod_fcgid

 

vi /var/www/cgi-bin/php56.fcgi
vi /var/www/cgi-bin/php70.fcgi
vi /var/www/cgi-bin/php71.fcgi
vi /var/www/cgi-bin/php72.fcgi

 

#!/bin/bash
PHPRC=/etc/opt/remi/php56
export PHPRC
umask 022
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_MAX_REQUESTS
SCRIPT_FILENAME=$PATH_TRANSLATED
export SCRIPT_FILENAME
exec /opt/remi/php56/root/usr/bin/php-cgi

버전 숫자에 맞게 고쳐서 저장합니다.

 

chmod 755 /var/www/cgi-bin/php*.fcgi

 

VirtualHost 설정

<Directory "/home/*/www">
    AllowOverride FileInfo AuthConfig Limit Indexes Options=ExecCGI
    Options +ExecCGI
    Require all granted
    AddType application/x-httpd-php .php .html
</Directory>
<VirtualHost *:80>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
</VirtualHost>
Listen 8054
Listen 8056
Listen 8070
Listen 8071
Listen 8072
<VirtualHost *:8054>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
</VirtualHost>
<VirtualHost *:8056>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .php
        AddHandler fcgid-script .html
        FCGIWrapper /var/www/cgi-bin/php56.fcgi .php
        FCGIWrapper /var/www/cgi-bin/php56.fcgi .html
    </IfModule>
</VirtualHost>
<VirtualHost *:8070>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .php
        AddHandler fcgid-script .html
        FCGIWrapper /var/www/cgi-bin/php70.fcgi .php
        FCGIWrapper /var/www/cgi-bin/php70.fcgi .html
    </IfModule>
</VirtualHost>
<VirtualHost *:8071>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .php
        AddHandler fcgid-script .html
        FCGIWrapper /var/www/cgi-bin/php71.fcgi .php
        FCGIWrapper /var/www/cgi-bin/php71.fcgi .html
    </IfModule>
</VirtualHost>
<VirtualHost *:8072>
    ServerName 192.168.100.102
    DocumentRoot /home/example/www
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .php
        AddHandler fcgid-script .html
        FCGIWrapper /var/www/cgi-bin/php72.fcgi .php
        FCGIWrapper /var/www/cgi-bin/php72.fcgi .html
    </IfModule>
</VirtualHost>

8054, 8056, 8070, 8071, 8072 포트는 PHP 각 버전별로 잘 작동하는지 확인하기 위한 예제입니다.

같은 80 포트에 Virtual 도메인별로 설정하시면 됩니다.

 

이제 아파치를 재시작하고 phpinfo 함수로 제대로 설정이 되었는지 확인하면 됩니다.

 

php.ini 는 각 버전별로 파일이 있으니 각각 수정하여야 합니다.

  /etc/php.ini 

  /opt/remi/php54/root/etc/php.ini 
  /opt/remi/php56/root/etc/php.ini 
  /etc/opt/remi/php70/
php.ini 
  /etc/opt/remi/php71/php.ini
  /etc/opt/remi/php72/php.ini 

.html 은 잘 되는데 .php 파일은 제대로 적용이 안된다면
/etc/httpd/conf.d/php.conf 파일에 SetHandler application/x-httpd-php 부분을 찾아서 주석처리를 해주시면 됩니다.

 

Trackback : 0 | Comments : 0
댓글쓰기 폼