歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> FastCGI與PHP,FastCGIPHP

FastCGI與PHP,FastCGIPHP

日期:2017/3/3 17:24:54   编辑:學習Linux

FastCGI與PHP,FastCGIPHP


熱度5 評論 195 www.BkJia.Com 網友分享於: 2017-02-27 04:02:58 浏覽數19576次

FastCGI與PHP,FastCGIPHP


什麼是CGI

CGI全稱"通用網關接口"(Common Gateway Interface),用於HTTP服務器與其它機器上的程序服務通信交流的一種工具,CGI程序須運行在網絡服務器上。

傳統CGI接口方式的主要缺點是性能較差,因為每次HTTP服務器遇到動態程序時都需要重啟解析器來執行解析,然後結果被返回給HTTP服務器。這在處理高並發訪問幾乎是不可用的,因此就誕生了FastCGI。另外傳統的CGI接口方式安全性也很差。

什麼是FastCGI

FastCGI是一個可伸縮地、高速地在HTTP服務器和動態腳本語言間通信的接口(FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)),主要優點是把動態語言和HTTP服務器分離開來。多數流行的HTTP服務器都支持FastCGI,包括Apache、Nginx和lightpd。

同時,FastCGI也被許多腳本語言所支持,比較流行的腳本語言之一為PHP。FastCGI接口方式采用C/S架構,可以將HTTP服務器和腳本解析服務器分開,同時在腳本解析服務器上啟動一個或多個腳本解析守護進程。當HTTP服務器每次遇到動態程序時,可以將其直接交付給FastCGI進程執行,然後將得到的結構返回給浏覽器。這種方式可以讓HTTP服務器專一地處理靜態請求或者將動態腳本服務器的結果返回給客戶端,這在很大程度上提高了整個應用系統的性能。

FastCGI的重要特點:

1、FastCGI是HTTP服務器和動態腳本語言間通信的接口或者工具。

2、FastCGI優點是把動態語言解析和HTTP服務器分離開來。

3、Nginx、Apache、Lighttpd以及多數動態語言都支持FastCGI。

4、FastCGI接口方式采用C/S架構,分為客戶端(HTTP服務器)和服務端(動態語言解析服務器)。

5、PHP動態語言服務端可以啟動多個FastCGI的守護進程。

6、HTTP服務器通過FastCGI客戶端和動態語言FastCGI服務端通信。

Nginx FastCGI的運行原理

Nginx不支持對外部動態程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調用。FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)。為了調用CGI程序,還需要一個FastCGI的wrapper,這個wrapper綁定在某個固定socket上,如端口或者文件socket。當Nginx將CGI請求發送給這個socket的時候,通過FastCGI接口,wrapper接收到請求,然後派生出一個新的線程,這個線程調用解釋器或者外部程序處理腳本並讀取返回數據;接著,wrapper再將返回的數據通過FastCGI接口,沿著固定的socket傳遞給Nginx;最後,Nginx將返回的數據發送給客戶端,這就是Nginx+FastCGI的整個運作過程。

FastCGI的主要優點是把動態語言和HTTP服務器分離開來,是Nginx專一處理靜態請求和向後轉發動態請求,而PHP/PHP-FPM服務器專一解析PHP動態請求。

檢查安裝PHP所需lib庫

php程序在開發及運行時會調用一些zlib、gb 函數庫,因此需要安裝下面的庫。

安裝yum無法安裝的libiconv庫

安裝libmcrypt庫

快速安裝方法:

安裝epel源

安裝PHP依賴包

安裝libicov

同上。

安裝libmcrypt

安裝mhash加密擴展庫

Mhash是基於離散數學原理的不可逆向的php加密方式擴展庫,其在默認情況下不開啟。mhash可以用於創建校驗數值、消息摘要、消息認證碼,以及無需原文的關鍵信息保持(如密碼)等。

安裝mcrypt加密擴展庫

PHP程序員在編寫代碼程序時,除了要保證代碼的高性能之外,還有一點是非常重要的,那就是程序的安全性保障。PHP除了自帶的幾種加密函數外,還有功能更全面的PHP加密擴展庫mcrypt和mhash。

安裝PHP

lnmp服務器

編譯安裝

cannot find –lltdl解決辦法,需要安裝libltdl。

重新回到PHP的安裝目錄下進行查詢編譯PHP。

創建軟連接

mysql服務器

編譯安裝

創建軟連接

配置PHP引擎配置文件php.ini

配置PHP服務(FastCGI模式)配置文件php-fpm.conf

指定pid路徑:pid = /app/logs/php-fpm.pid

進程管理的錯誤日志路徑:error_log = /app/logs/php-fpm.log

錯誤日志級別:log_level = error

主進程文件描述符:rlimit_files = 32768

模型:events.mechanism = epoll

用戶和組:

listen.owner = nginx

listen.group = nginx

最大進程數:pm.max_children = 1024

開始啟動進程數:pm.start_servers = 16

最小空閒進程數:pm.min_spare_servers = 5

最大空閒進程數:pm.max_spare_servers = 20

超時時間:pm.process_idle_timeout = 15s;

每個進程最大請求:pm.max_requests = 2048

慢查詢:slowlog = /app/logs/$pool.log.slow

超時時間:request_slowlog_timeout = 10

郵箱地址:php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected]

啟動PHP

查看端口

配置PHP與Nginx

浏覽器訪問

配置PHP與MySQL

部署一個BLOG程序服務

https://cn.wordpress.org/

WordPress是一套利用PHP語言和MySQL數據庫開發的開源免費的Blog(博客、網站)程序,用戶可以在支持PHP環境和MySQL數據庫的服務器上建立Blog站點。

WordPress是一個功能非常強大的博客系統,插件眾多,易於擴展功能。安裝和使用都非常方便。目前WordPress已經成為主流的Blog搭建平台,很多發布平台也是根據WordPress二次開發的。

創建一個專用的數據庫WordPress用於存放blog數據。

創建一個管理的數據庫WordPress的用戶wordpress。

部署WordPress

權限設置

默認目錄權限:dir 755 root root

默認文件權限:file 644 root root

用戶目錄權限:dir nginx nginx 755

用戶文件權限:file nginx nginx 644

浏覽器訪問http://blog.etiantian.org/index.php

根據提示創建wp-config.php,然後點擊"進行安裝"。

數據庫中查看安裝結果

http://www.bkjia.com/Linuxjc/1195849.htmlwww.bkjia.comtrue

Copyright © Linux教程網 All Rights Reserved