아파치 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 로 적용해야 실행이 됩니다.

 

블로그 이미지

영은파더♥

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

 

블로그 이미지

영은파더♥

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

,