首頁 >後端開發 >PHP問題 >FastCGI怎麼安裝PHP

FastCGI怎麼安裝PHP

藏色散人
藏色散人原創
2022-01-21 11:41:212714瀏覽

FastCGI安裝PHP的方法:1、下載php和php-fpm套件;2、設定安裝環境;3、編譯安裝php和php-fpm;4、透過「/usr/local/php/sbin /php-fpm start”啟動FastCGI進程即可。

FastCGI怎麼安裝PHP

本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦

FastCGI怎麼安裝PHP? Nginx與PHP(FastCGI)的安裝、設定與最佳化

#什麼是FastCGI

#FastCGI是一種可伸縮的、高速的在HTTP server和動態腳本語言間通訊的介面。 FastCGI也被眾多腳本語言支持,包括PHP。

FastCGI是從CGI發展而來的。 FastCGI介面方式採用C/S結構,可以將HTTP伺服器和腳本解析伺服器分開,同時在腳本解析伺服器上啟動一個或多個腳本解析守護程式。

當HTTP伺服器每次遇到動態城區時,直接交付給FastCGI進程執行,然後返回結果給瀏覽器,提高了系統的整體效能。


Nginx FastCGI運作原理

Nginx並不支援對外部程式的直接呼叫或解析,所有外部程式都要透過FastCGI介面來呼叫。為了呼叫CGI程序,還需要一個FastCGI的wrapper,可以理解為用於啟動另一個程式的程式。

這個wrapper綁定在某個固定的socket上,如埠或檔案socket。當Nginx將CGI請求發送給socket時,透過FastCGI接口,wrapper接收到請求,派生一個新的線程,此線程調用解釋器或外部程序處理腳本並讀取返回數據,接著wrapper將返回數據通過FastCGI接口傳給Nginx,最後Nginx再回傳給客戶端。


spawn-fcgi與PHP-FPM

FastCGI介面在腳本解析伺服器上啟動一個或多個守護程序動態解析腳本,這也成為FastCGI進程管理器,spawn- fcgi與PHP-FPM就是兩個流程管理器。

spawn-fcgi:是HTTP伺服器lighttpd的一部分,目前已是獨立成為一個項目,一般與lighttpd配合使用來支援PHP。但是spawn-fcgi在高並發的時候會出現記憶體洩漏甚至自動重啟FastCGI。

PHP-FPM:第三方的FastCGI進程管理器,它是作為PHP的一個修補程式來開發的。在安裝過程中也需要和PHP原始碼一起編譯,也就是說PHP-FPM被編譯到PHP內核,因此效能方面更加優秀。同時其處理高並發方面能力也好很多。

因為FastCGI的優點是把動態語言和HTTP server分離開,所以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的主設定檔為php-fpm.conf,位於/usr/local/php/etc/下,是一個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進程;
stop:強制停止php的fastcgi進程;
quit:平滑終止php的fastcgi進程;
restart: 重新啟動php的fastcgi進程;
reload:重新載入php的fastcgi進程,使進程不中斷地載入設定檔;
logrotate:重新啟用log檔;

查看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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn