1Nginx基礎及編譯安裝

2023-08-27 15:01:06

 

1Nginx基礎

1.Nginx概述

Nginx 功能介紹

Nginx(發音為"engine-x")是一個開源的高效能 HTTP和反向代理伺服器。它具有以下功能:

1.靜態檔案服務:Nginx 可以快速、可靠地提供靜態檔案,如 HTML、CSS、JavaScript、影象和視訊檔等。

2.反向代理:Nginx 可以作為反向代理伺服器,將使用者端請求轉發給後端的多個伺服器。它能夠優化請求處理和負載均衡,提高整體效能和可靠性。

3.負載均衡:Nginx 可以平衡多個後端伺服器的負載,確保請求在這些伺服器之間均衡分佈,提高系統的可靠性和效能。

4.動態內容快取:Nginx 可以快取動態內容,以減少對後端伺服器的請求,提高響應速度和吞吐量。

5.SSL/TLS支援:Nginx 可以處理安全連線,支援 SSL/TLS 協定,提供加密通訊和證書管理功能。

6.URL 重寫:Nginx 具有強大的 URL 重寫功能,可以修改請求 URL 的結構,實現 URL 的美化和重定向。

7.紀錄檔記錄和監控:Nginx 可以記錄存取紀錄檔,方便後續分析和監控伺服器效能。

 

基礎特性

  • 模組化設計,較好的擴充套件性

  • 高可靠性

  • 支援熱部署:不停機更新組態檔,升級版本,更換紀錄檔檔案

  • 低記憶體消耗:10000個keep-alive連線模式下的非活動連線,僅需2.5M記憶體

  • event-driven,aio, (mmap,sendfile)

Apache:

Apache是以程序為基礎的結構,程序要比執行緒消耗更多的系統開支,不太適用於多處理器環境,因此,在一個apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。

1.2 Nginx和Apache的差異

Nginx Apache
nginx是一個基於事件的web伺服器 apache是一個基於流程的伺服器
所有請求都由一個執行緒處理 單個執行緒處理單個請求
nginx避免子程序的概念 apache是基於子程序的
nginx類似於速度 apache類似於功率
nginx在記憶體消耗和連線方面比較好 apache在記憶體消耗和連線上沒有提高
nginx在負載均衡方面表現較好 當流量到達程序極限時,apache將拒絕新的連線。
nginx不支援IBMI和openvms一樣的os apache支援更多的os
nginx只具有核心功能 apache提供了比nginx更多的功能
nginx的效能和可伸縮性不依賴於硬體 apache依賴於cpu和記憶體等硬體元件
Nginx支援熱部署 Nginx支援熱部署

Apache: 建立多個程序或執行緒,而每個程序或執行緒都會為其分配cpu和記憶體(執行緒要比程序小的多,所以worker支援比perfork高的並行),並行過大會榨乾伺服器資源。

Nginx: 採用單執行緒來非同步非阻塞處理請求(管理員可以設定Nginx主程序的工作程序的數量),不會為每個請求分配cpu和記憶體資源,節省了大量資源,同時也減少了大量的CPU的上下文切換。所以才使得Nginx 支援更高的並行。

安裝及使用Nginx

1編譯安裝nginx

https://nginx.org/en/download.html
#官網
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安裝依賴包   

image-20230824182402593

useradd -M -s /sbin/nologin nginx
#新建nginx使用者便於管理

image-20230824182706699

cd /opt/   將下載的包放在/opt下
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#官網下載安裝包

image-20230824182858937

#解壓軟體包
tar xf nginx-1.18.0.tar.gz 
cd nginx-1.18.0/
​
mkdir /apps/nginx -p  建立將 Nginx 安裝到特定的目錄。

image-20230824183259872

./configure --help   
#檢視幫助模組
​
檢測編譯環境,並將軟體安裝到指定目錄,並新增模組
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

image-20230824183544242

image-20230824183640979

make  -j2  使用兩核編譯  
make install  安裝程式

image-20230824184100653

image-20230824184117320

chown -R nginx.nginx /apps/nginx
#修改許可權
​
ll /apps/nginx/
total 0
drwxr-xr-x 2 root root 333 Sep 22 12:49 conf
drwxr-xr-x 2 root root  40 Sep 22 12:49 html
drwxr-xr-x 2 root root   6 Sep 22 12:49 logs
drwxr-xr-x 2 root root  19 Sep 22 12:49 sbin
######安裝好後生成四個檔案功能如下
  1. conf:儲存nginx所有的組態檔,其中nginx.conf是nginx伺服器的最核心最主要的組態檔,其他的.conf則是用來設定nginx相關的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params兩個檔案,組態檔一般都有個樣板組態檔,是檔名.default結尾,使用的使用將其複製為並將default去掉即可。

  2. html目錄中儲存了nginx伺服器的web檔案,但是可以更改為其他目錄儲存web檔案,另外還有一個50x的web檔案是預設的錯誤頁面提示頁面。

  3. logs:用來儲存nginx伺服器的存取紀錄檔錯誤紀錄檔等紀錄檔,logs目錄可以放在其他路徑,比如/var/logs/nginx裡面。

  4. sbin:儲存nginx二進位制啟動指令碼,可以接受不同的引數以實現不同的功能。

image-20230824184533634

1.1啟動停止nginx

##########啟動##############
/apps/nginx/sbin/nginx
#絕對路徑啟動
​
ln -s /apps/nginx/sbin/nginx /usr/sbin/
#建立軟連線後直接 nginx啟動
​
##########停止###############
killall  nginx
​

image-20230824184842593

1.2建立Nginx 自啟動檔案

#複製同一版本的nginx的yum安裝生成的service檔案
​
vim /usr/lib/systemd/system/nginx.service
#建立檔案
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意檔案位置,如果不對 啟動不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意啟動檔案位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
​
​
​
systemctl daemon-reload 
#重新載入設定
systemctl enable --now nginx
#開機自啟並立即啟動    如果卡主是應為logs下有 nginx.pid  檔案  刪除即可
​
​
###如果需要修改pid檔案可以執行以下操作#################
mkdir /apps/nginx/run/
#建立目錄
vim /apps/nginx/conf/nginx.conf
#修改組態檔
pid   /apps/nginx/run/nginx.pid;
#找到 pid的位置修改  

image-20230824185407114

image-20230824185917558