Nginx
- Nginx
- Nginx的特點
- Nginx的使用場景
- Nginx 有哪些進程
- 使用源碼編譯安裝Nginx
- 準備工作
- 安裝依賴包
- 編譯安裝Nginx
- 檢查、啟動、重啟、停止 nginx服務
- 配置 Nginx 系統服務
- 方法一:
- 方法二:
- 訪問Nginx頁面
- 升級Nginx
- 準備工作
- 編譯安裝新版本Nginx
- 驗證
Nginx
Nginx的特點
最核心的區別在于Nginx 采用異步非阻塞機制 ,多個連接可以對應一個進程;Apache 采用的是同步阻塞+多進程/線程模型,一個連接對應一個進程
- Nginx 抗并發能力更高
- Nginx 更輕量,內存、CPU資源消耗更少
- Nginx 配置簡潔,使用場景多,穩定性高
Nginx的使用場景
- 用作Web網站服務,處理http靜態頁面請求
- 用作虛擬主機,實現一個服務器用于做多個網站站點
- 用作反向代理、負載均衡,可以作為網關代理服務器接收客戶端的請求轉發給后端節點服務器集群
- 用作web緩存服務器
Nginx 有哪些進程
- master進程:管理worker進程,加載配置文件
- worker進程:處理請求連接
使用源碼編譯安裝Nginx
準備工作
- 關閉安全防護系統
systemctl disable firewalld.service --nowsetenforce 0SELINUX=enforcing --> SELINUX=0
- 下載源碼安裝包,并上傳至/opt目錄下
Nginx官網
Nginx下載頁面
當前我選擇 Nginx1.25.5,以便等會進行平滑升級到最新版本 Nginx1.26.0
使用XFTP進行文件傳輸——上傳到/opt目錄下
- 解壓文件到當前目錄
cd /opttar xf nginx-1.25.5.tar.gzll
- 創建運行用戶、組
useradd -M -s /sbin/nologin nginxid 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 模塊以支持狀態統計make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #讓系統識別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 系統服務
方法一:
vim /etc/init.d/nginx#!/bin/bash#chkconfig: - 99 20#description:Nginx Service Control ScriptCOM="/usr/local/nginx/sbin/nginx"PID="/usr/local/nginx/logs/nginx.pid"case "$1" instart)$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 1esacexit 0chmod +x /etc/init.d/nginx #添加執行權限
chkconfig --add nginx #添加為系統服務systemctl start nginxnetstat -lntp | grep 80
方法二:
vim /lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetchmod 754 /lib/systemd/system/nginx.servicesystemctl 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 /opttar xf nginx-1.26.0.tar.gzll
編譯安裝新版本Nginx
cd /opt/nginx-1.26.0/./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_modulemakemv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old #備份老版本Nginxcp objs/nginx /usr/local/nginx/sbin/nginx #將新版本的Nginx移動到安裝目錄make upgrade#要保證當前 nginx 進程是通過 /usr/local/nginx/sbin/nginx 啟動的,而不是通過查找環境變量中那個 nginx 命令啟動的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
驗證
- 查看Nginx是否正常啟動
netstat -lntp | grep 80
- 檢查當前Nginx的版本
nginx -v