(1)
lnmp的工作流程:
當lnmp工作的時候,首先是使用者通過瀏覽器輸入網域名稱請求nginx web服務,如果是請求的是靜態的資源,則由nginx解析返回給使用者。
如果是動態的資源,那麼久通過fast cgi介面傳送給php引擎服務(fast cgi程序php-fpm)進行解析。
如果這個動態的請求要讀取資料庫,那麼php就會繼續向後請求mysql資料庫,讀取需要的資料。
最終通過nginx服務把獲取的資料返回給使用者,這就是lnmp的基本流程。
(2)企業選用mysql作為資料庫的優點:
1.效能卓越,服務穩定,很少出現異常宕機。
2.開放源**並且沒有版權的限制,自主傳播,使用成本低。
3.歷史悠久,社群及使用者非常活躍,遇到問題很快可以獲取幫助。
4.軟體體積小安裝簡單,並且易於維護,安裝及維護的成本低。
5.支援多種作業系統,提供api介面。
6.品牌效應,使得企業無需考慮就直接使用。
(3)lnmp環境搭建問題:
當安裝lnmp一體化環境的時候mysql資料庫要裝在nginx所在的伺服器上,
如果mysql和nginx不在同一臺機器上,那麼nginx伺服器上的mysql資料庫軟體只要解壓移動安裝目錄中就行。
不需要對mysql進行初始化配置。
在php5.3以上的版本中,nginx伺服器上安裝了mysql軟體,只需要在編譯php的時候指定相關引數即可。
編譯引數:--with-mysql=mysqlnd
表示在編譯的時候會呼叫內建的mysql的庫。
(4)什麼是fcgi:
fastcgi是乙個可伸縮的、高速的在http伺服器的動態指令碼語言間通訊的介面(在linux下,fastcgi就是socket,這個socket可以是檔案socket或ipsocket)。
fastcgi採用c/s架構,它可以將http伺服器和指令碼伺服器分開,同時還可以在指令碼解析伺服器上啟動乙個或多個伺服器來解析守護程序。
當http伺服器遇到動態程式的時候,可以將其直接交付給fastcgi程序來執行,然後將得到的結果返回給瀏覽器。這種方式可以讓http伺服器專一的處理靜態的請求。
這會很高的提高整個應用系統的效能。
(5)fastcgi的重要特點:
1.http伺服器和動態指令碼語言間通訊的介面或工具。
2.可以把動態語言解析或http伺服器分離開。
3.nginx、apache、lighttpd,以及多數動態語言都支援fastcgi。
4.php動態語言方式採用c/s結構,分為客戶端(http伺服器)和伺服器端(動態語言解析伺服器)。
5.php動態語言伺服器端可以啟動多個fastcgi的守護程序。
6.http伺服器通過fastcgi客戶端和動態語言fastcgi伺服器端通訊。
(6)nginx fcgi執行原理:
nginx不支援對外部動態程式的直接呼叫或者解析。所有的外部程式(包括php)必須通過fastcgi介面來呼叫。
fastcgi的主要優點就是把動態的語言和http伺服器分離開來,使nginx專門處理靜態的請求,動態的請求直接使用php/php-fpm伺服器專門處理。
企業級API設計
最近對service的api設計,在team內有些討論,主要集中在api是足夠抽象 通用好呢,還是具體 易用好?其實這個是要折衷的,通用的好處是以後更改api的可能性小,但壞處是想要通用,裡面的字段就不能定義太死,不定義死,極端的例子是全部用name value pair,最通用,但client面對...
SpringBoot企業級框架
zebra 微服務框架 springboot zebra4j是一款使用sping boot特性全新開發的微服務web框架,嘗試封裝一些常用框架比如dubbo等作為spring boot元件,結合微服務的框架思想,利用nodejs zebra4js作為應用閘道器,使得各個功能分層服務,持續迭代,解放團...
SpringBoot企業級框架
zebra 微服務框架 springboot zebra4j是一款使用sping boot特性全新開發的微服務web框架,嘗試封裝一些常用框架比如dubbo等作為spring boot元件,結合微服務的框架思想,利用nodejs zebra4js作為應用閘道器,使得各個功能分層服務,持續迭代,解放團...