Nginx的安裝及負載均衡搭建

一.Nginx的安裝

1)準備安裝環境

yum install -y make gcc gcc-c++ pcre-devel pcre zlib zlib-devel openssl openssl-devel
  • ?PERE

PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則表達式庫。

nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝pcre庫。

注:pcre-devel是使用pcre開發的一個二次開發庫。nginx也需要此庫

  • ?zlib

zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。

  • openssl

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,

并提供豐富的應用程序供測試或其它目的使用。

nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。

2)下載安裝包

下載地址:nginx: download

Nginx官網提供了三個類型的版本

  • Mainline version:是 Nginx 目前主力在做的版本,可以說是開發版
  • Stable version:最新穩定版,生產環境上建議使用的版本
  • Legacy versions:遺留的老版本的穩定版

3)上傳安裝包并解壓

tar xvf nginx-1.24.0.tar.gz -C /usr/local/

設置軟鏈接

ln -s /usr/local/nginx-1.24.0/ /usr/local/nginx

4)創建用戶和組

groupadd -r nginx
useradd nginx -u 666 -r -g nginx -c "nginx user"
  • groupadd -r nginx: 這個命令用于創建一個名為“nginx”的用戶組,并將其添加到系統中。選項?-r?表示創建系統組。

  • useradd nginx -u 666 -r -g nginx -c "nginx user": 這個命令用于創建一個名為“nginx”的用戶,并將其添加到組“nginx”中。選項?-u 666?表示將用戶的UID設置為666。選項?-r?表示創建系統賬戶。選項?-g nginx?表示將用戶添加到組“nginx”中。選項?-c "nginx user"?表示為用戶指定一個自定義的描述信息,這里是“nginx user”。

5)編譯安裝

./configure \ 
> --user=nginx --group=nginx \
> --prefix=/usr/local/nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module
  • ./confire 用于對將安裝的軟件進行配置,檢查當前的環境是否滿足安裝軟件( Nginx )的依賴關系 。
  • ?--prefix 選項用于設置 Nginx 安裝目錄,默認值是 usr / local/ nginx ,因而也可以省略此選項或指定到其位置,
  • --with-http_ssl_module 選項用于設置在 Nginx 中允許使用 http_ss modu 模塊的相關功能。
  • 行尾的 '\'表示未結束需要換到下一行書寫。
  • "--with-"選項用于添加模塊,Nginx中有很多模塊,需要安裝時只需要重新編譯在通過選項添加模塊即可
make && make install

????????"&&"符號根據前一個命令的返回值決定是否執行后一個命令,前一個成功執行就會執行后面這個命令,這樣可以減少手動操作,當然也可以一次執行命令。

6)啟動Nginx:

進入Nginx的目錄的sbin下

cd /usr/local/nginx/sbin/
./nginx

執行成功不會有任何信息返還,使用ps命令查看

ps aux | grep nginx

?7)停止Nginx:

1.立即停止服務:

./nginx -s stop

?注意:這種停止方法不管當前工作進程是否在處理工作,立即停止工作,使用這種需注意。

?2.從容停止服務:

./nginx -s quit

這種停止方法會在進程處理完后再停止服務

3.使用kill命令關閉進程

?通過ps命令獲取Nginx進程的PID,使用kill命令關閉進程或使用killall命令

kill nginx PID
killall nginx

注意:nginx啟動后會自動監聽80端口,如80端口被占用則會啟動失敗。

?netstat -tlnp查看端口占用

?Nginx 的主進程正在監聽?TCP 協議 80 端口 ,說明 Nginx目前已經啟動。另外,netstat 命令的四個選項:t、l、n、p分別表示查看tcp協議、查看監聽服務、不解析名稱以及顯示進程名和 PID。

8)添加服務腳本:

由于每次啟動nginx都需要到安裝目錄下啟動,十分麻煩所以添加服務腳本可以大大的減少這種操作。

在CentOS 7中,服務的systemctl腳本被存放在/usr/lib/systemd/目錄下。這個目錄下有system和user兩個子目錄,分別存放系統服務和用戶服務的相關腳本。

如果你想要開機就能運行的程序,即:不需要登錄即可運行的服務。最好將其作為系統服務來管理。對于系統服務,你可以將相關的腳本文件放置在/usr/lib/systemd/system目錄下。

每一個服務腳本一般包含三個部分:[Unit]、[Service]和[Install]。這些部分分別定義了服務的單位(Unit)、服務本身的配置(Service)以及服務的安裝相關設置(Install)。

  • [Unit]部分包含關于服務的元數據,例如服務的描述、依賴關系等信息。
  • [Service]部分定義了服務的具體配置,包括服務的運行命令、工作目錄、環境變量等。
  • [Install]部分定義了服務的安裝設置,例如服務的啟動級別、所屬用戶等。

