php-fpm,cgi,fast-cgi,nginx,php.ini,php-fpm.conf,nginx.conf

php-fpm.conf 是PHP-FPM特有的配置文件。php

php.ini 是因此php模式中必須的配置文件。html

二者的區別是,php-fpm.conf 是PHP-FPM進程管理器的配置文件,php.ini 是PHP解析器的配置文件。python

cgi、fast-cgi協議

早期的webserver只處理html等靜態文件,可是隨着技術的發展,出現了像php等動態語言。 webserver處理不了了,怎麼辦呢?那就交給php解釋器來處理吧! 交給php解釋器處理很好,可是,php解釋器如何與webserver進行通訊呢?nginx

爲了解決不一樣的語言解釋器(如php、python解釋器)與webserver的通訊,因而出現了cgi協議。只要你按照cgi協議去編寫程序,就能實現語言解釋器與webwerver的通訊。如php-cgi程序。web

有了cgi協議,解決了php解釋器與webserver通訊的問題,webserver終於能夠處理動態語言了。 可是,webserver每收到一個請求,都會去fork一個cgi進程,請求結束再kill掉這個進程。這樣有10000個請求,就須要fork、kill php-cgi進程10000次。後端

有沒有發現很浪費資源?php-fpm

因而,出現了cgi的改良版本,fast-cgi。fast-cgi每次處理完請求後,不會kill掉這個進程,而是保留這個進程,使這個進程能夠一次處理多個請求。這樣每次就不用從新fork一個進程了,大大提升了效率。網站

php-fpm是什麼

php-fpm即php-Fastcgi Process Manager。 php-fpm是 FastCGI 的實現,並提供了進程管理的功能。 進程包含 master 進程和 worker 進程兩種進程。 master 進程只有一個,負責監聽端口,接收來自 Web Server 的請求,而 worker 進程則通常有多個(具體數量根據實際須要配置),每一個進程內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正執行的地方。spa

nginx與php-fpm配合

Nginx不僅有處理http請求的功能,還能作反向代理。 Nginx經過反向代理功能將動態請求轉向後端Php-fpm。代理

server {
    listen       80; #監聽80端口,接收http請求
    server_name  www.example.com; #就是網站地址
    root  /home/wwwroot/default/example/public; # 準備存放代碼工程的路徑
    #路由到網站根目錄www.example.com時候的處理

    #當請求網站下php文件的時候,反向代理到php-fpm
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf; #加載nginx的fastcgi模塊
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000; #nginx fastcgi進程監聽的IP地址和端口
    }

}

相關文章
相關標籤/搜索