FastCGI로 PHP를 설치하는 방법

藏色散人
풀어 주다: 2023-03-14 22:16:01
원래의
2693명이 탐색했습니다.

FastCGI를 사용하여 PHP를 설치하는 방법: 1. php 및 php-fpm 패키지를 다운로드합니다. 2. 설치 환경을 구성합니다. 3. php 및 php-fpm을 컴파일하고 설치합니다. 4. "/usr/local/php/sbin"을 전달합니다. /php-fpm start"를 사용하여 FastCGI 프로세스를 시작합니다.

FastCGI로 PHP를 설치하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

FastCGI로 PHP를 설치하는 방법은 무엇입니까? Nginx 및 PHP(FastCGI)의 설치, 구성 및 최적화

FastCGI란 무엇입니까

FastCGI는 HTTP 서버와 동적 스크립팅 언어 간의 확장 가능한 고속 통신 인터페이스입니다. FastCGI는 PHP를 포함한 많은 스크립팅 언어에서도 지원됩니다.

FastCGI는 CGI에서 개발되었습니다. FastCGI 인터페이스는 HTTP 서버와 스크립트 구문 분석 서버를 분리하고 스크립트 구문 분석 서버에서 하나 이상의 스크립트 구문 분석 데몬을 시작할 수 있는 C/S 구조를 채택합니다.

HTTP 서버가 동적 도시 지역을 만날 때마다 FastCGI 프로세스에 직접 전달되어 실행된 다음 결과를 브라우저에 반환하여 시스템의 전반적인 성능을 향상시킵니다.


Nginx+FastCGI 작동 원리

Nginx는 외부 프로그램의 직접 호출이나 구문 분석을 지원하지 않습니다. 모든 외부 프로그램은 FastCGI 인터페이스를 통해 호출되어야 합니다. CGI 프로그램을 호출하려면 FastCGI 래퍼도 필요하며 이는 다른 프로그램을 시작하는 데 사용되는 프로그램으로 이해될 수 있습니다.

이 래퍼는 포트나 파일 소켓과 같은 고정 소켓에 바인딩됩니다. Nginx가 FastCGI 인터페이스를 통해 소켓에 CGI 요청을 보내면 래퍼는 요청을 수신하고 새 스레드를 생성합니다. 이 스레드는 스크립트를 처리하기 위해 인터프리터나 외부 프로그램을 호출하고 그런 다음 래퍼는 반환 데이터를 전달합니다. FastCGI 인터페이스를 통해 데이터를 Nginx로 보내고 마지막으로 Nginx는 이를 클라이언트에 반환합니다.


spawn-fcgi 및 PHP-FPM

FastCGI 인터페이스는 스크립트 구문 분석 서버에서 하나 이상의 데몬 프로세스를 시작하여 스크립트를 동적으로 구문 분석하며, 이는 또한 FastCGI 프로세스 관리자가 되며 PHP-FPM은 두 가지 프로세스 관리자 장치입니다. .

spawn-fcgi: HTTP 서버 lighttpd의 일부입니다. 이제 독립 프로젝트이며 일반적으로 PHP를 지원하기 위해 lighttpd와 함께 사용됩니다. 그러나spawn-fcgi는 메모리 누수를 일으키고 동시성이 높을 때 FastCGI를 자동으로 다시 시작합니다.

PHP-FPM: PHP용 패치로 개발된 타사 FastCGI 프로세스 관리자입니다. 설치 과정에서 PHP 소스 코드와 함께 컴파일해야 합니다. 즉, PHP-FPM이 PHP 커널로 컴파일되므로 성능이 더 좋습니다. 동시에 높은 동시성을 처리하는 능력도 훨씬 향상되었습니다.

FastCGI의 장점은 HTTP 서버에서 동적 언어를 분리하는 것이기 때문에 Nginx와 PHP/PHP-FPM은 종종 Nginx 프런트 엔드에 대한 부담을 공유하고 Nginx가 처리에 집중할 수 있도록 서로 다른 서버에 배포됩니다. 정적 요청, PHP/PHP -FPM은 PHP 동적 요청을 구문 분석합니다.


PHP 및 PHP-FPM 설치 및 최적화

설치 패키지 다운로드

php 패키지 다운로드: www.php.net, 여기에서는 php-5.2.13.tar.gz를 사용하세요

php-fpm 패키지 다운로드: php-fpm .org, 여기서는 php-5.2.13-fpm-0.5.13.diff.gz

참고: php와 php-fpm의 버전이 일치하는 것이 가장 좋습니다. 그렇지 않으면 호환성 문제가 발생할 수 있습니다.

설치 환경 구성

필요한 종속성 패키지는 다음과 같습니다.

gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2- devel 잠깐

시스템 버전에 따라 의존할 수 있는 패키지도 다릅니다.

php와 php-fpm을 컴파일하고 설치하세요

php 소스 코드 패키지의 압축을 풀고 php-fpm을 php 소스 코드에 패치로 입력하세요.

tar zxf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
로그인 후 복사

컴파일 및 설치와 동시에 FastCGI 지원을 활성화하고 FastCGI 모드에서 fpm 지원을 활성화합니다.

cd php-5.2.13./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpmmake && make install
cp php-ini-dist /usr/local/php/lib/php.ini
로그인 후 복사

php-fpm 구성 및 최적화

php의 기본 구성 파일은 php.ini입니다.

php-fpm의 기본 구성 파일은 /usr/local/php/etc/에 있는 php-fpm.conf입니다. 예 A xml 형식의 파일에서 일반적으로 사용되는 태그는 다음과 같습니다.

