1.Yum源知識理論總結概括
Yum源概述
Yum 源
即軟件倉庫的標識,里面承載著軟件包集合
Yum源組成
包含模塊
【OS】、【everything】、【EPOL】、【debuginfo】、【source】、【update-source】
- 【os】:簡稱operator system 它內部包含操作系統的核心組件(內核、基礎庫、系統工具),是系統運行的最低依賴包結合
- 【everything】:包含官方支持的軟件包(開發工具、第三方包)
- 【debuginfo]:存放著調試符號的文件,用于分析程序崩潰及其性能問題
- 【source]:存放著軟件的源碼,一般用于二次開發或自定義編譯環境
- 【update-source】:源碼更新的模塊包
核心參數分析
-
name :倉庫自定義所取的名字
-
baseurl : 指定倉庫的訪問路徑,在開源的url路徑中, b a s e s e a r c h 代表系統的硬件架構, basesearch代表系統的硬件架構, basesearch代表系統的硬件架構, releasever代表的是系統發行的版本號(一般情況下metalink優先級低于baseurl)
-
enabled: 是否啟用倉庫
-
gpgcheck:代表簽名驗證,其中1代表啟用 0代表禁用,
一旦啟用了gpgcheck,就一定需要寫gpgkey路徑
?
2.Nginx知識理論總結概括
Nginx簡介
Nginx對比與傳統Apache服務器其高性能、輕量級能力更強具體可以從以下幾個方面進行概述,其優點如下:
- 高并發響應速度快,靜態文件并發能力5w/s
- 負載均衡及反向代理能力強
- 系統內存和CPU低占有率
- 可對后端服務進行健康檢查
- 可作為緩存代理服務器和郵件代理服務器
代理服務器
正向代理
好比生活中的代購
它實現的技術原理由代理服務器訪問你外網地址,但這里的客戶端并不是直接找到服務端,通常情況與服務端無法建立直接聯系
正向代理通常位于內外網設備,一般用于翻墻和公司內網連接外網
反向代理
類比我們生活中的例子就好比餐館的客戶點餐情況,客戶來到餐館首先是要求前臺點餐這里的前臺就是反向代理proxy,然后前臺確定好點餐信息后將信息給到后廚由后廚完成相關菜品,這里的技術包括`服務隱藏、負載均衡、緩存加速、安全防護`
總的來說做一個以下的概述,參考如圖:
Nginx功能匯總
-
正向代理與反向代理(
正向代理則用于商品的代購、反向代理則用于處理靜態請求和動態請求
) -
負載均衡(加權輪循、IP哈希)
輪訓:均分到服務器 加權輪循:按服務器的性能分配權重 IP哈希:一個IP固定一個服務 ```?
-
緩存加速:減少后端請求壓力,提高后端動態網頁速度
-
SSL/TLS終止:處理HTTPS解密,減輕后端服務器負載負擔
Nginx工作原理
Nginx工作主要會依賴各種類型模塊,比如我們常說的一些核心模塊
HTTP模塊,EVENT模塊,MAIL模塊
還有些基礎模塊和三方模塊比如HTTP FATCGI,HTTP Proxy,Notice
那這些模塊有什么功能?我們現在主要還是重點來聊聊功能上Nginx三大模塊…
Handler模塊
Handler概念
也叫"處理器模塊",這類模塊主要是為了處理Web請求,并輸出處理信息和修改Header信息等操作,一般來說Handllers處理器模塊只有一個,這個,模塊主要存放于location塊中
location /static{root/data/www; //處理static靜態資源
}location ~\.php${fastcgi pass 127.0.0.1:9000 //HTTP FastCGI模塊}
Handler常用模塊
Handler模塊 | 作用 |
---|---|
ngx_http_static_module | 返回靜態資源模塊HTML/CSS/JS |
ngx_http_fastcgi_module | 將請求轉發至PHP-FPM等FastCGI后端 |
ngx_http_autoindex_module | 自動生成目錄 |
ngx_http_dav_module | 支持DAV協議(文件的上傳和刪除) |
Filter 模塊
Fileter模塊概念
也叫“過濾器模塊”,這類模塊主要用于對處理器請求進行輸出,并且也可以修改請求頭的信息,
最后由Nginx進行輸出。它是針對請求內容進行加工的模塊,如果有多個Filter它將按序處理同一請求
location /{gzip on; //用gzip壓縮過濾add header X custom "example" //添加響應頭過濾器sub filter "old" "new"; //替換文本過濾
}
Filter常用模塊
Filter模塊 | 作用 |
---|---|
nginx_http_gzip_module | 對過濾到的Web請求實現gzip壓縮操作 |
nginx_http_headers_module | 添加或修改響應頭數據 |
nginx_http_sub_module | 替換響應頭中的文本(HTML文本元素) |
nginx_http_image_file_module | 動態圖片調整 |
Proxies模塊
Proxies模塊概念
也叫“代理器模塊”,這類模塊主要用的是Nginx的HTTP Upstream模塊,通常情況會與后端一些服務
比如FastCGI進行交互,負責的是實現服務代理和負載均衡等功能
location /api{proxy_pass http;
}upstream backend{Sever 192.168.1.8 weight= 2Server 192.168.1.9;
}
Proxies常用模塊
Proxy模塊 | 作用 |
---|---|
ngx_http_proxy_module | HTTP反向代理 比如Proxy-pass |
ngx_http_fastcgi_module | fastcgi協議代理(PHP-FPM) |
ngx_http_uwsgi_module | uWSGI協議代理(Python Django) |
ngx_upstream_module | 定義后端服務器組,實現負載均衡(輪詢、IP哈希 ) |
NGINX工作原理總結
由handler作為生產者接收大量請求,然后經過Filter過濾器經過修改響應內容,將其轉發至代理服務器proxy,最后再通過代理將請求轉發到后端服務器,服務端然后將其頁面結果響應給我們前端服務器,也就是我們的瀏覽器(客戶端),然后用戶就能看到內容了。
具體工作流程也可參見下圖:
Nginx進程工作原理
流程分析
- 當Nginx服務器啟動之后,默認會產生一個監聽端口80,并啟動一個master進程,然后這個master進程會生成多個工作進程
- 當master進程開始工作時,會通過listen中的socket,fork出很多worker進程
- 此時worker進程會在新連接到來前變成可讀狀態,從而保證只有一個進程處理該連接,之后再由worker進行在注冊listenfd讀事件前墻accept_mutex互斥鎖,如果搶到了那么此時就會調用accept接收該連接
- 當每個worker進程在accept這個連接之后,就可以處理請求將其響應個客戶端可讀狀態,從而保證只有一個進程處理該連接,之后再由worker進行在注冊listenfd讀事件前墻accept_mutex互斥鎖,如果搶到了那么此時就會調用accept接收該連接
- 當每個worker進程在accept這個連接之后,就可以處理請求將其響應個客戶端