腳本如下:

[root@localhost sbin]# cat /usr/lib/systemd/system/nginx.service
[Unit]
description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target

?注意:添加完畢后需運行"systemctl daemon-reload "

"systemctl daemon-reload?"是用于重新加載systemd的配置文件和單位文件的命令

[Unit]:服務的說明
Description:描述服務
After:描述服務類別
?
[Service]服務運行參數的設置
Type=forking是后臺運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:啟動、重啟、停止命令全部要求使用絕對路徑
?
[Install]服務安裝的相關設置,可設置為多用戶

報錯:

[root@localhost sbin]# ./nginx
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2023/08/15 19:23:23 [emerg] 22354#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)?

?原因分析:Nginx目錄下無logs文件

解決辦法:創建logs文件

#創建logs目錄
mkdir logs
#賦予權限
chmod 700 logs/

驗證:

/usr/local/nginx/sbin/nginx -t

正常情況會輸出一下信息:?

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

二.nginx的負載均衡搭建

?1)準備服務器

準備三臺虛擬機,一臺安裝了nginx,兩臺web服務器

2)修改配置文件

引入文件

?編寫配置文件

more mytest.conf upstream backend {server 192.168.136.135:80 weight=1;server 192.168.136.134:80 weight=1;
}server {listen 80;server_name www.myname.com;location / {proxy_pass http://backend;}}
[root@localhost conf]# 

3)重啟nginx服務后配置本地解析文件即可

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

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

相關文章

前端jd要求:了解一門后端開發語言優先 解決方案之Node.js

前端jd要求:了解一門后端開發語言優先 解決方案之Node.js 前言常見的后端開發語言一、什么是 Node.js二、學習 Node.js 的前置知識三、學習 Node.js 的步驟1、Node.js 的安裝2、Node.js 的基本語法和 API模塊導入和導出文件讀寫操作HTTP 服務器命令行參數 3、Node.j…

可能導致不可接受的信息安全事件發生的核電站事故。

立陶宛伊格納利納核電站(1992 年) 一名在該核電站工作的程序員將惡意代碼上傳到一個負責反應堆子系統運行的自動化系統中,該系統被及時發現。 但如果沒有及時發現,誰知道會發生什么呢?核電站被關閉以進行調查。有關這…

Vue-8.集成(.editorconfig、.eslintrc.js、.prettierrc)

介紹 同時使用 .editorconfig、.prettierrc 和 .eslintrc.js 是很常見的做法,因為它們可以在不同層面上幫助確保代碼的格式一致性和質量。這種組合可以在開發過程中提供全面的代碼維護和質量保證。然而,這也可能增加一些復雜性,需要謹慎配置…

Coreutils工具包,Windows下使用Linux命令

之前總結過兩篇有關【如何在Windows系統下使用Linux的常用命令】的文章: GnuWin32,Windows下使用Linux命令 UnxUtils工具包,Windows下使用Linux命令 今天再推薦一個類似的工具包Coreutils 一、簡介 GNU core utilities是GNU操作系統基本…

【HDFS】hdfs的count命令的參數詳解

Usage: hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] [-s] <paths

(學習筆記-進程管理)怎么避免死鎖?

死鎖的概念 在多線程編程中&#xff0c;我們為了防止多線程競爭共享資源而導致數據錯亂&#xff0c;都會在操作共享資源之前加上互斥鎖&#xff0c;只有成功獲得到鎖的線程&#xff0c;才能操作共享資源&#xff0c;獲取不到鎖的線程就只能等待&#xff0c;直到鎖被釋放。 那…

創建一個簡單的HTML Viewer應用程序

使用wxPython和內嵌瀏覽器來創建一個簡單的HTML Viewer應用程序。 在本篇文章中&#xff0c;我們將使用Python和wxPython模塊來創建一個簡單的HTML Viewer應用程序。這個應用程序可以讓用戶輸入HTML內容&#xff0c;并在內嵌瀏覽器中顯示該內容的效果。 準備工作 在開始之前…

apache doris和StarRocks的區別

記錄一下最新要用到2個新數據庫的區別 Apache Doris是一個分布式的列式存儲系統&#xff0c;它的設計目標是提供大規模數據處理的可靠性和高性能。Doris采用了集群方式&#xff0c;通過將數據分布在多個機器上進行處理來提高性能&#xff0c;并提供了SQL查詢接口方便用戶使用。…

QT:定時器事件

