>  기사  >  백엔드 개발  >  Linux 시스템에 공존하도록 여러 버전의 PHP를 설정하고 Nginx server_php 팁과 함께 사용

Linux 시스템에 공존하도록 여러 버전의 PHP를 설정하고 Nginx server_php 팁과 함께 사용

WBOY
WBOY원래의
2016-05-16 20:02:281629검색

응용환경

LNMP 환경에서 현재 PHP 버전은 5.3.8입니다. PHP 5.2.x만 지원하는 애플리케이션 요구 사항이 발생하면 기존 애플리케이션을 유지하거나 PHP 5.3.8을 사용하고 싶습니다. 즉, nginx가 필요에 따라 다른 버전을 호출하려면 두 가지 버전의 PHP가 동시에 존재해야 합니다.

생각

Nginx는 PHP-FastCGI를 통해 PHP와 상호작용합니다. PHP-FastCGI가 실행된 후 파일 또는 로컬 포트를 통해 수신합니다. Nginx에서 해당 FastCGI 수신 포트 또는 파일을 구성하면 Nginx가 PHP 해석을 요청할 수 있습니다.

PHP-FastCGI는 포트와 파일을 수신하므로 다양한 버전의 PHP-FastCGI가 동시에 실행될 수 있으며 요구 사항에 따라 다양한 PHP-FastCGI 포트 또는 파일을 호출하도록 Nginx를 구성할 수 있습니다. 즉, 다양한 버전의 PHP가 공존할 수 있습니다.

구성 기록

lnmp가 설치된 Debian 환경을 기준으로 간단한 구성 과정을 아래에 기록했습니다. 현재 PHP 버전은 5.3.8이며 /usr/local/php에 있습니다.

1. PHP-5.2.14 및 관련 FPM 및 autoconf 구성 요소 다운로드:


mkdir ~/php5.2
cd ~/php5.2
wget -c http://museum.php.net/php5/php-5.2.14.tar.gz
wget -c http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz

2. PHP-5.2.14의 압축을 풀고 PHP-FPM 패치를 적용합니다.

tar zxvf php-5.2.14.tar.gz
gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1

3. lnmp를 통해 설치했다면 autoconf가 설치되어 있어야 합니다. 그렇지 않은 경우 autoconf-2.13을 직접 다운로드하여 컴파일한 다음 autoconf 환경 변수를 설정하세요.

export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf¬
export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader

3. PHP-5.2.14를 컴파일하여 새 경로(/usr/local/php-5.2.14)에 설치하고 –prefix 및 –with-config-file-path 경로에 주의한 후 엽니다. fastcgi 및 fpm 옵션:

cd php-5.2.14/
./buildconf --force
./configure --prefix=/usr/local/php-5.2.14 --with-config-file-path=/usr/local/php-5.2.14/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-fastcgi --enable-fpm
make ZEND_EXTRA_LIBS='-liconv'
make install

4. /usr/local/php-5.2.14/etc/php-fpm.conf, 수신 포트를 설정합니다:

<value name="listen_address">127.0.0.1:9001</value>

또는 모니터 파일:

<value name="listen_address">/path/to/unix/socket</value>

기타 매개변수는 서버 환경 및 필요에 따라 맞춤 설정할 수 있습니다.
5. 나중에 php-fpm을 통해 관리할 수 있는 php-fpm을 시작합니다.

/usr/local/php-5.2.14/sbin/php-fpm start

php5.3.3 이후 php는 php-fpm을 php로 상속했으며, 내장된 php-fpm은 기본적으로 (start|stop|reload)의 원활한 시작 매개변수를 지원하지 않습니다. 제공된 시작을 사용해야 합니다. 공식 소스 코드에서 제어할 스크립트:

cp -f (php -5.3.x-source-dir)/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start

php-fpm이 지원하는 작업:

  • start, PHP의 FastCGI 프로세스를 시작합니다.
  • 중지하고 PHP FastCGI 프로세스를 강제 종료합니다.
  • quit은 PHP의 FastCGI 프로세스를 원활하게 종료합니다.
  • 다시 시작하고 PHP의 FastCGI 프로세스를 다시 시작하세요.
  • PHP의 php.ini를 다시 로드하고 다시 로드합니다.
  • logrotate, 로그 파일을 다시 활성화합니다.

5.3.3의 php-fpm 스크립트에서 지원되는 작업: start|stop|force-quit|restart|reload|status

6. PHP-5.2.14의 php.ini를 구성하고 다시 로드하여 적용합니다.

vi /usr/local/php-5.2.14/etc/php.ini
/usr/local/php-5.2.14/sbin/php-fpm 다시 로드
7. nginx 구성을 수정하고 필수 서비스 구성에 PHP-5.2.14를 사용합니다.

location ~ .*.(php|php5)&#63;$
    {
      fastcgi_pass 127.0.0.1:9001;
      fastcgi_index index.php;
      include fcgi.conf;
    }

8. php5.5.10을 컴파일하는 데 사용한 구성을 기록합니다
./configure --prefix=/usr/local/php-5.5.10 --with-config-file-path=/usr/local/php-5.5.10/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-bz2 --with-curl=/usr/bin --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --with-mcrypt=/usr/bin --enable-zip --enable-soap --enable-mbstring --with-gd --with-openssl --enable-pcntl --with-xmlrpc --enable-opcache
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.