Nginx源碼編譯安裝全過程
Nginx
Nginx的特點
最核心的區(qū)別在于Nginx 采用異步非阻塞機制 ,多個連接可以對應一個進程;Apache 采用的是同步阻塞+多進程/線程模型,一個連接對應一個進程
- Nginx 抗并發(fā)能力更高
- Nginx 更輕量,內存、CPU資源消耗更少
- Nginx 配置簡潔,使用場景多,穩(wěn)定性高
Nginx的使用場景
- 用作Web網站服務,處理http靜態(tài)頁面請求
- 用作虛擬主機,實現一個服務器用于做多個網站站點
- 用作反向代理、負載均衡,可以作為網關代理服務器接收客戶端的請求轉發(fā)給后端節(jié)點服務器集群
- 用作web緩存服務器
Nginx 有哪些進程
- master進程:管理worker進程,加載配置文件
- worker進程:處理請求連接
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
準備工作
- 關閉安全防護系統(tǒng)
systemctl disable firewalld.service --now setenforce 0 SELINUX=enforcing --> SELINUX=0


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

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

- 創(chuàng)建運行用戶、組
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服務
- 檢查nginx服務配置
nginx -t #檢查配置文件是否配置正確

- 啟動nginx服務
/usr/local/nginx/sbin/nginx netstat -lntp | grep 80

- 查看PID進程號
cat /usr/local/nginx/logs/nginx.pid ##只有在運行時才能查看PID號

- 停止nginx服務
kill -3 <PID號> kill -s QUIT <PID號> killall -3 nginx killall -s QUIT nginx

- 重啟nginx服務
kill -1 <PID號> kill -s HUP <PID號> killall -1 nginx killall -s HUP nginx
配置 Nginx 系統(tǒng)服務
方法一
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í)行權限
chkconfig --add nginx #添加為系統(tǒng)服務
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]:服務的說明 Description:描述服務 After:依賴,當依賴的服務啟動之后再啟動自定義的服務 [Service]服務運行參數的設置 Type=forking是后臺運行的形式,使用此啟動類型應同時指定PIDFile=,以便systemd能夠跟蹤服務的主進程。 ExecStart為服務的具體運行命令 ExecReload為重啟命令 ExecStop為停止命令 PrivateTmp=True表示給服務分配獨立的臨時空間 注意:啟動、重啟、停止命令全部要求使用絕對路徑 [Install]服務安裝的相關設置,可設置為多用戶


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

平滑升級Nginx
準備工作
- 查看當前安裝Nginx的版本及已模塊
nginx -v #查看當前安裝的Nginx版本 nginx -V #查看當前安裝的Nginx已安裝的模塊

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

解壓文件到當前目錄
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 #要保證當前 nginx 進程是通過 /usr/local/nginx/sbin/nginx 啟動的,而不是通過查找環(huán)境變量中那個 nginx 命令啟動的 #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx




驗證
- 查看Nginx是否正常啟動
netstat -lntp | grep 80

- 檢查當前Nginx的版本
nginx -v

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
nginx后端節(jié)點的健康檢查和nginx平滑升級方式
本文介紹了Nginx反向代理的ngx_http_proxy_module和ngx_http_upstream_module模塊,以及淘寶開發(fā)的nginx_upstream_check_module模塊,并介紹了Nginx平滑升級原理及實戰(zhàn)操作,最后總結了Nginx版本升級的方法2026-04-04
nginx提示:500 Internal Server Error錯誤的解決方法
本文章來給大家總結了大量關于導致nginx中提示500 Internal Server Error錯誤的原因總結與解決方法分析有需要了解的朋友可參考參考2013-04-04
Nginx中fastcgi_cache實現PHP頁面緩存加速
Nginx使用cgi_cache緩存PHP生成的動態(tài)頁面,降低后端負載并提升響應速度,配置方案包括緩存控制、自定義緩存時間、緩存清理等等關鍵響應頭,感興趣的可以了解一下2026-04-04



