서버에 PHP 여러가지 버전을 설치 운영 방법입니다.
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
FCGIWrapper /var/www/cgi-bin/php56.fcgi .php
</IfModule>
</VirtualHost>
<VirtualHost *:8070>
ServerName 192.168.100.102
DocumentRoot /home/example/www
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php
FCGIWrapper /var/www/cgi-bin/php70.fcgi .php
</IfModule>
</VirtualHost>
<VirtualHost *:8071>
ServerName 192.168.100.102
DocumentRoot /home/example/www
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php
FCGIWrapper /var/www/cgi-bin/php71.fcgi .php
</IfModule>
</VirtualHost>
<VirtualHost *:8072>
ServerName 192.168.100.102
DocumentRoot /home/example/www
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php
FCGIWrapper /var/www/cgi-bin/php72.fcgi .php
</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
버전별로 관리하기가 번거롭다면 /var/www/cgi-bin/php??.fcgi 파일에서 PHPRC=/etc/php.ini 로 수정하면 됩니다.
.html 은 잘 되는데 .php 파일은 제대로 적용이 안된다면
/etc/httpd/conf.d/php.conf 파일에 SetHandler application/x-httpd-php 부분을 찾아서 주석처리를 해주시면 됩니다.
출처 : https://ivps.tistory.com/698
'PHP' 카테고리의 다른 글
Linux 및 Windows용 PHP 및 Oracle Instant Client 설치 (0) | 2023.09.07 |
---|---|
그누보드 session 디렉토리 변경 (0) | 2023.07.27 |
php 암호화 복호화 , 간단한 암호화 (0) | 2022.05.31 |
CentOS7 php 5.4 -> 7.4 버전 올리기 php7.4 php5.4 (0) | 2022.04.28 |
PHP 이미지 다운로드 또는 바로보기 (0) | 2022.02.11 |
댓글