Nginx源碼編譯安裝全過(guò)程
Nginx
Nginx的特點(diǎn)
最核心的區(qū)別在于Nginx 采用異步非阻塞機(jī)制 ,多個(gè)連接可以對(duì)應(yīng)一個(gè)進(jìn)程;Apache 采用的是同步阻塞+多進(jìn)程/線程模型,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程
- Nginx 抗并發(fā)能力更高
- Nginx 更輕量,內(nèi)存、CPU資源消耗更少
- Nginx 配置簡(jiǎn)潔,使用場(chǎng)景多,穩(wěn)定性高
Nginx的使用場(chǎng)景
- 用作Web網(wǎng)站服務(wù),處理http靜態(tài)頁(yè)面請(qǐng)求
- 用作虛擬主機(jī),實(shí)現(xiàn)一個(gè)服務(wù)器用于做多個(gè)網(wǎng)站站點(diǎn)
- 用作反向代理、負(fù)載均衡,可以作為網(wǎng)關(guān)代理服務(wù)器接收客戶端的請(qǐng)求轉(zhuǎn)發(fā)給后端節(jié)點(diǎn)服務(wù)器集群
- 用作web緩存服務(wù)器
Nginx 有哪些進(jìn)程
- master進(jìn)程:管理worker進(jìn)程,加載配置文件
- worker進(jìn)程:處理請(qǐng)求連接
root 和 alias 指定路徑的區(qū)別
root(根目錄)
處理方式: root路徑+location路徑
例:
#nginx.conf 配置示例
location /abc {
root /var/www;
}
url訪問(wèn):
http://<IP>/abc/kfc/test.html
test.html文件存放在
/var/www/abc/kfc/test.html
http://IP地址/abc/kfc/test.html ------>> /var/www/abc/kfc/test.html
alias(別名目錄、虛擬目錄)
alias路徑替換location路徑
例:
#nginx.conf 配置示例
location /abc {
alias /var/www;
}
url訪問(wèn):
http://<IP>/abc/kfc/test.html
test.html文件存放在
/var/www/kfc/test.html
http://IP地址/abc/kfc/test.html ------>> /var/www/kfc/test.html
使用源碼編譯安裝Nginx
準(zhǔn)備工作
- 關(guān)閉安全防護(hù)系統(tǒng)
systemctl disable firewalld.service --now setenforce 0 SELINUX=enforcing --> SELINUX=0


- 下載源碼安裝包,并上傳至/opt目錄下
當(dāng)前我選擇 Nginx1.25.5,以便等會(huì)進(jìn)行平滑升級(jí)到最新版本 Nginx1.26.0
使用XFTP進(jìn)行文件傳輸——上傳到/opt目錄下

- 解壓文件到當(dāng)前目錄
cd /opt tar xf nginx-1.25.5.tar.gz ll

- 創(chuàng)建運(yùn)行用戶、組
useradd -M -s /sbin/nologin nginx id nginx

安裝依賴包
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

編譯安裝Nginx
cd /opt/nginx-1.25.5/ ./configure \ --prefix=/usr/local/nginx \ #指定nginx的安裝路徑 --user=nginx \ #指定用戶名 --group=nginx \ #指定組名 --with-http_stub_status_module #啟用 http_stub_status_module 模塊以支持狀態(tài)統(tǒng)計(jì) make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #讓系統(tǒng)識(shí)別nginx的操作命令



檢查、啟動(dòng)、重啟、停止 nginx服務(wù)
- 檢查nginx服務(wù)配置
nginx -t #檢查配置文件是否配置正確

- 啟動(dòng)nginx服務(wù)
/usr/local/nginx/sbin/nginx netstat -lntp | grep 80

- 查看PID進(jìn)程號(hào)
cat /usr/local/nginx/logs/nginx.pid ##只有在運(yùn)行時(shí)才能查看PID號(hào)

- 停止nginx服務(wù)
kill -3 <PID號(hào)> kill -s QUIT <PID號(hào)> killall -3 nginx killall -s QUIT nginx

