아파치 mod_ruid2 모듈과 mod_fcgid 모듈을 같이 사용하니깐 아래와 같은 오류가 뜨네요~

 

 [fcgid:emerg] [pid 24459] (13)Permission denied: [client 192.168.1.2:50024] mod_fcgid: can't lock process table in pid 2445

 

디렉토리, 파일 퍼미션을 이리저리 변경해 봤는데도 안되더군요~

결국 mod_ruid2 를 막던지

 

    <IfModule mod_ruid2.c>
        RMode config
        RUidGid apache apache
    </IfModule>

RUidGid apache apache 로 적용해야 실행이 됩니다.

 

블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

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 부분을 찾아서 주석처리를 해주시면 됩니다.

 

블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요