網站設計書本地建站軟件有哪些
Nginx
穩(wěn)定性高
(但是沒有apache穩(wěn)定)
版本號:1.12 1.20 1.22
系統(tǒng)資源消耗低
? ? ?(處理http請求的并發(fā)能力很高,單臺物理服務器可以處理30000-50000個并發(fā)請求)
穩(wěn)定:一般在企業(yè)中,為了保持服務器穩(wěn)定,并發(fā)量的設置在20000個左右。
占用內存2M左右;keep-alive則占用內存在3M左右
Nginx主要功能
- 靜態(tài)文件服務:nginx可以直接提供靜態(tài)文件的服務,如 HTML,CSS,AVAScript,圖片等能夠高效地處理并且響應靜態(tài)文件的請求
- 反向代理:可作為反向代理的服務器,將客戶端的請求轉發(fā)給后端多個服務器,并且可以實現(xiàn)負載均衡,高可用,從而提高整個集群的性能以及可靠性。
客戶端請求時,溝通代理服務器會把請求流量按輪詢算法,轉發(fā)到后臺不通的服務器上,實現(xiàn)負載均衡,高可用。- 處理動態(tài)內容:Nginx處理動態(tài)內容很差,php? node.is? java? python? nginx可以代理請求,然后發(fā)送到后端的動態(tài)服務處理;動態(tài)服務器理完之后,Nginx來把動態(tài)請求響應給客戶端。
- SSL/TLS加密:HTTPS的加密方式,數(shù)字證書驗證機制。
- 虛擬主機:Nginx可以在一臺服務器上設置多個虛擬主機;同一個服務器上可以有多個域名和站點
- URL重定向:可以實現(xiàn)靈活的url重寫和重定向。
- 緩存功能:Nginx自帶緩存功能。
- 日志功能:可以詳細的記錄請求的信息,包括訪問時間,請求路徑 ip地址,響應狀態(tài),有助于故障排查
系統(tǒng)控制的日志,記錄在/ar/log/messages
業(yè)務日志:aess.og? error.log? aess記錄的誰訪問我了,都是訪問成功的記錄;
error日志也記錄誰訪問了我,但是記錄的是訪問失敗的記錄。
正向代理
客戶端 —— (運營商) —— nginx服務器 —— web服務器
VPN也是典型的正向代理;已知后端服務器,請求只會往固定的服務器發(fā)送
反向代理
客戶端 —— nginx服務器(代理) ——?
( 通過輪詢算法,隨機指向其中一臺web服務器 ) ——?
web服務器1? 或? web服務器2? 或? web服務器3 (這三天服務器稱之為集群)
從而實現(xiàn)了高可用、負載均衡
Nginx的主要應用場景
- 靜態(tài)服務
- 反向代理、負載均衡
- 緩存服務
- 動態(tài)服務
Nginx是如何實現(xiàn)高并發(fā)的 ? ?*面
- Nginx自身代碼的問題: 大量的底層代理進行了優(yōu)化,同時自帶了一個功能模塊。epol模塊,支持高并發(fā)。
- Nginx也是一個master進程控制多個work進程。master負責收集和分發(fā)請求,work是實際執(zhí)行者。每一個請求進來,master就會拉起一個work進程處理請求,同時master進程也負責監(jiān)控worker的狀態(tài)
worker的數(shù)量和cpu要一致或者是cpu的2倍.
worker處理請求的過程中,只受內存大小的限制。
所以可以處理多個請求,再加上nginx本身就是輕量級的服務,處理請求時占用的內存本身就很少,所以可以起到大并發(fā)處理的能力。二者之間相互依賴,相互補充
建立 Nginx 服務
關閉防火墻
systemctl stop firewalld
setenforce 0
安裝依賴包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl ?openssl-devel
創(chuàng)建運行用戶、組
useradd -M -s /sbin/nologin nginx
(Nginx 服務程序默認以 nobody 身份運行,建議為其創(chuàng)建專門的用戶賬號,以便更準確地? ? ? ? 控制其訪問權限)
編譯安裝 Nginx
tar -xf nginx-1.22.0.tar.gz -C /opt/
解壓nginx安裝包
--with-http ssl module\? ? ? ? ? ? ? ? ? ?#http協(xié)議的加密模塊
--with-http_v2 module\? ? ? ? ? ? ? ? ???#安裝http2.0模塊
--with-http realip module\? ? ? ? ? ? ? ?#允許nginx獲取客戶端的真實ip地址
--with-http stub status module\? ? ? #可以記錄nginx訪問狀態(tài)信息的模塊
--with-http_gzip static_module\? ? ? #支持頁面壓縮功能
--with-pcre\? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#支持pcre庫
--with-stream\? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#支持tcp/udp代理模塊
--with-stream ssl module\? ? ? ? ? ? ? ?#tcp/udp的加密橫塊
--with-stream realip module? ? ? ? ?? ?#允許nginx作為代理服務器時,可以獲取客戶端的ipmake -j 4 && make install
編譯并安裝
安裝后生成四個文件及功能
- conf:保存的是所有nginx的配置文件,其中最核心的就是nginx.conf
- html:保存nginx的web文件,這是默認目錄可改
- logs:保存日志文件的位置
- sbin:nginx二進制的啟動腳本,可以結合不同
50x.html:是nginx默認的錯誤頁面顯示
添加Nginx系統(tǒng)服務
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不對 啟動不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf?
#注意啟動文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
賦權限
chown -R nginx.nginx /usr/local/nginx? ? ? #修改權限
常用命令
- nginx -t:檢查配置文件是否配置正確。
- nginx -v:查看niginx的版本號
- nginx -s:向主進程傳輸信號 —— 停止、開啟、重啟、重新加載
- niginx -c:設置配置文件的默認路徑
- ulimit -a:? ? ? ? ? ? ? ? ? ? ? ? ? ?
信號符
信號符結合kill命令使用
- kill -USR1 pid號? ? ? ? ? #日志分割
- kill -s HUP pid號? ? ? ? ?#只要是kill,只能跟pid號,重新加載
- killall -s HUP nginx? ? ?#可以跟服務名,也可以用pid號
- kill -s ?QUIT pid號? ?? ?#優(yōu)雅退出(有人訪問時不會結束進程,訪問完后才會結束進程)
- kill -s WHICH pid號? ? #優(yōu)雅介紹work進程(請求結束后,才結束work)
創(chuàng)建目錄
mkdir -p /usr/local/nginx/run/
修改配置文件
vim /usr/local/nginx/conf/nginx.conf
pid /usr/local/nginx/run/nginx.pid;
#找到 pid的位置修改 ?
重啟服務
systemctl daemon-reload?
systemctl restart nginx
重新加載配置,并重啟服務
全局配置的模塊
- events模塊:配置影響nginx服務器與用戶之間的網絡鏈接
- http模塊:只要是針對http請求的配置,代理,緩存,日志,反向代理,虛擬web主? ? ? ? ? ? ? ? ? ? ? ? ? 機,也可寫在stream中,server塊
? ? ? ? ? ? ? ? ? ? 非http請求的方式,不能寫在該模塊當中
? ? ? ? ? ? ? ? ? ? 反向代理:七層,四層方向代理,不能寫在http的模塊.- server塊:配置虛擬主機的相關參數(shù),一個HTTP模塊當中可以有多個server模塊
? ? ? ? ? ? ? ? ?包含在HTTP模塊中,不能單獨設置- location塊:匹配的是uri,包含在server當中不能單獨設置?
location模塊中? root和alias的區(qū)別? ? ? *面
- root:指定的目錄和location匹配的uri之間做的一個拼接,
/opt/ky30/這倆個路徑都真實存在而且都是目錄,并且uri目錄里面要有web文件。- alias : 匹配指定路徑下的web文件
/root后面有沒有? "/"? 無所謂,加不加都可;root標簽可以使用重定向
alias加了? "/"? 后面也必須有? "/"? 否則匹配不到;alias不可以設置重定向 ?
? ? ??
- porxy_pass:反向代理
- upstream:反向代理指定服務器的命令,在HTTP模塊中?七層,基于IP和端口,走HTTP協(xié)議
- stream:四層,走的是TCP或者udp流量,不能寫入HTTP,寫在全局配置
修改Linux服務器最大打開文件數(shù)? ? ? *面
events塊中 —— " worker_connections 1024 " 代表默認的最大進程連接數(shù)為1024
修改連接數(shù)有兩種方法,如下:
可在命令行修改:
ulimit -n 65535
vim /etc/security/limits.conf
* soft nproc 65535: 最大進程數(shù)軟限制為 65535,即可以使用 ulimit -u 命令查看和修改的值
* hard nproc 65535: 最大進程數(shù)硬限制為 65535,即最大可分配的進程數(shù)
* soft nofile 65535:最大打開文件數(shù)軟限制為 65535,可以使用 ulimit -n 命令查看和修改值
* hard nofile 65535:最大打開文件數(shù)硬限制為 65535,即最大可分配的文件數(shù)