Linux之Nginx安裝及配置原理篇(一)

Nginx安裝及配置

前情回顧

  • 首先針對Nginx進程模型,我們回顧一下它的原理機制,我們知道它是通過Master通過fork分發任務節點給予work節點,然后work節點觸發了event事件,之后通過一個access_muttex互斥鎖,來單線程調用我們的資源,之后就完成了服務間資源的調度和分配了

  • 在Nginx模型中有很多服務模塊供我們使用,比如核心模塊HTTP模塊、EVENT模塊、MAIL模塊,還有一些常用模塊及其一些第三方模塊HTTP fastcgi、HTTP Proxy等模塊

  • 關于這些模塊我們可以按功能可以分為三大類handler處理模塊、Filters模塊以及Proxy代理模塊,Handler用于處理請求,Filters對請求進行過濾,Proxy用做代理服務器,使用應用場景可以參考下圖:

    請添加圖片描述

    ?

    Nginx安裝流程

首先檢查外網環境是否能正常使用和檢查yum是否能正常使用

  • 檢測網絡能否正常連接

請添加圖片描述

若網絡無法正常使用:建議檢查DNS服務、網卡信息以及yum國內源是否已經配置,防火墻是否正常關閉,然后重啟網卡

  • 安裝Nginx依賴環境
#	PCRE庫安裝 
yum -y install pcre-devel.x86_64		 #	切換安裝路徑
cd /usr/src#  這里以Nginx1.26.1版本為例,首先進行源碼的安裝
wget -c http://nginx.org/download/nginx-1.26.1.tar.gz #	解壓tar.gz包
tar -xzf nginx-1.26.1.tar.gz#	進入Nginx解壓目錄,修改Nginx版本信息為JWS(預防機型兼容問題)
cd nginx-1.26.1 
sed -i -e 's/1.26.1//g' -e 's/nginx\//JWS/g' -e 's/"NGINX"/"JWS"/g' src/core/nginx.h#	預編譯
useradd www 	# 創建用戶
userdel -r www 2>/dev/null || true;	# 若存在重復用戶,予以刪除# 編譯依賴環境說明:這一部分表示創建用戶(useradd -r -s /sbin/nologin www),http_stub_status_module(用于檢查Nginx是否為運行狀態)、 http_ssl_module(啟用http和ssl支持),http_realip_module(如果有cdn或負載均衡,此模塊能記錄真實的ip),http_gzip_static_module(使用gzip對模塊進行壓縮)useradd -r -s /sbin/nologin www && ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module# 編譯并安裝
make&&make install#檢查是否安裝成功,看到ok就安裝成功啦!
/usr/local/nginx/sbin/nginx -t#啟動Nginx并檢查后臺進程運行狀態
/usr/local/nginx/sbin/nginx    #啟動命令
ps -ef | grep nginx      #檢查后臺進程是否運行(需要看到master,worker)############      			至此Nginx就安裝成功了        		   ############

我們看到運行能成功運行后的進程使用情況如下:

請添加圖片描述

并且此時我們就可以通過訪問我們本機網卡本機ip就可以訪問了我們的Ngixn服務了
請添加圖片描述

Nginx服務無法正常使用如何排查解決方案

  • 首先檢查服務狀態是否正常
/usr/local/nginx/sbin/nginx -s reload 	#修改Nginx配置需要使用該配置文件加載Nginx配置
/usr/local/nginx/sbin/nginx -s stop		#暫停Nginx服務
/usr/local/nginx/sbin/nginx				#啟動Nginx服務

關閉了Nginx服務

請添加圖片描述

  • 如果Nginx服務在關閉時出現報錯,有進程和端口占用的情況
ps -ef | grep nginx   #排查Nginx進程占用情況

請添加圖片描述

  • 使用kill命令殺進程
## 第一種方式    直接通過服務名刪除
pkill -9 nginx
## 第二種方式(我是根據我的圖片哈,大家只需要看自己占用的進程號即可)	通過ps命令查看后,選擇占用的進程號進行殺死
kill -9 5182 && kill -9 5183
  • 然后通過該命令繼續排查,若沒有輸出內容,則表示無Nginx服務在運行
