www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]php與nginx整合 PHP-FPM也是一個(gè)第三方的FastCGI進(jìn)程管理器,它是作為PHP的一個(gè)補(bǔ)丁來開發(fā)的,在安裝的時(shí)候也需要和PHP源碼一起編譯,也就是說PHP-FPM被編譯到PHP內(nèi)核中,因

php與nginx整合

PHP-FPM也是一個(gè)第三方的FastCGI進(jìn)程管理器,它是作為PHP的一個(gè)補(bǔ)丁來開發(fā)的,在安裝的時(shí)候也需要和PHP源碼一起編譯,也就是說PHP-FPM被編譯到PHP內(nèi)核中,因此在處理性能方面更加優(yōu)秀;同時(shí)它在處理高并發(fā)方面也比spawn-fcgi引擎好很多,因此,推薦Nginx+PHP/PHP-FPM這個(gè)組合對PHP進(jìn)行解析。
FastCGI 的主要優(yōu)點(diǎn)是把動(dòng)態(tài)語言和HTTP Server分離開來,所以Nginx與PHP/PHP-FPM經(jīng)常被部署在不同的服務(wù)器上,以分擔(dān)前端Nginx服務(wù)器的壓力,使Nginx專一處理靜態(tài)請求和轉(zhuǎn)發(fā)動(dòng)態(tài)請求,而PHP/PHP-FPM服務(wù)器專一解析PHP動(dòng)態(tài)請求

#fastcgi
FastCGI是一個(gè)可伸縮地、高速地在HTTP server和動(dòng)態(tài)腳本語言間通信的接口。多數(shù)流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同時(shí),F(xiàn)astCGI也被許多腳本語言所支持,其中就有PHP。
FastCGI是從CGI發(fā)展改進(jìn)而來的。傳統(tǒng)CGI接口方式的主要缺點(diǎn)是性能很差,因?yàn)槊看蜨TTP服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要重新啟動(dòng)腳本解析器來執(zhí)行解析,然后結(jié)果被返回給HTTP服務(wù)器。這在處理高并發(fā)訪問時(shí),幾乎是不可用的。另外傳統(tǒng)的CGI接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。
FastCGI接口方式采用C/S結(jié)構(gòu),可以將HTTP服務(wù)器和腳本解析服務(wù)器分開,同時(shí)在腳本解析服務(wù)器上啟動(dòng)一個(gè)或者多個(gè)腳本解析守護(hù)進(jìn)程。當(dāng)HTTP服務(wù)器每次遇到動(dòng)態(tài)程序時(shí),可以將其直接交付給FastCGI進(jìn)程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓HTTP服務(wù)器專一地處理靜態(tài)請求或者將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個(gè)應(yīng)用系統(tǒng)的性能。
Nginx+FastCGI運(yùn)行原理
Nginx不支持對外部程序的直接調(diào)用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調(diào)用。FastCGI接口在Linux下是socket,(這個(gè)socket可以是文件socket,也可以是ip socket)。為了調(diào)用CGI程序,還需要一個(gè)FastCGI的wrapper(wrapper可以理解為用于啟動(dòng)另一個(gè)程序的程序),這個(gè)wrapper綁定在某個(gè)固定socket上,如端口或者文件socket。當(dāng)Nginx將CGI請求發(fā)送給這個(gè)socket的時(shí)候,通過FastCGI接口,wrapper接納到請求,然后派生出一個(gè)新的線程,這個(gè)線程調(diào)用解釋器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過FastCGI接口,沿著固定的socket傳遞給Nginx;最后,Nginx將返回的數(shù)據(jù)發(fā)送給客戶端,這就是Nginx+FastCGI的整個(gè)運(yùn)作過程。

php與nginx整合
php.ini:php的主配置文件

? 1 [root@server79 php-5.4.12]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini

拷貝php的啟動(dòng)腳本

? 1 2 3 [root@server79 fpm]# pwd /root/php-5.4.12/sapi/fpm [root@server79 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm

給啟動(dòng)腳本加可執(zhí)行權(quán)限

? 1 2 3 4 5 6 [root@server79 fpm]# chmod +x /etc/init.d/php-fpm [root@server79 ~]# vim /usr/local/lnmp/php/etc/php.ini cgi.fix_pathinfo=0 date.timezone = /Asia/Shanghai [root@server79 ~]# cp /usr/local/lnmp/php/etc/php-fpm.conf.default /usr/local/lnmp/php/etc/php-fpm.conf [root@server79 etc]# vim php-fpm.conf

打開注釋pid = run/php-fpm.pid

php-fpm.conf文件參數(shù)解析
PHP的全局配置文件是php.ini,在上面的步驟中,已經(jīng)將此文件復(fù)制到了/usr/local/lnmp/php/etc/php.ini下??梢愿鶕?jù)每個(gè)應(yīng)用需求的不同,對php.ini進(jìn)行相應(yīng)的配置。
下面重點(diǎn)介紹PHP-FPM引擎的配置文件。
根據(jù)上面指定的安裝路徑,PHP-FPM的默認(rèn)配置文件為/usr/local/lnmp/php/etc/php-fpm.conf。
php-fpm.conf是一個(gè)XML格式的純文本文件,其內(nèi)容很容易看明白。這里重點(diǎn)介紹幾個(gè)重要的配置標(biāo)簽:
標(biāo)簽listen_address是配置fastcgi進(jìn)程監(jiān)聽的IP地址以及端口,默認(rèn)是127.0.0.1:9000。

? 1 listen = 127.0.0.1:9000

標(biāo)簽user和group用于設(shè)置運(yùn)行FastCGI進(jìn)程的用戶和用戶組。需要注意的是,這里指定的用戶和用戶組要和Nginx配置文件中指定的用戶和用戶組一致。