<value name="listen_address">127.0.0.1:9000</value>:表示配置FastCGI进程监听的IP地址和端口,默认为本地的9000;
<value name="display_errors">0</value>:表示是否显示php错误信息,默认为0表示不显示,设置为1表示显示错误信息;
<value name="user">nobody</value>:表示设置运行FastCGI进程的用户,需要和nginx配置文件中的用户一致;
<value name="group">nobody</value>:表示设置运行FastCGI进程的用户组,需要和nginx配置文件中的用户组一致;
<value name="max_children">5</value>:设置FastCGI的进程数,官方建议小于2G内存,可以只开启64个进程;4G以上可以开启200个进程;
<value name="request_terminate_timeout">0s</value>:设置FastCGI执行脚本的时间,默认0s,意味着无限执行下去;
<value name="rlimit_files">1024</value>:设置php-fpm打开文件描述符的限制,默认1024,这个值最好要和内核打开的文件数一致;
<value name="max_requests">500</value>:设置每一个进程最多处理多少个请求后会被关闭,默认500;
<value name="allowed_clients">127.0.0.1</value>:设置允许访问FastCGI进程解析器的IP地址,如果不设置IP地址,则无法接受nginx传来的php解析请求;
로그인 후 복사

FastCGI 프로세스 관리

FastCGI 프로세스를 시작하는 방법은 다음과 같습니다.

/usr/local/php/sbin/php-fpm start
로그인 후 복사

매개 변수의 의미는 다음과 같습니다.

start: 시작
php의 fastcgi 프로세스를 강제로 중지합니다.
종료: php의 fastcgi 프로세스를 원활하게 종료합니다.
다시 시작: php의 fastcgi 프로세스를 다시 로드합니다. 중단 없이 구성 파일을 로드합니다.
logrotate: 로그 파일을 다시 활성화합니다.

查看FastCGI进程

FastCGI进程启动后,可以通过命令“ps”或者“netstat”查看到相关进程信息,默认监听9000端口;

netstat -antlp | grep 9000ps -ef | grep php-cgi
로그인 후 복사

配置Nginx来支持PHP

Nginx本身不会对PHP进行解析,要想让Nginx解析PHP请求,需要将PHP页面的请求交给FastCGI进程监听的IP地址和端口。Nginx通过反向代理的功能实现对PHP的解析。下面对Nginx解析PHP进行配置实例。

配置实例

      server {
        server_name www.ixdba.net ixdba.net;

        location / {
            index index.html index.php;
            root /web/www/www.ixdba.net;
        }

        location ~ \.php$ {
            root                html;
            fastcgi_pass        127.0.0.1:9000;
            fastcgi_index       index.php;
            fastcgi_param       SCRIPT_FILENAME  html$fastcgi_script_name;
            include             fastcgi_params;
        }
      }
로그인 후 복사

location指令,将以“.php”结尾的文件都交给“127.0.0.1:9000”来处理,这里的IP和端口就是FastCGI进程监听的IP和端口。

fastcgi_param指令,指定放置php动态程序的主目录,也就是$fastcgi_script_name前的路径,这里是/usr/local/nginx/html。

fastcgi_params文件是FastCGI进程的一个参数配置文件,安装Nginx后默认生成,这里将它包含进来。

启动nginx

/usr/local/nginx/sbin/nginx
로그인 후 복사

测试Nginx对PHP的解析功能

在/usr/local/nginx/html,也就是上面的php动态程序主目录下,创建一个phpinfo.php文件,内容如下:

<?php phpinfo(); ?>
로그인 후 복사

然后通过浏览器访问http://www.ixdba.net/index.html,将会显示Nginx欢迎页;
浏览器访问http://www.ixdba.net/phpinfo.php,会出现php安装及功能列表信息;


优化Nginx中FastCGI

添加一些优化指令可以让php环境高效稳定的运行,下面给出一些实例,添加到nginx配置文件的http层级:

为fastcgi缓存指定文件路径,目录结构等级、关键字区域存储时间和非活动删除时间;

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=Test:10m inactive=5m;
로그인 후 복사

连接到后端fastcgi的超时时间;

fastcgi_connect_timeout 300;
로그인 후 복사

向fastcgi传送请求的超时时间,是已经完成两次握手后向fastcgi传送请求的超时时间;

fastcgi_send_timeout 300;
로그인 후 복사

接收fastcgi应答的超时时间,是已经完成两次握手后接收fastcgi应答的超时时间;

fastcgi_read_timeout 300;
로그인 후 복사

读取fastcgi应答第一部分需要缓冲区的大小;

fastcgi_buffer_size 64k;
로그인 후 복사

本地需要多少和多大的缓冲区来缓冲fastcgi的应答请求;

fastcgi_buffers 4 64k;
로그인 후 복사

默认值为fastcgi_buffers的两倍;

fastcgi_busy_buffers_size 128k;
로그인 후 복사

写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍;

fastcgi_temp_file_write_size 128k;
로그인 후 복사

开启fastcgi缓存并为其指定一个名称,可以有效降低cpu负载,防止502错误。

fastcgi_cache TEST;
로그인 후 복사

fastcgi_cache_valid指定应答代码的缓存时间。
将200, 302的应答时间缓存1小时;

fastcgi_cache_valid 200 302 1h;
로그인 후 복사

将301应答缓存一天;

fastcgi_cache_valid 301 1d;
로그인 후 복사

其余应答缓存1分钟;

fastcgi_cache_valid any 1m;
로그인 후 복사

   

위 내용은 FastCGI로 PHP를 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