netstat -tnlp | grep nginx     		## 檢查服務
netstat  -tnlp | grep -E "80|443"   ##檢查服務是否有端口占用

檢查端口是否還在正在運行

【處于運行狀態】

請添加圖片描述

【處于非運行狀態】

請添加圖片描述

  • 上述問題排查后發現還有問題,可以檢查一次防火墻狀態,觀察是否開放端口或者保持關閉防火墻
# 	防火墻狀態
systemctl status firewalld.service
#	防火墻打開
systemctl start firewalld.service
#	防火墻關閉
systemctl stop firewalld.service
#	防火墻重啟
systemctl restart firewalld.service

防火墻打開,我們就需要開放80端口

請添加圖片描述

# 開放端口使用命令
firewall-cmd --zone=public --add-port=80/tcp --permanent

開放80端口,之后重啟防火墻,讓配置生效

請添加圖片描述

請添加圖片描述

防火墻關閉

請添加圖片描述

Nginx配置文件詳解

我們安裝完Nginx服務器之后,就讓我們一起來聊聊Nginx服務器以便于我們后期更好的運維和管理Nginx服務器

首先Nginx服務器是存放在/usr/local/nginx/conf/nginx.conf路徑下,下面我們就來分析一下nginx.conf這個配置文件相關信息吧!!!

  • 首先來查詢一下Ngixn中worker進程使用情況(監測worker狀態)
ps -eo psr,pid,args | grep nginx

請添加圖片描述

  • 監測Nginx占用cpu利用率

    top -p $(pgrep -d ',' nginx)
    

    請添加圖片描述

下面我們進入這個文件來分析一下這個文件

  • user nobody這里代表Ngiinx指定運行的用戶和用戶組
  • worker_processes則負責cpu內核進程數的調整
  • events則代表事件處理模塊
  • error_log代表錯誤日志存放位置,后面的notice、info錯誤日志優先級(notice>info)
  • pid代表Nginx主進程id路徑地
  • events代表事件處理模塊忙著里面用worker_connectin 設置了worker線程的最大連接數,當然我們也還可以在這里面設置其他屬性設置worker進程,比如說 multi-accept on加上這個屬性可以讓worker進程一次接收多個連接

請添加圖片描述

HTTP模塊之虛擬服務器配置

  • Http屬性配置部分

在Http模塊中,include里面包含中其他配置文件,senfile用于高效文件傳輸,keepalive_timeout代表保持連接超時的時間,gzip用于壓縮.

請添加圖片描述

  • Server定義的虛擬機部分
  • 在Server模塊中的配置通常會設置listen監聽端口、定義server_name,以及根據設置location 的值設置網頁所在的根目錄,以及在該目錄下要查找的頁面索引
  • 在設置location屬性時,如果我們單個的將頁面都填入index索引,顯然會顯得十分繁瑣,為此我們引入了URL匹配規則和處理方式精準匹配(=)、前綴匹配(^~)、正則匹配(~或~*)

請添加圖片描述

  • location中可以設置屬性設置root文件系統路徑,try_file設置順序查找文件, 通過expires來設置緩存

Nginx虛擬主機實戰

5.1虛擬主機好比虛擬服務克隆技術,針對同一個WEB服務端部署多個網頁,這也是我們俗稱的一臺服務多個站點

請添加圖片描述

5.2 實現步驟:創建兩個WEB網頁目錄,并且分別部署到不同的index.html頁面,然后我在我的nginx服務器上部署兩個不同的Web站點,端口位于同一端口

虛擬服務server組成(listen、server_name、location)

