国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose

來源:懂視網 責編:小采 時間:2020-11-27 16:39:33
文檔

awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose

awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose:本文可以看做是 多server多站點情況下awstats日志分析 這篇文章的下篇,在使用過程中發現awstats在cgi模式下動態生成分析報告慢的問題 (尤其是有些站點每天兩個多G的日志,查看起來簡直是在考驗人的耐性),本文分享一種改造這個缺點的思路。 首先再來
推薦度:
導讀awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose:本文可以看做是 多server多站點情況下awstats日志分析 這篇文章的下篇,在使用過程中發現awstats在cgi模式下動態生成分析報告慢的問題 (尤其是有些站點每天兩個多G的日志,查看起來簡直是在考驗人的耐性),本文分享一種改造這個缺點的思路。 首先再來

本文可以看做是 多server多站點情況下awstats日志分析 這篇文章的下篇,在使用過程中發現awstats在cgi模式下動態生成分析報告慢的問題 (尤其是有些站點每天兩個多G的日志,查看起來簡直是在考驗人的耐性),本文分享一種改造這個缺點的思路。

首先再來總結下awstats的處理過程以及查看分析結果的兩種方式,來看官方版說明:

Process logs:Building/updating statistics database,建立/更新統計數據庫(包含統計結果的文本文件)命令如下

perl awstats.pl -config=mysite -update

Run reports:Building and reading reports(生成并閱讀報告)

1.The first option is to build the main reports, in a static HTML page, from the command line, using the following syntax

第一種方式,通過命令行生成html文件,然后瀏覽器展示。命令如下

perl awstats.pl -config=mysite -output -staticlinks > awstats.mysite.html

2.The second option is to dynamically view your statistics from a browser. To do this, use the URL:

第二種方式,通過如下的url“動態”的生成該站點的分析報告

總體思路就是,既然“動態生成”這個過程耗時,那就在服務器上定時通過curl 請求每個站點對應的url將生成的html頁面存儲到特定位置,然后瀏覽器訪問時直接讀取html文件即可(可能有同學要問了,這么費事,那為啥不直接用上面的第一種方式,用awstats.pl提供的參數直接生成html文件呢?這也就回歸到上篇文章中討論過的兩種方式的差別了,awstats.pl生成的靜態html頁面從易用性和美觀性都不如通過CGI動態生成的html頁面)

思路有了,接下來就是“嘗試”和“分析特征”。我們直接以

curl -o /tmp/mysite.html http://www.myserver.mydomain/awstats/awstats.pl?config=mysite

得到的頁面源代碼如下

Statistics for www.mysite.com (2015-08) - main<body>Your browser does not support frames.<br />You must set AWStats UseFramesWhenCGI parameter to 0to see your reports.<br /></body>

可以看到動態生成的頁面實際上是一個包含了兩個frame(mainleft和mainright)的html文件,也就是說,如果我們想還原一個動態生成的報告頁面,需要通過如下三條命令來生成對應的三個文件

curl -s -o main.html "http://www.myserver.mydomain/awstats/awstats.pl?config=mysite" #取得主頁面curl -s -o left.html "http://www.myserver.mydomain/awstats/awstats.pl?config=mysite&framename=mainleft" #取得左framecurl -s -o right.html "http://www.myserver.mydomain/awstats/awstats.pl?config=mysite&framename=mainright" #取得右frame

然后,需要在 main.html中修改mainleft和mainright兩個frame的src屬性,將其指定到我們生成的left.html和right.html。如此我們就實現了將動態頁面靜態化(實際上是把動態生這個等待時間放到腳本里定時執行了)。

接下來,就是具體的實現過程了,涉及到對上篇文章中“ cron_awstats_update.sh ”腳本的改進,修改后的腳本內容如下(注釋還算豐富,也能幫助理解思路)

#!/bin/sh#awstats日志分析basedir=/usr/local/awstatsdate_y_m=$(date +%Y%m -d '1 day ago') #因為該腳本是第二天凌晨分析前一天的日志cd $basedir#循環更新所有站點日志統計信息echo -e "\e[1;31m-------`date "+%F %T"` 開始處理---------\n\e[0m" >>logs/cron.logfor i in `ls result/`do echo -e "\e[1;32m -----`date "+%F %T"` 處理 $i 日志-----\e[0m" >>logs/cron.log perl wwwroot/cgi-bin/awstats.pl -config=etc/$i.conf -lang=cn -update &>>logs/cron.log #將動態頁面靜態化,查看展示頁面結構可得:主頁面基本沒內容,主要靠左右兩個frame來生成內容 #所以可以將每一個站點的展示頁分為三部分來緩存 echo -e "\e[1;32m -----`date "+%F %T"` 生成 $i 分析靜態頁面-----\n\e[0m" >>logs/cron.log cd wwwroot #進入wwwroot目錄,并以 '站點/日期'為格式創建目錄用來存儲html文件 if [ ! -d $i/$date_y_m ];then mkdir -p $i/$date_y_m;fi cd $i/$date_y_m curl -s -o main.html "http://www.myserver.mydomain/cgi-bin/awstats.pl?config=$basedir/etc/$i.conf" #取得主頁面 curl -s -o left.html "http://www.myserver.mydomain/cgi-bin/awstats.pl?config=$basedir/etc/$i.conf&framename=mainleft" #取得左frame curl -s -o right.html "http://www.myserver.mydomain/cgi-bin/awstats.pl?config=$basedir/etc/$i.conf&framename=mainright" #取得右frame #修改main.html里關于左右兩個frame的引用 sed -i -e 's/awstats.pl.*left/left.html/g' -e 's/awstats.pl.*right/right.html/g' main.html #接下來修改上面三個文件中的超鏈接部分以及字符集 sed -i -e 's#awstats.pl#http://www.myserver.mydomain/cgi-bin/awstats.pl#g'\ -e 's/charset=.*/charset=utf-8">/g'\ -e 's/lang="cn"http://g'\ main.html left.html right.html cd $basedirdoneecho -e "\e[1;33m-------`date "+%F %T"` 處理完成---------\n\e[0m" >>logs/cron.log

