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

FastCGI怎麼安裝PHP

Jan 21, 2022 am 11:41 AM
fastcgiphp

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)