版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PHP開發(fā)之架構(gòu)掃盲篇— Jett (林智敏),01,架構(gòu)的演變史,02,03,Apache服務(wù)器,04,Nginx VS Apache,Contents目錄,05,PHP項(xiàng)目主流架構(gòu)--LNAMP,Nginx服務(wù)器,一.架構(gòu)的演變史,,沒有固定的架構(gòu),架構(gòu)是一個(gè)逐步演變的過程!,. 什么是架構(gòu) ?,,(1) 根據(jù)要解決的問題,對(duì)目標(biāo)系統(tǒng)的邊界進(jìn)行界定;(2) 并對(duì)目標(biāo)系統(tǒng)按某個(gè)原則的進(jìn)行切分。切分的原
2、則,要便于不同的角色, 對(duì)切分出來的部分,并行或串行開展工作,一般并行才能減少時(shí)間;(3) 并對(duì)這些切分出來的部分,設(shè)立溝通機(jī)制;(4) 根據(jù)3,使得這些部分之間能夠進(jìn)行有機(jī)的聯(lián)系,合并組裝成為一個(gè)整 體, 完成目標(biāo)系統(tǒng)的所有工作;,一.架構(gòu)的演變史,,沒有固定的架構(gòu),架構(gòu)是一個(gè)逐步演變的過程!,,. 幾乎所有的大型網(wǎng)站都是漸進(jìn)式發(fā)展,慢慢壯大的,這也和互聯(lián)網(wǎng)架構(gòu)的發(fā)展演化
3、相對(duì)應(yīng);大型網(wǎng)站技術(shù)主要的挑戰(zhàn)來自于龐大的用戶、高并發(fā)以及海量的數(shù)據(jù)這三 方面。,高并發(fā)?,大流量?,高可用?,海量數(shù)據(jù)?,性價(jià)比?,用戶分布?,一.架構(gòu)的演變史,,,(1).最初的架構(gòu),應(yīng)用程序、數(shù)據(jù)庫、文件都部署在一臺(tái)服務(wù)器上,一.架構(gòu)的演變史,,,(2).應(yīng)用、數(shù)據(jù)、文件分離:應(yīng)用程序服務(wù)、數(shù)據(jù)庫服務(wù)、文件服務(wù)三者分離,各自為首分配一臺(tái)服務(wù)器。,一.架構(gòu)的演變史,,,(3). 利用緩存改善網(wǎng)站性能:利用緩存技術(shù)
4、改善系統(tǒng)的性能,對(duì)熱點(diǎn)數(shù)據(jù)進(jìn)行緩存,減少這些數(shù)據(jù)的訪問路徑,提高用戶體驗(yàn)。. 本地緩存,顧名思義是將數(shù)據(jù)緩存在應(yīng)用服務(wù)器本地,可以存在內(nèi)存中,也可以存在 文件,OSCache就是常用的本地緩存組件。. 分布式緩存的特點(diǎn)是,可以緩存海量的數(shù)據(jù),并且擴(kuò)展非常容易,在門戶類網(wǎng)站中常常被 使用,常用的分布式緩存是Memcached、Redis。,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(4). 使用集群改善應(yīng)用服務(wù)器
5、性能:通過應(yīng)用服務(wù)器集群來分擔(dān)請(qǐng)求數(shù),應(yīng)用服務(wù)器前面部署負(fù)載均衡服務(wù)器調(diào)度用戶請(qǐng)求,根據(jù)分發(fā)策略將請(qǐng)求分發(fā)到多個(gè)應(yīng)用服務(wù)器節(jié)點(diǎn)。. 常用的負(fù)載均衡技術(shù)硬件的有F5,價(jià)格比較貴,軟件的有LVS、Nginx、HAProxy;. LVS是四層負(fù)載均衡,根據(jù)目標(biāo)地址和端口選擇內(nèi)部服務(wù)器,Nginx是七層負(fù)載均衡和 HAProxy支持四層、七層負(fù)載均衡,可以根據(jù)報(bào)文內(nèi)容選擇內(nèi)部服務(wù)器,因此LVS分發(fā)路 徑優(yōu)于Ngin
6、x和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來 做動(dòng)靜分離(根據(jù)請(qǐng)求報(bào)文特征,選擇靜態(tài)資源服務(wù)器還是應(yīng)用服務(wù)器);,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(5). 數(shù)據(jù)庫讀寫分離和分庫分表:隨著用戶量的增加,數(shù)據(jù)庫成為最大的瓶頸,改善數(shù)據(jù)庫性能常用的手段是進(jìn)行讀寫分離以及分表,讀寫分離顧名思義就是將數(shù)據(jù)庫分為讀庫和寫庫,通過主備功能實(shí)現(xiàn)數(shù)據(jù)同步。分庫分表則分為水平切分和垂直
7、切分,水平切換則是對(duì)一個(gè)數(shù)據(jù)庫特大的表進(jìn)行拆分,例如用戶表。垂直切分則是根據(jù)業(yè)務(wù)不同來切換,如用戶業(yè)務(wù)、商品業(yè)務(wù)相關(guān)的表放在不同的數(shù)據(jù)庫中。,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(6). 使用CDN和反向代理提高網(wǎng)站性能:. 網(wǎng)絡(luò)覆蓋范圍地區(qū)廣泛,造就了網(wǎng)絡(luò)環(huán)境復(fù)雜,從而用戶訪問網(wǎng)站性能體現(xiàn)也各有差異, 鑒于這問題,網(wǎng)站架構(gòu)使用CDN和反向代理以技術(shù)加速網(wǎng)站響應(yīng),二者原理都是緩存, CDN可以從距離用戶最
8、近網(wǎng)絡(luò)提供點(diǎn)獲取數(shù)據(jù);反向代理則是首先從反向代理服務(wù)器中獲 取數(shù)據(jù)。 . CDN將數(shù)據(jù)內(nèi)容緩存到運(yùn)營商的機(jī)房,用戶訪問時(shí)先從最近的運(yùn)營商獲取數(shù)據(jù),這樣大大 減少了網(wǎng)絡(luò)訪問的路徑。. 反向代理是部署在網(wǎng)站的機(jī)房,當(dāng)用戶請(qǐng)求達(dá)到時(shí)首先訪問反向代理服務(wù)器,反向代理服 務(wù)器將緩存的數(shù)據(jù)返回給用戶,如果沒有沒有緩存數(shù)據(jù)才會(huì)繼續(xù)走應(yīng)用服務(wù)器獲取,也減 少了獲取數(shù)據(jù)的成本。反向代理有Squid,Nginx。,一.架構(gòu)
9、的演變史,,,一.架構(gòu)的演變史,,,(7). 使用分布式文件系統(tǒng):用戶一天天增加,業(yè)務(wù)量越來越大,產(chǎn)生的文件越來越多,單臺(tái)的文件服務(wù)器已經(jīng)不能滿足需求。需要分布式的文件系統(tǒng)支撐。常用的分布式文件系統(tǒng)有NFS、MFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(8). 使用NoSql和搜索引擎:. 對(duì)于海量數(shù)據(jù)
10、的查詢,我們使用nosql數(shù)據(jù)庫加上搜索引擎可以達(dá)到更好的性能。. 并不是所有的數(shù)據(jù)都要放在關(guān)系型數(shù)據(jù)中。常用的NOSQL有mongodb和redis, 搜索引擎有php相關(guān)的sphinx、java相關(guān)的Lucene、Nutch、Solr、LIRE等;,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(9). 將應(yīng)用服務(wù)器進(jìn)行業(yè)務(wù)拆分:. 隨著業(yè)務(wù)進(jìn)一步擴(kuò)展,應(yīng)用程序變得非常臃腫,這時(shí)我們需要將應(yīng)用程序進(jìn)行業(yè)務(wù)拆分,
11、如Jollychic分為購物車、搜索、支付、訂單等業(yè)務(wù)。每個(gè)業(yè)務(wù)應(yīng)用負(fù)責(zé)相對(duì)獨(dú)立的業(yè)務(wù)運(yùn) 作。業(yè)務(wù)之間 通過消息進(jìn)行通信或者同享數(shù)據(jù)庫來實(shí)現(xiàn)。,一.架構(gòu)的演變史,,,一.架構(gòu)的演變史,,,(10). 搭建分布式服務(wù):. 這時(shí)我們發(fā)現(xiàn)各個(gè)業(yè)務(wù)應(yīng)用都會(huì)使用到一些基本的業(yè)務(wù)服務(wù),例如用戶服務(wù)、訂單服務(wù)、 支付服務(wù)、安全服務(wù),這些服務(wù)是支撐各業(yè)務(wù)應(yīng)用的基本要素。我們將這些服務(wù)抽取出來 利用分布式服務(wù)框架搭建分布式服務(wù),
12、例如淘寶的Dubbo是一個(gè)不錯(cuò)的選擇!,一.架構(gòu)的演變史,,企圖用技術(shù)解決所有問題,技術(shù)雖是解決業(yè)務(wù)問題的,但也不是萬能鑰匙,有些業(yè)務(wù)的問題也是可以通過業(yè)務(wù)手段解決。,為了技術(shù)而技術(shù),網(wǎng)站技術(shù)是為業(yè)務(wù)而存在的,但是一味的追求新技術(shù),可能會(huì)導(dǎo)致結(jié)構(gòu)技術(shù)之路越走越難;,一味的追隨大公司解決方案,大公司的經(jīng)驗(yàn)和成功固然重要,但是不能盲目的追從,要與 實(shí)際的具體業(yè)務(wù)需求有所改動(dòng);,.大型網(wǎng)站架構(gòu)演化歷經(jīng)了長時(shí)間磨練才發(fā)展如此,在過程中也
13、是出現(xiàn)一些誤區(qū),== 真實(shí)的架構(gòu)現(xiàn)場要遠(yuǎn)比這些描述復(fù)雜得多 ==,二.Nginx服務(wù)器,,,Nginx ("engine x") 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器,開源免費(fèi),nginx在啟動(dòng)后會(huì)以daemon的方式在后臺(tái)運(yùn)行,后臺(tái)進(jìn)程包含一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程,master進(jìn)程主要用來管理worker進(jìn)程,包含:接收來自外界的信號(hào),
14、向各worker進(jìn)程發(fā)送信號(hào),監(jiān)控worker進(jìn)程的運(yùn)行狀態(tài),當(dāng)worker進(jìn)程退出后(異常情況下),會(huì)自動(dòng)重新啟動(dòng)新的worker進(jìn)程,多進(jìn)程方式是nginx的默認(rèn)方式。,(1) Nginx 簡介,二.Nginx服務(wù)器,,,nginx采用了異步非阻塞的方式來處理請(qǐng)求,nginx在啟動(dòng)時(shí),會(huì)解析配置文件,得到需要監(jiān)聽的端口與ip地址,然后在nginx的master進(jìn)程里面,先初始化好這個(gè)監(jiān)控的socket,然后再fork
15、出多個(gè)子進(jìn)程出來,然后子進(jìn)程會(huì)競爭accept新的連接,這些work進(jìn)程都沒有同步鎖,相互獨(dú)立,自己完成自己請(qǐng)求處理,woker之間沒有相互通信,它們只于服從于master進(jìn)程。Nginx本身做的工作實(shí)際很少,當(dāng)它接到一個(gè)HTTP請(qǐng)求時(shí),它僅僅是通過查找配置文件將此次請(qǐng)求映射到一個(gè)location block,而此location中所配置的各個(gè)指令則會(huì)啟動(dòng)不同的模塊去完成工作。,(2) Nginx的模塊與工作原理,二
16、.Nginx服務(wù)器,,,(2) Nginx的模塊與工作原理,二.Nginx服務(wù)器,,,. use epoll Nginx使用了最新的epoll網(wǎng)絡(luò)I/O模型;. worker_processes NGINX工作進(jìn)程數(shù),建議將這個(gè)指令設(shè)置成自動(dòng);. worker_connections 65535 每個(gè)工作進(jìn)程允許最大的同時(shí)連接數(shù) (Maxclient = work_processes * worker_connection
17、s);. keepalive_timeout 75 keepalive超時(shí)時(shí)間; . server_tokens on|off 可以關(guān)閉在錯(cuò)誤頁面中的nginx版本數(shù)字,這樣 對(duì)于安全性是有好處的;,(3) nginx.conf的參數(shù)優(yōu)化,二.Nginx服務(wù)器,,,. open_file_cache 開啟關(guān)閉打開文件緩存,默認(rèn)值 off 關(guān)閉,如需開 啟必須后接參數(shù) max=數(shù)字,設(shè)置緩存元素的最大數(shù)量,可選參數(shù) i
18、nactive=時(shí)間 設(shè)置超時(shí), 在這段時(shí)間內(nèi)緩存元素如果沒有被訪問, 將從緩存中刪除,例如:open_file_cache max=65536 inactive=60s;. open_file_cache_min_uses:設(shè)置在由open_file_cache指令的 inactive參數(shù)配置的超時(shí)時(shí)間內(nèi), 文件應(yīng)該被訪問的最小次數(shù)。如果訪 問次數(shù)大于等于此值,文件描述符會(huì)保留在緩存中,否則從緩存中刪除;. ope
19、n_file_cache_valid:設(shè)置檢查open_file_cache緩存的元素的時(shí)間 間隔;,(3) nginx.conf的參數(shù)優(yōu)化,二.Nginx服務(wù)器,,,. limit_conn_zone 限制并發(fā)連接數(shù)以及下載帶寬 加在http段, 例:limit_conn_zone $binary_remote_addr zone=addr:10m(要限制連接,必須先有一個(gè)容器對(duì)連接進(jìn)行計(jì)數(shù)。zone名要 與limit_co
20、mm對(duì)應(yīng));. limit_conn 用于限制并發(fā)連接數(shù),限制某個(gè)IP某一時(shí)間段的訪問次數(shù), 特別面對(duì)惡意的ddos攻擊的時(shí)候有效,加在server段;例: limit_conn addr 1; #是限制每個(gè)IP只能發(fā)起1個(gè)連接 (addr 要跟 limit_conn_zone 的變量對(duì)應(yīng));. accept_mutex on|off on時(shí),那么將輪流喚醒一個(gè)工作進(jìn)程接收處 理新的連接,其余工作進(jìn)程繼續(xù)
21、保持睡眠;off 時(shí),那么將喚醒所有工 作進(jìn)程,可以提高性能和吞吐量;,(3) nginx.conf的參數(shù)優(yōu)化,二.Nginx服務(wù)器,,,. sendfile on | off開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,對(duì)于普通應(yīng)用設(shè)為 on,如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。. worker_cpu_
22、affinity(綁定CPU):綁定工作進(jìn)程到對(duì)應(yīng)CPU核心, Nginx默認(rèn)未開啟CPU綁定,當(dāng)并發(fā)很大時(shí),服務(wù)器各個(gè)CPU的使用 率可能出現(xiàn)嚴(yán)重不均衡的局面,這時(shí)候可以考慮使用CPU綁定,以達(dá) 到CPU使用率相對(duì)均勻的狀態(tài),充分發(fā)揮多核CPU的優(yōu)勢。如: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;,(3) nginx.conf
23、的參數(shù)優(yōu)化,二.Nginx服務(wù)器,,,. expires 瀏覽器緩存:當(dāng)設(shè)置了expires時(shí),瀏覽器第一次訪問Web頁 面元素,會(huì)下載頁面中的的靜態(tài)文件到本機(jī)臨時(shí)緩存目錄下,第二次 及之后再次訪問相同URL時(shí)將發(fā)送帶頭標(biāo)識(shí)"If-Modified-Since"和本 地緩存文件時(shí)間屬性值的請(qǐng)求給服務(wù)器,服務(wù)器比對(duì)服務(wù)器本地文件 時(shí)間屬性值,如果未修改,服務(wù)器直接返回http 304狀態(tài)碼,瀏覽器 直
24、接調(diào)用本地已緩存的文件;如果時(shí)間屬性值修改了,重新發(fā)送新文 件。. keepalive_timeout 持久連接:啟用Http的持久連接Keepalive屬性, 復(fù)用之前已建立的TCP連接接收請(qǐng)求、發(fā)送回應(yīng),減少重新建立TCP連 接的資源時(shí)間開銷HTTP層的連接超時(shí)時(shí)間。 當(dāng)網(wǎng)站頁面內(nèi)容以靜態(tài) 為主時(shí),開啟持久連接;若主要是動(dòng)態(tài)網(wǎng)頁,且不能被轉(zhuǎn)化為靜態(tài)頁 面,則關(guān)閉持久連接;,(3) nginx.conf的參數(shù)優(yōu)
25、化,二.Nginx服務(wù)器,,,. tcp_nopush on|off :告訴nginx在一個(gè)數(shù)據(jù)包里發(fā)送所有頭文件,而 不一個(gè)接一個(gè)的發(fā)送;. tcp_nodelay on|off:告訴nginx不要緩存數(shù)據(jù),當(dāng)需要及時(shí)發(fā)送數(shù)據(jù) 時(shí),就應(yīng)該給應(yīng)用設(shè)置這個(gè)屬性;. Nginx不能直接解析PHP代碼文件,需要調(diào)用FastCGI接口轉(zhuǎn)給PHP解 釋器執(zhí)行,然后將結(jié)果返回給Nginx:(關(guān)于Nginx支持PHP的相關(guān)fa
26、stcgi配置可結(jié)合Nginx配置文件說明),(3) nginx.conf的參數(shù)優(yōu)化,二.Nginx服務(wù)器,,,* proxy_pass 設(shè)置被代理服務(wù)器的地址和被映射的URI;* proxy_set_header 將發(fā)送到被代理服務(wù)器的請(qǐng)求頭重新定義或者增 加一些字段;* proxy_buffering 開啟或關(guān)閉從后端被代理服務(wù)器的響應(yīng)內(nèi)容緩沖;* proxy_buffers 設(shè)置緩沖區(qū)的大小和數(shù)量,從被代理的后端服務(wù)器取
27、得 的響應(yīng)內(nèi)容,會(huì)放置到這里. 默認(rèn)情況下,一個(gè)緩沖區(qū)的大小等于內(nèi)存頁 面大小,可能是4K也可能是8K,這取決于平臺(tái);* proxy_buffer_size 設(shè)置緩沖區(qū)大小,小的響應(yīng)header通常位于這部 分響應(yīng)內(nèi)容里邊,默認(rèn)來說,該緩沖區(qū)大小等于指令 proxy_buffers所 設(shè)置的;* proxy_busy_buffers_size 設(shè)置系統(tǒng)很忙時(shí)可以使用的proxy_buffers 的大小,用來控制同
28、時(shí)傳輸?shù)娇蛻舳说腷uffer數(shù)量的;,(4) Nginx反向代理(配置在server段的location指令),二.Nginx服務(wù)器,,,upstream mysvr { server http://192.168.33.10:3333;server http://192.168.33.11:3333;server http://192.168.33.12:3333; server http
29、://192.168.33.13:3333 backup; //熱備 ......}server { location ~*^.+$ { proxy_pass mysvr; #請(qǐng)求轉(zhuǎn)向mysvr 定義的服務(wù)器列表 },(5) Nginx負(fù)載均衡 HTTP Upstream模塊(配置在server段),二.Nginx服務(wù)器,,,負(fù)載均衡的算法:
30、熱備:如果你有2臺(tái)服務(wù)器,當(dāng)一臺(tái)服務(wù)器發(fā)生事故時(shí),才啟用第二臺(tái) 服務(wù)器給提供服務(wù);輪詢:nginx默認(rèn)就是輪詢其權(quán)重都默認(rèn)為1;加權(quán)輪詢:跟據(jù)配置的權(quán)重的大小而分發(fā)給不同服務(wù)器不同數(shù)量的請(qǐng)求;ip_hash:nginx會(huì)讓相同的客戶端ip請(qǐng)求相同的服務(wù)器;* Nginx的最大優(yōu)勢在于處理靜態(tài)文件和代理轉(zhuǎn)發(fā)功能,支持7層負(fù)載均 衡和故障隔離;,(5) Nginx負(fù)載均衡 HTTP Ups
31、tream模塊(配置在server段),三.Apache服務(wù)器,,,Apache HTTP服務(wù)器是一個(gè)模塊化的服務(wù)器,Apache的特點(diǎn)是簡單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來使用。Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開支,不太適合于多處理器環(huán)境,因此,在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服
32、務(wù)器,市場占有率達(dá)60%左右。,(1) Apache服務(wù)器相關(guān)簡介,三.Apache服務(wù)器,,, ServerAdmin webmaster@myproject.com #站長郵箱設(shè)置 DocumentRoot "/var/www/html" DirectoryIndex index.php index.html index.htm ServerName
33、 myproject.com ErrorLog "logs/myproject.com-error.log" #錯(cuò)誤日志 CustomLog "logs/myproject.com-access.log" common Options FollowSymLinks AllowOverride No
34、ne Order allow,deny Allow from all ,(2) Apache虛擬主機(jī)配置(針對(duì)配置文件),三.Apache服務(wù)器,,,在LoadModule處添加:LoadModule php5_module module/libphp5.so 在AddTypeapplication處添加:AddType application/x-
35、httpd-php .php,(3) Apache與PHP集成配置(安裝完P(guān)HP),三.Apache服務(wù)器,,,Options指令可以在Apache服務(wù)器核心配置(server config)、虛擬主機(jī)配置(virtual host)、特定目錄配置(directory)以及.htaccess文件中使用, Options指令的主要作用是控制特定目錄將啟用哪些服務(wù)器特性,特性選項(xiàng)之間以空格分隔,Options指令的完整語法為:
36、Options [+|-]option [[+|-]option] ...例:Options Indexes FollowSymLinks,(4) Apache Options指令,三.Apache服務(wù)器,,,. All 表示除MultiViews之外的所有特性,這也是Options指令的默認(rèn)設(shè)置;. None 表示不啟用任何的服務(wù)器特性;. FollowSymLinks 服務(wù)器允許在此目錄中使用符號(hào)連接, Follo
37、wSymLinks 決定是否可以通過符號(hào)連接跨越DocumentRoot;. Indexes 如果輸入的網(wǎng)址對(duì)應(yīng)服務(wù)器上的一個(gè)文件目錄,而此目錄中又沒 有DirectoryIndex指令(例如:DirectoryIndex index.html index.php), 那么服務(wù)器會(huì)返回由mod_autoindex模塊生成的一個(gè)格式化后的目錄列表, 并列出該目錄下的所有文件;,(4) Apache Options指令,三.
38、Apache服務(wù)器,,,. MultiViews 如果客戶端請(qǐng)求的路徑可能對(duì)應(yīng)多種類型的文件,那么服務(wù) 器將根據(jù)客戶端請(qǐng)求的具體情況自動(dòng)選擇一個(gè)最匹配客戶端要求的文件;. SymLinksIfOwnerMatch 只有當(dāng)符號(hào)連接和符號(hào)連接指向的目標(biāo)文件或 目錄的所有者是同一用戶時(shí),才會(huì)使用符號(hào)連接;. ExecCGI 允許使用mod_cgi模塊執(zhí)行CGI腳本;. Includes 允許使用mod_include模塊提
39、供的服務(wù)器端包含功能;. AllowOverride 定義是否允許各個(gè)目錄用目錄中的.htaccess(后面解釋)覆 蓋這里設(shè)定的Options;,(4) Apache Options指令,三.Apache服務(wù)器,,,. DirectoryIndex 指定歡迎頁面;* Apache允許在一個(gè)目錄配置中設(shè)置多個(gè)Options指令,但如果一個(gè)目錄 被多次設(shè)置了Options,則指定特性數(shù)量最多的一個(gè)Options指令會(huì)被完
40、 全接受(其它的被忽略),而各個(gè)Options指令之間并不會(huì)合并;,(4) Apache Options指令,三.Apache服務(wù)器,,,* 在Apache配置文件中,給指定目錄設(shè)置基本的訪問權(quán)限,主要是靠 Allow、Deny、Order三個(gè)指令的配合使用來實(shí)現(xiàn)的:. Allow指令:用于設(shè)置允許訪問當(dāng)前目錄(及其子目錄)或文件的用戶范圍;. Deny指令:作用就是「Deny(拒絕)」,用于設(shè)置拒絕訪問當(dāng)前目錄或文
41、 件的用戶范圍;. Order指令:用于控制Allow指令和Deny指令的生效順序,例如,Order Allow,Deny表示當(dāng)前配置段中的Allow指令先生效,Deny指令后生效;,(5) Apache目錄訪問權(quán)限,三.Apache服務(wù)器,,,. ServerTokens OS 當(dāng)服務(wù)器響應(yīng)主機(jī)頭(header)信息時(shí)顯示Apache 的版本和操作系統(tǒng)名稱;. ServerRoot "/etc/httpd&
42、quot; 設(shè)置服務(wù)器的根目錄;. KeepAlive Off 不使用保持連接的功能,即客戶一次請(qǐng)求連接只能響應(yīng)一 個(gè)文件;. MaxKeepAliveRequests 100 在使用保持連接功能時(shí),設(shè)置客戶一次請(qǐng) 求連接能響應(yīng)文件的最大上限;. KeepAliveTimeout 15 在使用保持連接功能時(shí),兩個(gè)相鄰的連接的時(shí)間 間隔超過15 秒,就切斷連接;,(6) Apache配置相關(guān),三.Apache服務(wù)器
43、,,,. StartServers 8 設(shè)置服務(wù)器啟動(dòng)時(shí)運(yùn)行的進(jìn)程數(shù);. MinSpareServers 5 Apache 在運(yùn)行時(shí)會(huì)根據(jù)負(fù)載的輕重自動(dòng)調(diào)整空閑子 進(jìn)程的數(shù)目;. KeepAlive Off 不使用保持連接的功能,即客戶一次請(qǐng)求連接只能響應(yīng)一 個(gè)文件;. MaxSpareServers 20 若存在高于20 個(gè)空閑子進(jìn)程,就創(chuàng)建逐一刪除子 進(jìn)程來提高系統(tǒng)性能;. MaxClients 150
44、 限制同一時(shí)間的連接數(shù)不能超過150;,(6) Apache配置相關(guān),三.Apache服務(wù)器,,,. MaxClients 150 限制同一時(shí)間的連接數(shù)不能超過150;. MaxRequestsPerChild 1000 限制每個(gè)子進(jìn)程在結(jié)束處理請(qǐng)求之前能處 理的連接請(qǐng)求為1000;. TypesConfig /etc/mime.types 指定負(fù)責(zé)處理MIME 對(duì)應(yīng)格式的配置文 件的存放位置. DefaultTy
45、pe text/plain 指定默認(rèn)的MIME 文件類型為純文本或HTML 文 件. MaxClients 150 限制同一時(shí)間的連接數(shù)不能超過150;. HostnameLookups Off 只記錄連接Apache 服務(wù)器的IP 地址,而不記錄 主機(jī)名,(6) Apache配置相關(guān),三.Apache服務(wù)器,,,. 啟用FollowSymLinks選項(xiàng),并禁用SymLinksIfOwnerMatch;. 禁用Allo
46、wOverride;如果Apache的配置文件中允許了AllowOverride指 令,則Apache在處理每個(gè)請(qǐng)求路徑時(shí),都會(huì)嘗試對(duì)文件路徑的每一個(gè)組 成部分都打開該目錄下的.htaccess文件,從而影響服務(wù)器的運(yùn)行性能;. 為了提高性能,盡量不使用通配符;. 選擇適當(dāng)?shù)亩嗦诽幚砟K和修改Apache的并發(fā)連接配置: * MPM模塊(Multi-Processing Modules 多路處理模塊):負(fù)責(zé)綁定本
47、 機(jī)網(wǎng)絡(luò)端口、接受請(qǐng)求,并調(diào)度子進(jìn)程來處理請(qǐng)求;,(7) Apache性能優(yōu)化,三.Apache服務(wù)器,,,* 在Windows和Unix/Linux操作系統(tǒng)上,MPM模塊主要有mpm_winnt (專門針對(duì)Windows操作系統(tǒng))、mpm_prefork、mpm_worker三種: . mpm_prefork模塊:主要應(yīng)用于Unix/Linux平臺(tái)的Apache服務(wù)器, 其主要工作方式是:當(dāng)Apach
48、e服務(wù)器啟動(dòng)后,mpm_prefork模塊會(huì) 預(yù)先創(chuàng)建多個(gè)子進(jìn)程(默認(rèn)為5個(gè)),當(dāng)接收到客戶端的請(qǐng)求后, mpm_prefork模塊再將請(qǐng)求轉(zhuǎn)交給子進(jìn)程處理,并且每個(gè)子進(jìn)程同時(shí) 只能用于處理單個(gè)請(qǐng)求。如果當(dāng)前的請(qǐng)求數(shù)將超過預(yù)先創(chuàng)建的子進(jìn)程 數(shù)時(shí),mpm_prefork模塊就會(huì)創(chuàng)建新的子進(jìn)程來處理額外的請(qǐng)求。 由于在mpm_prefork模塊中,每個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)
49、子進(jìn)程,因此其占 用的系統(tǒng)資源相對(duì)其他兩種模塊而言較多。,(7) Apache性能優(yōu)化,三.Apache服務(wù)器,,,. mpm_worker模塊也主要應(yīng)用于Unix/Linux平臺(tái)的Apache服務(wù)器,它 可以看作是mpm_prefork模塊的改進(jìn)版。mpm_worker模塊的工作方 式與mpm_prefork模塊類似,與mpm_prefork模塊不同的是, mpm_worker模塊會(huì)
50、讓每個(gè)子進(jìn)程創(chuàng)建固定數(shù)量的服務(wù)線程和一個(gè)監(jiān) 聽線程,并讓每個(gè)服務(wù)線程來處理客戶端的請(qǐng)求,監(jiān)聽線程用于監(jiān)聽 接入請(qǐng)求并將其傳遞給服務(wù)線程處理和應(yīng)答。 與mpm_prefork模塊相比,mpm_worker模塊可以進(jìn)一步減少系統(tǒng) 資源的開銷。再加上它也使用了多進(jìn)程,每個(gè)進(jìn)程又有多個(gè)線程,因 此它與完全基于線程的處理方式相比,又增加了一定的穩(wěn)定性。 * 默認(rèn)情況下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- php高級(jí)開發(fā)之mvc框架淺談
- wlan基礎(chǔ)培訓(xùn)掃盲篇
- edge介紹掃盲篇
- 高端php培訓(xùn)高性能架構(gòu)班!
- 汽車知識(shí)掃盲篇(一)懸掛
- 化學(xué)試劑純度分類掃盲篇
- 化學(xué)試劑純度分類掃盲篇
- 化學(xué)試劑純度分類掃盲篇
- usb的開發(fā)之標(biāo)準(zhǔn)篇
- 《php web應(yīng)用開發(fā)》授課計(jì)劃表(php+vue版)
- 掃盲教案
- php教學(xué)網(wǎng)站設(shè)計(jì)與開發(fā)
- [學(xué)習(xí)]網(wǎng)站開發(fā)教程-php簡介
- 鋼筋識(shí)圖掃盲
- pubmed使用掃盲
- 房地產(chǎn)篇之開發(fā)間接費(fèi)用
- 掃盲練習(xí)
- 音箱線的選用&音箱基礎(chǔ)知識(shí)之絕對(duì)掃盲
- 中國掃盲教育的轉(zhuǎn)型研究——從工具性掃盲教育到發(fā)展性掃盲教育.pdf
- 基金產(chǎn)品專題研究系列之四基金研究框架構(gòu)建之債券基金篇
評(píng)論
0/150
提交評(píng)論