# 1. 打開nginx.conf文件
vim /usr/local/nginx/conf/nginx.conf# 2.在HTTP模塊中增加server模塊(增加2個虛擬服務)
server{listen 80;server_name www.111.com;access_log logs/exp.access.log;      #日志文件location /{	root html/tt1;				  #web系統目錄index index.html index.htm;    #索引}
}server{listen 80;server_name www.666.com;access_log logs/exp2.access.log;   #日志文件location /{root html/tt2;                #web系統目錄index index.html index.htm;   #索引}
}# 3.dns域名服務加載,修改hosts文件目錄c://windows/system32/divers/hosts,這里將www.111.com和www.666.com放在本地hosts路徑實現ip路徑映射(host 文件加入內容---->主機IP 映射域名   例如:10.2.53.5 www.666.com)# 5.切換目錄,創建網頁
cd /usr/local/nginx/html/
mkdir {tt1,tt2}
# 將index.html拷貝一份用戶查看虛擬主機創建效果
cp index.html tt1/   
cp index.html tt2/
#可以嘗試改變index.html內容后面訪問域名可以加以區分# 4.重啟nginx-reload服務
/usr/local/nginx/sbin/nginx -s reload

``

注意不要用谷歌瀏覽器進行訪問可以用IE、Firefox等瀏覽器都可訪問

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81216.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81216.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81216.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式培訓之數據結構學習(五)棧與隊列

一、棧 (一)棧的基本概念 1、棧的定義: 注:線性表中的棧在堆區(因為是malloc來的);系統中的棧區存儲局部變量、函數形參、函數返回值地址。 2、棧頂和棧底: 允許插入和刪除的一端…

深度學習---知識蒸餾(Knowledge Distillation, KD)

一、知識蒸餾的本質與起源 定義: 知識蒸餾是一種模型壓縮與遷移技術,通過將復雜高性能的教師模型(Teacher Model)所學的“知識”遷移到輕量級的學生模型(Student Model),使學生模型在參數量和計…

ARP Detection MAC-Address Static