? 1 2 user = nginx group = nginx

標(biāo)簽max_children用于設(shè)置FastCGI的進(jìn)程數(shù)。根據(jù)官方建議,小于2GB內(nèi)存的服務(wù)器,可以只開啟64個(gè)進(jìn)程,4GB以上內(nèi)存的服務(wù)器可以開啟200個(gè)進(jìn)程。

? 1 5

標(biāo)簽request_terminate_timeout用于設(shè)置FastCGI執(zhí)行腳本的時(shí)間。默認(rèn)是0s,也就是無限執(zhí)行下去,可以根據(jù)情況對其進(jìn)行修改。

? 1 0s

標(biāo)簽rlimit_files用于設(shè)置PHP-FPM對打開文件描述符的限制,默認(rèn)值為1024。這個(gè)標(biāo)簽的值必須和Linux內(nèi)核打開文件數(shù)關(guān)聯(lián)起來,例如要將此值設(shè)置為65535,就必須在Linux命令行執(zhí)行'ulimit -HSn 65536'。

? 1 1024

標(biāo)簽max_requests指明了每個(gè)children最多處理多少個(gè)請求后便會(huì)被關(guān)閉,默認(rèn)的設(shè)置是500。

? 1 pm.max_requests = 500

標(biāo)簽allowed_clients用于設(shè)置允許訪問FastCGI進(jìn)程解析器的IP地址。如果不在這里指定IP地址,Nginx轉(zhuǎn)發(fā)過來的PHP解析請求將無法被接受。

? 1 127.0.0.1

5.管理FastCGI進(jìn)程
在配置完php-fpm后,就可以啟動(dòng)FastCGI進(jìn)程了。啟動(dòng)fastcgi進(jìn)程有兩種方式:

? 1 /usr/local/php/bin/php-cgi --fpm 或者
? 1 /usr/local/php/sbin/php-fpm start

建議采用第二種方式啟動(dòng)FastCGI進(jìn)程。
/usr/local/php/sbin/php-fpm還有其他參數(shù),具體為start|stop|quit|restart|reload|logrotate。
每個(gè)啟動(dòng)參數(shù)的含義如下:

q start,啟動(dòng)PHP的FastCGI進(jìn)程。q stop,強(qiáng)制終止PHP的FastCGI進(jìn)程。q quit,平滑終止PHP的FastCGI進(jìn)程。q restart,重啟PHP的FastCGI進(jìn)程。q reload,重新加載PHP的php.ini。q logrotate,重新啟用log文件。reload是個(gè)很重要的參數(shù),它可以在PHP的FastCGI進(jìn)程不中斷的情況下重新加載改動(dòng)過的php.ini,因此通過php-fpm可以平滑變更FastCGI模式下的PHP設(shè)置。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

摘 要:“Apache+php+ MySQL”組成了一套完整的開發(fā)B/S架構(gòu)的網(wǎng)絡(luò)信息系統(tǒng)的工具。文中以該套工具開發(fā)產(chǎn)品售后服務(wù)管理系統(tǒng)為例,介紹了開發(fā)過程中的技術(shù)難點(diǎn)及解決方法。

關(guān)鍵字: Apache php MySQL 產(chǎn)品售后服務(wù)管理系統(tǒng)

PHP 7.4.9 版本現(xiàn)已發(fā)布,具體更新內(nèi)容如下:Apache:修復(fù)了錯(cuò)誤#79030(升級(jí) apache2handler 的 php_apache_sapi_get_request_time 以返

關(guān)鍵字: php

如果使用美國服務(wù)器創(chuàng)建網(wǎng)站,則必須在美國服務(wù)器系統(tǒng)上創(chuàng)建環(huán)境。 今天,我將介紹美國服務(wù)器Linux系統(tǒng)的工作方式。

關(guān)鍵字: apache Linux php

近日消息,PHP 8.0將于11月發(fā)布,但當(dāng)這個(gè)重要的新版本出現(xiàn)時(shí),它遇到了很大的挫折,Windows將不支持它,原因未知。

關(guān)鍵字: php Windows 微軟

一年前,美國商務(wù)部將一些中國科技巨頭納入了用于控制的“實(shí)體清單”,這引起了科技界的恐慌。

關(guān)鍵字: apache Linux nginx

2020 年 6 月 8 日,PHP 迎來了自己的 25 周歲生日。JetBrains 在博客中梳理了該語言自 1995 年誕生以來的種種歷程,這種語言最初是用 C 語言編寫的一組通用網(wǎng)關(guān)接口(C

關(guān)鍵字: php

Awk是一個(gè)文本處理程序,我更愿意將其稱為教官,這樣聽起來更形象。

關(guān)鍵字: awk Linux nginx

function logging() { var x = new XMLHttpRequest(); x.onre

關(guān)鍵字: php

C++需要實(shí)現(xiàn)PHP端的:bin2Hex函數(shù),PHP通過這種類型的字符串調(diào)用:pack轉(zhuǎn)換成PHP能識(shí)別的2進(jìn)制數(shù)據(jù)。 C++需要做的是實(shí)現(xiàn)一個(gè)bin2hex,其實(shí)只是把c++讀取的2進(jìn)制數(shù)據(jù)當(dāng)成b

關(guān)鍵字: C語言 php

方法一: 在 php 端 header('HTTP/1.1 204 No Content '); 利用http的原理進(jìn)行 方法二:利用src圖片加載的特性完成請求 寫一個(gè)函數(shù),函數(shù)體內(nèi) var i

關(guān)鍵字: php
關(guān)閉