由于一個(gè)web站點(diǎn)的程序的訪問(wèn)具有局部性特征:時(shí)間上的局部性:一個(gè)數(shù)據(jù)被訪問(wèn)過(guò)之后,可能很快會(huì)被再次訪問(wèn)到;空間局部性:一個(gè)數(shù)據(jù)被訪問(wèn)時(shí),其周邊的數(shù)據(jù)也有可能被訪問(wèn)到;varnish可將這部分?jǐn)?shù)據(jù)緩存下來(lái).
緩存的數(shù)據(jù)存在被訪問(wèn)較頻繁的數(shù)據(jù)可以稱其為熱區(qū):緩存同樣存在局部性;時(shí)效性:如果緩存空間耗盡:則采用LRU,最近最少使用算法;將過(guò)期的緩存清理掉
涿州網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
Varnish通過(guò)類似于HTPP反向代理的方式將可以用來(lái)緩存的數(shù)據(jù)緩存下來(lái)直接響應(yīng)給客戶端的緩存數(shù)據(jù),如果緩存中
沒(méi)有相應(yīng)的數(shù)據(jù),它將會(huì)把請(qǐng)求指向后端機(jī)器,獲取響應(yīng)的數(shù)據(jù)進(jìn)行響應(yīng)客戶端。
當(dāng)varnish有緩存的時(shí)候響應(yīng)通常只需要極短的時(shí)間,比直接訪問(wèn)后端機(jī)器通常要快幾個(gè)量級(jí),所以要盡可能的將可緩存的頁(yè)面緩存到varnish中。
varnish工作模式圖:
varnish的處理機(jī)制圖:
哪些數(shù)據(jù)可以緩存或是不可緩存:1.盡量將站點(diǎn)公共的數(shù)據(jù)緩存下來(lái);2.用排除用戶的私有數(shù)據(jù).
基礎(chǔ)拓?fù)鋱D:
ntpdata 172.16.0.1 同步時(shí)間
安裝varnish程序:
yum install varnish
編輯varnish的主配置文件:
vim /etc/varnish/varnish.params 添加最后一行: DAEMON_OPTS="-p thread_pools=3 -p thread_pool_min=5 -p thread_pool_max=1000 -p thread_pool_timeout=300"
啟動(dòng)varnish程序:
systemctl restart varnish
編輯varnish的vcl配置文件:
vim /etc/varnish/default.vcl
作出如下基礎(chǔ)配置:
vcl 4.0; # Default backend definition. Set this to point to your content server. backend default { .host = "192.168.5.109"; .port = "80"; } backend nginxsrvs { .host = "192.168.5.108"; .port = "80"; } sub vcl_recv { # Happens before we check if we have this in cache already. # # Typically you clean up the request here, removing cookies you don't need, # rewriting the request, etc. if (req.method == "PURGE") { return(purge); } if (req.url ~ "(?i)^/(login|admin)") { return(pass); } if (req.url ~ "(?i)\.(html|htm|css|svg|js|jpg|jpeg|png|gif|pdf)") { set req.backend_hint = nginxsrvs; } else { set req.backend_hint = default; } } sub vcl_purge { return (synth(200,"Purged")); } sub vcl_deliver { if (obj.hits>0) { set resp.http.X-Cache = "HIT via " + server.ip; } else { set resp.http.X-Cache = "Miss via " + server.ip; }
將default.vcl文件編譯加載至varnish程序:
varnishadm -S secret 進(jìn)入varnish配置的cli界面,執(zhí)行編譯加載: vcl.load test1 default.vcl vcl.use test1 quit
yum install httpd mkdir -p /apps/data (需要考慮權(quán)限)
將wordpress的源碼文件cp至目錄下
編輯httpd的站點(diǎn)配置文件
vim /etc/httpd/conf.d/wordpress.conf
DirectoryIndex index.php index.html ServerName www.abc.com DocumentRoot /apps/data/wordpress Options FollowSymLinks AllowOverride None Require all granted
啟動(dòng)httpd程序:
systemctl restart httpd
yum install nfs-utils vim /etc/exports /apps/data *(rw,all_squash,anonuid=48)
yum install nginx #這里要用到nginx官方提供的yum源
配置/etc/nginx/conf.d/default.conf文件,作出如下修改
vim /etc/nginx/conf.d/default.conf location / { root /apps/data/wordpress; #指明web程序的路徑 index index.html index.htm; }
啟動(dòng)nginx服務(wù)程序
systemctl restart nginx
更改hosts文件即可做訪問(wèn)測(cè)試.
varnish的基礎(chǔ)配置實(shí)現(xiàn)已完成.