- 重啟nginx服務(wù)
kill -1 <PID號(hào)> kill -s HUP <PID號(hào)> killall -1 nginx killall -s HUP nginx
配置 Nginx 系統(tǒng)服務(wù)
方法一
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT $(cat $PID)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PID)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx #添加執(zhí)行權(quán)限
chkconfig --add nginx #添加為系統(tǒng)服務(wù)
systemctl start nginx
netstat -lntp | grep 80


方法二
vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target chmod 754 /lib/systemd/system/nginx.service systemctl start nginx.service systemctl enable nginx.service
說(shuō)明
[Unit]:服務(wù)的說(shuō)明 Description:描述服務(wù) After:依賴,當(dāng)依賴的服務(wù)啟動(dòng)之后再啟動(dòng)自定義的服務(wù) [Service]服務(wù)運(yùn)行參數(shù)的設(shè)置 Type=forking是后臺(tái)運(yùn)行的形式,使用此啟動(dòng)類型應(yīng)同時(shí)指定PIDFile=,以便systemd能夠跟蹤服務(wù)的主進(jìn)程。 ExecStart為服務(wù)的具體運(yùn)行命令 ExecReload為重啟命令 ExecStop為停止命令 PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時(shí)空間 注意:?jiǎn)?dòng)、重啟、停止命令全部要求使用絕對(duì)路徑 [Install]服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶


訪問(wèn)Nginx頁(yè)面
瀏覽器訪問(wèn):
http://<本機(jī)IP>:80

平滑升級(jí)Nginx
準(zhǔn)備工作
- 查看當(dāng)前安裝Nginx的版本及已模塊
nginx -v #查看當(dāng)前安裝的Nginx版本 nginx -V #查看當(dāng)前安裝的Nginx已安裝的模塊

下載新版本源碼安裝包,并上傳至/opt目錄下

解壓文件到當(dāng)前目錄
cd /opt tar xf nginx-1.26.0.tar.gz ll

編譯安裝新版本Nginx
cd /opt/nginx-1.26.0/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module --with-http_ssl_module make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old #備份老版本Nginx cp objs/nginx /usr/local/nginx/sbin/nginx #將新版本的Nginx移動(dòng)到安裝目錄 make upgrade #要保證當(dāng)前 nginx 進(jìn)程是通過(guò) /usr/local/nginx/sbin/nginx 啟動(dòng)的,而不是通過(guò)查找環(huán)境變量中那個(gè) nginx 命令啟動(dòng)的 #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx




驗(yàn)證
- 查看Nginx是否正常啟動(dòng)
netstat -lntp | grep 80

- 檢查當(dāng)前Nginx的版本
nginx -v

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx有哪些常規(guī)調(diào)優(yōu)手段詳解
性能調(diào)優(yōu)就是用更少的資源提供更好的服務(wù),成本利益最大化,下面這篇文章主要給大家介紹了關(guān)于nginx有哪些常規(guī)調(diào)優(yōu)手段的相關(guān)資料,需要的朋友可以參考下2023-01-01
nginx basic認(rèn)證的實(shí)現(xiàn)示例
auth_basic作為一個(gè)認(rèn)證模塊,在apache和nginx中都很常用,本文主要介紹了nginx basic認(rèn)證的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置
ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置方法, 需要的朋友可以參考下。2010-06-06
Nginx跨域訪問(wèn)配置方式(Web反向代理跨域訪問(wèn)配置)
這篇文章主要介紹了Nginx跨域訪問(wèn)配置方式(Web反向代理跨域訪問(wèn)配置),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻
Nginx?Proxy?Manager是一款功能強(qiáng)大的開(kāi)源軟件,配置Web應(yīng)用防火墻,可以防止常見(jiàn)的web攻擊,本文就來(lái)介紹一下Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻,感興趣的可以了解一下2025-02-02
centos8下安裝nginx并修改其默認(rèn)網(wǎng)頁(yè)方式
本文介紹了在CentOS8系統(tǒng)中安裝并啟用nginx服務(wù),調(diào)整防火墻設(shè)置,修改nginx默認(rèn)主頁(yè),以及通過(guò)本地瀏覽器訪問(wèn)nginx頁(yè)面的基本操作流程2025-10-10