一、ARP Detection(ARP檢測) ? 定義: ARP檢測是一種防止ARP欺騙攻擊的安全機制。它通過監控或驗證網絡中的ARP報文,來判斷是否存在偽造的ARP信息。 🔍 工作原理: 網絡設備(如交換機&#xf…

基于 Python 的界面程序復現:標準干涉槽型設計計算及仿真

基于 Python 的界面程序復現:標準干涉槽型設計計算及仿真 在工業設計與制造領域,刀具的設計與優化是提高生產效率和產品質量的關鍵環節之一。本文將介紹如何使用 Python 復現一個用于標準干涉槽型設計計算及仿真的界面程序,旨在幫助工程師和…

Python繪制南丁格爾玫瑰圖:從入門到實戰

Python繪制南丁格爾玫瑰圖:從入門到實戰 引言 南丁格爾玫瑰圖(Nightingale Rose Chart),也被稱為極區圖(Polar Area Chart),是一種獨特的數據可視化方式。這種圖表由弗洛倫斯南丁格爾&#xff…

計算機操作系統概要

不謀萬世者,不?謀?時。不謀全局者 ,足謀?域 。 ——陳澹然《寤?》《遷都建藩議》 操作系統 一.對文件簡單操作的常用基礎指令 ls ls 選項 目錄或?件名:羅列當前?錄下的?件 -l:以長格式顯示?件和?錄的詳細信息 -a 或 --all&…

<PLC><視覺><機器人>基于海康威視視覺檢測和UR機械臂,如何實現N點標定?

前言 本系列是關于PLC相關的博文,包括PLC編程、PLC與上位機通訊、PLC與下位驅動、儀器儀表等通訊、PLC指令解析等相關內容。 PLC品牌包括但不限于西門子、三菱等國外品牌,匯川、信捷等國內品牌。 除了PLC為主要內容外,相關設備如觸摸屏(HMI)、交換機等工控產品,如果有…

從專家編碼到神經網絡學習:DTM 的符號操作新范式

1st author: Paul Soulos paper: Differentiable Tree Operations Promote Compositional Generalization ICML 2023 code: psoulos/dtm: Differentiable Tree Machine 1. 問題與思路 現代深度學習在連續向量空間中取得了巨大成功,然而在處理具有顯式結構&#x…

微信小程序第三方代開發模式技術調研與實踐總結

?? 微信小程序第三方代開發模式技術調研與實踐總結 ?? 前言 隨著企業對私有化品牌運營訴求的增加,許多大型客戶希望將原本由 SaaS 平臺統一提供的小程序遷移至自有主體(AppID)下運行,同時又希望繼續沿用 SaaS 平臺的業務服務與數據托管方式。微信開放平臺提供的“小程…

開啟智能未來:DeepSeek賦能行業變革之路

前言 在人工智能重構生產關系的2025年,DeepSeek以其革命性的推理能力和Python生態的技術延展性,正在重塑內容創作與數據智能的邊界。本書以"工具迭代思維升維"為雙輪驅動,構建從認知突破到商業落地的完整知識圖譜。 DeepSeek的崛…

常見三維引擎坐標軸 webgl threejs cesium blender unity ue 左手坐標系、右手坐標系、坐標軸方向

平臺 / 引擎坐標系類型Up(上)方向Forward(前進)方向前進方向依據說明Unity左手坐標系YZtransform.forward 是 Z 軸正方向,默認攝像機朝 Z 看。Unreal Engine左手坐標系ZXUE 的角色面朝 X,默認使用 GetActor…

Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise論文閱讀

冷擴散:無需噪聲的任意圖像變換反轉 摘要 標準擴散模型通常涉及兩個核心步驟:圖像降質 (添加高斯噪聲)和圖像恢復 (去噪操作)。本文發現,擴散模型的生成能力并不強烈依賴于噪聲的選擇&#xf…

Java并發編程核心組件簡單了解

一、Lock體系 1. ReentrantLock(可重入鎖) Lock lock new ReentrantLock(); lock.lock(); try {// 臨界區代碼 } finally {lock.unlock(); }特點:可重入、支持公平/非公平策略優勢:可中斷鎖獲取、定時鎖等待使用場景&#xff1…

第二個五年計劃!

下一階段!5年后!33歲!體重維持在125斤內!腰圍74! 健康目標: 體檢指標正常,結節保持較小甚至變小! 工作目標: 每年至少在一次考評里拿A(最高S,A我理…

Redis(三) - 使用Java操作Redis詳解

文章目錄 前言一、創建項目二、導入依賴三、鍵操作四、字符串操作五、列表操作六、集合操作七、哈希表操作八、有序集合操作九、完整代碼1. 完整代碼2. 項目下載 前言 本文主要介紹如何使用 Java 操作 Redis 數據庫,涵蓋項目創建、依賴導入及 Redis 各數據類型&…

【Folium】使用離線地圖

文章目錄 相關文獻離線地圖下載Folium 使用離線地圖 相關文獻 Folium — Folium 0.19.5 documentationOffline Map Maker 離線地圖下載 我們使用 Offline Map Maker 進行地圖下載。 特別注意:Folium 默認支持 WGS84 坐標系,建議下載 WGS84 坐標系的地…

DeepSearch:字節新一代 DeerFlow 框架

項目地址:https://github.com/bytedance/deer-flow/ 【全新的 Multi-Agent 架構設計】獨家設計的 Research Team 機制,支持多輪對話、多輪決策和多輪任務執行。與 LangChain 原版 Supervisor 相比,顯著減少 Tokens 消耗和 API 調用次數&#…

Qt—用SQLite實現簡單的注冊登錄界面

1.實現目標 本次實現通過SQLite制作一個簡易的登錄窗口,當點擊注冊按鈕時,登錄窗口會消失,會出現一個新的注冊界面;完成注冊或退出注冊時,注冊窗口會消失,重新出現登錄窗口。注冊過的用戶信息會出現在SQLi…

day 18:零基礎學嵌入式之數據結構——

一、基礎內容 1.數據結構:相互之間存在一種或多種特定關系的數據元素的集合。 2.邏輯結構 (1)集合,所有數據在同一個集合中,關系平等。 (2)線性,數據和數據之間是一對一的關系 &am…

【SSL證書系列】客戶端如何驗證https網站服務器發的證書是否由受信任的根證書簽發機構簽發

客戶端驗證HTTPS網站證書是否由受信任的根證書頒發機構(CA)簽發,是一個多步驟的過程,涉及證書鏈驗證、信任錨(Trust Anchor)檢查、域名匹配和吊銷狀態驗證等。以下是詳細的驗證流程: 1. 證書鏈的…