응용환경
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이 지원하는 작업:
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)?$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; include fcgi.conf; }
./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