Nginx源碼編譯安裝全過程
Nginx
Nginx的特點(diǎn)
最核心的區(qū)別在于Nginx 采用異步非阻塞機(jī)制 ,多個連接可以對應(yīng)一個進(jìn)程;Apache 采用的是同步阻塞+多進(jìn)程/線程模型,一個連接對應(yīng)一個進(jìn)程
- Nginx 抗并發(fā)能力更高
- Nginx 更輕量,內(nèi)存、CPU資源消耗更少
- Nginx 配置簡潔,使用場景多,穩(wěn)定性高
Nginx的使用場景
- 用作Web網(wǎng)站服務(wù),處理http靜態(tài)頁面請求
- 用作虛擬主機(jī),實(shí)現(xiàn)一個服務(wù)器用于做多個網(wǎng)站站點(diǎn)
- 用作反向代理、負(fù)載均衡,可以作為網(wǎng)關(guān)代理服務(wù)器接收客戶端的請求轉(zhuǎn)發(fā)給后端節(jié)點(diǎn)服務(wù)器集群
- 用作web緩存服務(wù)器
Nginx 有哪些進(jìn)程
- master進(jìn)程:管理worker進(jìn)程,加載配置文件
- worker進(jìn)程:處理請求連接
root 和 alias 指定路徑的區(qū)別
root(根目錄)
處理方式: root路徑+location路徑
例:
#nginx.conf 配置示例
location /abc {
root /var/www;
}
url訪問:
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訪問:
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,以便等會進(jìn)行平滑升級到最新版本 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)計 make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #讓系統(tǒng)識別nginx的操作命令



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

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

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

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

- 重啟nginx服務(wù)
kill -1 <PID號> kill -s HUP <PID號> 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
說明
[Unit]:服務(wù)的說明 Description:描述服務(wù) After:依賴,當(dāng)依賴的服務(wù)啟動之后再啟動自定義的服務(wù) [Service]服務(wù)運(yùn)行參數(shù)的設(shè)置 Type=forking是后臺運(yùn)行的形式,使用此啟動類型應(yīng)同時指定PIDFile=,以便systemd能夠跟蹤服務(wù)的主進(jìn)程。 ExecStart為服務(wù)的具體運(yùn)行命令 ExecReload為重啟命令 ExecStop為停止命令 PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時空間 注意:啟動、重啟、停止命令全部要求使用絕對路徑 [Install]服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶


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

平滑升級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移動到安裝目錄 make upgrade #要保證當(dāng)前 nginx 進(jìn)程是通過 /usr/local/nginx/sbin/nginx 啟動的,而不是通過查找環(huán)境變量中那個 nginx 命令啟動的 #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx




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

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

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx后端節(jié)點(diǎn)的健康檢查和nginx平滑升級方式
本文介紹了Nginx反向代理的ngx_http_proxy_module和ngx_http_upstream_module模塊,以及淘寶開發(fā)的nginx_upstream_check_module模塊,并介紹了Nginx平滑升級原理及實(shí)戰(zhàn)操作,最后總結(jié)了Nginx版本升級的方法2026-04-04
詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡
負(fù)載均衡器可以將用戶請求根據(jù)對應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺服務(wù)器進(jìn)行處理,本文主要為大家詳細(xì)介紹了如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡,需要的可以參考下2023-11-11
nginx學(xué)習(xí)總結(jié)五(nginx反向代理)
Nginx代理與負(fù)載均衡配置與優(yōu)化技巧,方便需要的朋友2012-11-11
nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)
Nginx是比較不錯的開源Web服務(wù)器之一,它也可以用作TCP和UDP負(fù)載均衡器,本文主要介紹了nginx tcp負(fù)載均衡的具體實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-05-05
nginx提示:500 Internal Server Error錯誤的解決方法
本文章來給大家總結(jié)了大量關(guān)于導(dǎo)致nginx中提示500 Internal Server Error錯誤的原因總結(jié)與解決方法分析有需要了解的朋友可參考參考2013-04-04
Nginx中fastcgi_cache實(shí)現(xiàn)PHP頁面緩存加速
Nginx使用cgi_cache緩存PHP生成的動態(tài)頁面,降低后端負(fù)載并提升響應(yīng)速度,配置方案包括緩存控制、自定義緩存時間、緩存清理等等關(guān)鍵響應(yīng)頭,感興趣的可以了解一下2026-04-04
nginx中g(shù)zip壓縮提升網(wǎng)站速度的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx中g(shù)zip壓縮提升網(wǎng)站速度的實(shí)現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08