經過腳本處理之后,在wwwroot目錄下,站點目錄與html文件會是這個樣子

到此,我們對上篇文章中的nginx配置部分做相應修改后就可以通過如下url來訪問了

http://www.myserver.mydomain/www/201605 #表示www站2016年5月的統計頁面

但是,改造到這里并不算完,在動態生成的頁面里,有選擇年和月的下拉框,可以查看指定年月的統計頁面,如下圖

這個功能會產生一個如下的請求

http://www.myserver.mydomain/cgi-bin/awstats.pl?month=04&year=2016&output=main&config=www.conf&framename=index

仍然是動態請求(即仍然會慢),但按照我們的設計,每個月應該都已經生成了靜態文件,所以是不需要動態生成的。如何將這個功能點修改為也按照上面靜態url的格式呢,這里作者首先想到了兩個方案:

一個是通過js獲取年和月的值,然后在表單的action處拼出所需的url

另一個是通過nginx的rewrite來實現

經過嘗試和對比,第二種方案更適合這里的場景,因為第一種涉及到對生成的html文件內容進行修改,且不止一處,實現起來??嗦一些;而第二種方案只需要在nginx里做配置即可(這里如何從nginx獲取到參數值并且引用該值算是一個小技巧吧)。

最終,修改之后的nginx配置文件如下

server { listen 800; root /usr/local/awstats/wwwroot; access_log /tmp/awstats_access_log access; error_log /tmp/awstats_nginx.error_log notice; location / { index index.html main.html; } # Static awstats files: HTML files stored in DOCUMENT_ROOT/awstats/ location /awstats/classes/ { alias classes/; } location /awstats/css/ { alias css/; } location /awstats/icon/ { alias icon/; } location /awstats-icon/ { alias icon/; } location /awstats/js/ { alias js/; } # Dynamic stats. location ~ ^/cgi-bin/(awredir|awstats)\.pl.* { gzip off; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root/cgi-bin/fcgi.php; fastcgi_param X_SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param X_SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; fastcgi_send_timeout 300; #為了讓頂部根據時間篩選功能也能用上之前生成的靜態頁面, 其中%2F部分為url編碼后的/,為了取得站點名 if ($query_string ~* "^month=(\d+)&year=(\d+)&output=main&config=.+etc%2F(.+)\.conf&framename=index$") { set $month $1; set $year $2; set $site $3; rewrite ^/cgi-bin/awstats\.pl /$site/$year$month? permanent; } } expires 12h;}

ok,到這里整個改進過程完畢。每個月份的統計結果的主頁面都已經實現了靜態化,查看時再也不用經歷漫長的等待了!PS: 工具再好,也不見得完全適合或者滿足自己的需求,大部分情況下作為“軟件使用者”的運維同胞,應該有這個意識:不只會用,必要時還能改。共勉!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose

awstatsCGI模式下動態生成頁面緩慢的改進_html/css_WEB-ITnose:本文可以看做是 多server多站點情況下awstats日志分析 這篇文章的下篇,在使用過程中發現awstats在cgi模式下動態生成分析報告慢的問題 (尤其是有些站點每天兩個多G的日志,查看起來簡直是在考驗人的耐性),本文分享一種改造這個缺點的思路。 首先再來
推薦度:
標簽: 頁面 中添加 html
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩欧美一区二区三区在线 | 亚洲欧美日韩色图 | 国产最新进精品视频 | 亚洲色图在线播放 | 国产午夜视频在线 | 欧美日韩视频在线 | 高清精品一区二区三区一区 | 亚洲国产一区二区三区 | 美女视频一区二区 | 国产成人亚洲综合a∨婷婷 国产成人免费在线视频 | 久久久久国产一级毛片高清版 | 国产精品一区二区三区四区五区 | 欧美日韩一二三区 | 日韩欧美一区二区三区在线播放 | 亚洲精品国产综合一线久久 | 国产在线视频资源 | 亚洲一区三区 | 亚洲第8页 | 日本久热| 国产成人精品一区二区三区… | 中文字幕一区二区三区久久网站 | 美女视频黄a视频免费全过程在线 | 成人精品视频一区二区三区 | 一区二区三区在线观看免费 | 老子影院午夜久久亚洲 | 波多野结衣在线免费观看 | 国产a久久精品一区二区三区 | 日韩毛片免费观看 | 日韩欧美极品 | 国产成人麻豆精品 | 国产精品区一区二区三 | 亚洲精品高清视频 | 国产精美视频 | 国产一区视频在线播放 | 精品一区二区三区的国产在线观看 | 亚洲欧美精品伊人久久 | 91啦在线播放 | 伊人精品国产 | 99精品国产免费久久国语 | 日韩精品123| 国产欧美第一页 |