Nginx配置文件實現AWStats靜態頁面

Nginx配置文件在有些時候須要咱們不斷的更新,雖然AWStats如今已經支持輸出靜態網頁形式的分析結果,可是頁面佈局沒有用Perl生成的動態網頁方便,並且用自帶的用Perl編寫的轉換工具稍微有點慢,在流量不大的狀況下,仍是在Perl+Fast CGI上運行更舒服一些。nginx

首先要參考以前的文章,創建好PERL+FCGI的運行環境,這步準備工做就夠費勁的。瀏覽器

而後開始切入正題:服務器

1. 下載最新版的AWStats,基本就是Perl包,因此不必用apt-get,解壓縮到/usr/local/awstats下工具

wget http://prdownloads.sourceforge.net/awstats/awstats-6.95.tar.gz
tar -xzf awstats-6.95.tar.gz
mv awstats-6.95 /usr/local/awstats佈局

2. 建立一個存放awstats分析數據的目錄post

mkdir /var/lib/awstats
chown www-data /var/lib/awstats //這是爲了讓awstats頁面上能直接刷新最新數據測試

3. 自動配置awstatsui

cd /usr/local/awstats/tools
perl awstats_configure.plurl

除了第一步由於是Ngin服務器的關係,因此要選none,其餘基本按照提示選默認值spa

4. 手工編輯Nginx配置文件

1) 修改LogFile路徑

LogFile = 「/var/log/Nginx/access.log」

若是是壓縮格式的日誌,能夠用LogFile = 「zcat /var/log/Nginx/%YYYY-24%MM-24%DD-24.gz|"。這裏用zcat是由於其使用管道輸出,對系統資源消耗比較小,千萬不要忘了最後的管道操做符!

假設原來/etc/Nginx/Nginx.conf中關於log部分是如此定義的:(要當心各個變量之間必須添加的空格,不能少,不然awstats就不認了)

log_format main ‘$remote_addr $remote_user [$time_local] 「$request」 $status ‘
‘$host $body_bytes_sent $gzip_ratio 「$http_referer」 ‘
‘」$http_user_agent」 「$http_x_forwarded_for」‘;

很容易知道,對應awstats配置文件中,LogFormat應該設置爲
LogFormat= 「%host %logname %time1 %methodurl %code %host_r %bytesd %gzipratio %refererquot %uaquot %otherquot」

最後一個選%otherquot是應爲$http_x_forwarded_for在AWstats 6.95中還不認識

3) 將AllowToUpdateStatsFromBrowser=1,便於瀏覽器中即時刷新數據

5. 更新Awstats的分析記錄,測試一下剛纔的配置

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yousite.com

若是一切正常,應該看到相似如下的結果:

Create/Update database for config 「/etc/awstats/awstats.yoursite.com.conf」 by AWStats version 6.95 (build 1.943)
From data in log file 「/var/log/Nginx/access.log」…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)…
Jumped lines in file: 0
Parsed lines in file: 1234
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 1234 new qualified records.

6. 修改logrotate.d下的Nginx配置文件,在天天切割日誌前,更新awstats狀態

 
  1. /var/log/nginx/*.log {  
  2. daily  
  3. missingok  
  4. rotate 7  
  5. compress  
  6. delaycompress  
  7. notifempty  
  8. create 640 www-data www-data  
  9. dateext  
  10. sharedscripts  
  11. prerotate  
  12. /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yoursite.com  
  13. sleep 59  
  14. endscript  
  15. postrotate  
  16. if [ -f /var/run/nginx.pid ]; then  
  17. kill -USR1 `cat /var/run/nginx.pid`  
  18. fi  
  19. endscript  

7. 接下來是最關鍵的NGINX配置文件

 
  1. #AWStatus Perl CGI server  
  2. server {  
  3. listen 80;  
  4. server_name awstats.yoursite.com;  
  5. access_log /var/log/nginx/awstats.log main;  
  6. error_log /var/log/nginx/awstats_error.log; #這能夠爲fail2ban留下記錄  
  7. root /usr/local/awstats/wwwroot;  
  8. auth_basic 「Restricted」;  
  9. auth_basic_user_file /etc/nginx/awstatus.pass;  
  10. location = / {  
  11. rewrite ^ /awstats.pl?config=freshventure.info;  
  12. }  
  13. location ~ .*(\.cgi|\.pl?)$ {  
  14. gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped  
  15. root /usr/local/awstats/wwwroot/cgi-bin;  
  16. fastcgi_pass 127.0.0.1:8000;  
  17. fastcgi_index awstats.pl;  
  18. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
  19. include fastcgi_params;  
  20. }  

好了,測試一下http://awstats.yoursite.com,和前文同樣,輸入密碼後,此次看到的應該就awstats的界面了

8. 若是須要配置靜態頁面,則能夠在logrotate中替換掉上面的awstats.pl, 換成

/usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=yoursite.com -lang=cn -dir=/usr/local/awstats/wwwroot -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl。

若是須要更頻繁的更新訪問狀況,則能夠把這句命令加入到crontab中,例如crontab -e -uwww-data。

而後nginx配置文件相應調整爲顯示靜態網頁就能夠了。

相關文章
相關標籤/搜索