定時器第一種辦法&#xff1a; 1.利用事件timerEvent&#xff0c;在幫助文檔中找到該字段&#xff1a;[override virtual protected] void QTimer::timerEvent(QTimerEvent *e) 重寫該虛函數 //重寫定時器事件void timerEvent(QTimerEvent *e);2.啟動定時器startTimer(1000); …

區間預測 | MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測

區間預測 | MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測 目錄 區間預測 | MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測效果一覽基本介紹模型描述程序設計參考資料 效果一覽 基本介紹 MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測。基于分位…

卷積神經網絡教程 (CNN) – 使用 TensorFlow 在 Python 中開發圖像分類器

在這篇博客中,讓我們討論什么是卷積神經網絡 (CNN) 以及 卷積神經網絡背后的架構——旨在解決 圖像識別系統和分類問題。 卷積神經網絡在圖像和視頻識別、推薦系統和自然語言處理方面有著廣泛的應用。 目錄 計算機如何讀取圖像? 為什么不是全連接網絡?

[GitOps]微服務版本控制:使用ArgoCD 部署Grafana Loki

背景介紹 請回答&#xff1a;你們是如何保證線上部署的服務&#xff0c;從服務版本到參數配置&#xff0c;都是和測試通過的版本是一致的呢&#xff1f; 本文將介紹GitOps的基本原理以及ArgoCD的使用&#xff1a;ArgoCD部署Grafana Loki 到k8s集群。 本文項目地址&#xff1…

詳細介紹如何使用 OpenCV 對圖像進行銳化

將了解銳化圖像的過程,我們將使用內核來突出顯示每個特定像素并增強其發出的顏色。它與模糊過程非常相似,只不過現在我們不是創建一個內核來平均每個像素強度,而是創建一個內核,該內核將使像素強度更高,因此對人眼來說更加突出。 了解流程的后端。 很高興知道內核用于模糊…

Nginx 解決api跨域問題

環境: nginx 1.22.1 寶塔8.0 php lavarel 在nginx里加入下面的設置 #這里填*就是任何域名都允許跨域add_header Access-Control-Allow-Origin "*";#CORS請求默認不發送Cookie和HTTP認證信息。但是如果要把Cookie發到服務器&#xff0c;要服務器同意&#xff0c…

Webpack和Parcel詳解

構建工具和打包器是在開發過程中幫助組織、優化和打包項目的工具。它們可以處理依賴管理、資源優化、代碼轉換等任務&#xff0c;從而使開發流程更高效。以下是關于構建工具和打包器的一些指導&#xff1a; **Webpack&#xff1a;** Webpack 是一個功能強大的模塊打包器&#…

Java“牽手”1688商品詳情頁面數據獲取方法,1688API實現批量商品數據抓取示例

背景&#xff1a;1688商城是一個網上購物平臺&#xff0c;售賣各類商品&#xff0c;包括服裝、鞋類、家居用品、美妝產品、電子產品等。要獲取1688商品詳情數據&#xff0c;您可以通過開放平臺的接口或者直接訪問1688商城的網頁來獲取商品詳情信息。以下是兩種常用方法的介紹&a…

538頁21萬字數字政府智慧政務大數據云平臺項目建設方案WORD

導讀&#xff1a;原文《538頁21萬字數字政府智慧政務大數據云平臺項目建設方案WORD》&#xff08;獲取來源見文尾&#xff09;&#xff0c;本文精選其中精華及架構部分&#xff0c;邏輯清晰、內容完整&#xff0c;為快速形成售前方案提供參考。 根據業務的不同屬性&#xff0c…

深入解析 Axios Blob 的使用方法及技巧

在 Web 開發中&#xff0c;處理文件傳輸是一個常見的需求。Blob&#xff08;二進制對象&#xff09;是一種表示二進制數據的方式&#xff0c;常用于處理文件和多媒體數據。本文將介紹如何使用 Axios 和 Blob 來處理文件傳輸。 Axios Blob 概念 在開始之前&#xff0c;讓我們先…

IC流程中 DFT 學習筆記(1)

引言 DFT是ASIC芯片設計流程中不可或缺的環節。其主要目的是在芯片前端設計驗證完成后插入一些諸如寄存器鏈等可供測試的邏輯&#xff0c;算是IC后端設計的范疇。主要是在ASIC芯片流片完成后&#xff0c;通過這些已插入的邏輯&#xff0c;檢測流片得到的芯片的制造質量。檢測一…

Go framework-Beego

一、Beego Beego用于在Go中快速開發企業應用程序&#xff0c;包括RESTful API、web應用程序和后端服務。 Beego 源碼地址 Beego 官方站點 Beego 官方說明 Beego的特性 RESTful支持MVC架構模塊化自動API文檔注釋路由命名空間開發工具集合Full stack for Web & API Bee…