概念
LNMP指一組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。ngix代碼完全用c語言寫成。
Mysql是一個小型關係型數據庫管理系統。
PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。
這四種軟件均爲免費開源軟件,組合到一起,成爲一個免費、高效、擴展性強的網站服務系統。
lnmp流程
CGI:(Common Gateway Interface,通用網關接口),爲HTTP服務器與其他機器上的程序服務通信交流的一種工具,CGI程序須運行在網絡服務器上。
傳統CGI接口方式的主要缺點是性能較差,因爲每次HTTP服務器遇到動態程序時都需要重新啓動解析器來執行解析,之後結果纔會被返回給HTTP服務器。這在處理高併發訪問時幾乎是不可用的,因此就誕生了FastCGI。
FastCGI:(簡單的負載均衡和容錯)是一個可伸縮的,高速地在HTTP服務器和動態腳本語言間通信的接口(在Linux下,FastCGI接口即爲socket,這個socket可以是文件socket,也可以是IP socket),主要優點是把動態語言和HTTP服務器分離出來。多數流行的HTTP服務器都支持FastCGI,包括Apache,Nginx和Lighttpd等。
FastCGI接口採用的是C/S架構,它可以將HTTP服務器和腳本解析服務器分開,同時還能在腳本解析服務器上啓動一個或多個腳本來解析守護進程。當HTTP服務器遇到動態程序時,可以將其直接交付給FastCGI進程來執行,然後將得到的結果返回給瀏覽器。這種方式可以讓HTTP服務器專一地處理靜態請求,或者將動態腳本服務器的結果返回給客戶端,這在很大程度上提高了整個應用系統的性能。
Nginx fastCGI的運行原理
Nginx不支持對外部動態程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調用。FastCGI接口在Linux下是socket,爲了調用CGI程序,還需要一個FastCGI的wrapper(可以理解爲用於啓動另一個程序的程序),這個wrappper綁定在某個固定的socket上,如端口或文件socket。當Nginx將CGI請求發送給這個socket的時候,通過FastCGI接口,wrapper接收到請求,然後派生出一個新的線程,這個線程調用解釋器或外部程序處理腳本來讀取返回的數據;接着,wrapper再將返回的數據通過FastCGI接口,沿着固定的socket傳遞給Nginx;最後,Nginx將返回的數據發送給客戶端,這就是Nginx+FastCGI的整個運作過程。
php-fpm:(FastCGI Process Manager:FastCGI進程管理器)是一個PHPFastCGI管理器,提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置。
進程包含 master 進程和 worker 進程兩種進程。 master 進程只有一個,負責監聽端口,接收來自 Web Server 的請求,而 worker 進程則一般有多個(具體數量根據實際需要配置),每個進程內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正執行的地方。
環境搭建
我用的是redhat7.2的鏡像,此處附上我滴鏈接~~~
1、nginx
https://blog.csdn.net/weixin_39373989/article/details/97525640
2、php
https://blog.csdn.net/weixin_39373989/article/details/97635592
3、mysql
https://blog.csdn.net/weixin_39373989/article/details/97765446
之後用把php與nginx和mysqsl相連,簡單的環境搭建完成。