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狀態
- /var/log/nginx/*.log {
- daily
- missingok
- rotate 7
- compress
- delaycompress
- notifempty
- create 640 www-data www-data
- dateext
- sharedscripts
- prerotate
- /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yoursite.com
- sleep 59
- endscript
- postrotate
- if [ -f /var/run/nginx.pid ]; then
- kill -USR1 `cat /var/run/nginx.pid`
- fi
- endscript
- }
7. 接下來是最關鍵的NGINX配置文件
- #AWStatus Perl CGI server
- server {
- listen 80;
- server_name awstats.yoursite.com;
- access_log /var/log/nginx/awstats.log main;
- error_log /var/log/nginx/awstats_error.log; #這能夠爲fail2ban留下記錄
- root /usr/local/awstats/wwwroot;
- auth_basic 「Restricted」;
- auth_basic_user_file /etc/nginx/awstatus.pass;
- location = / {
- rewrite ^ /awstats.pl?config=freshventure.info;
- }
- location ~ .*(\.cgi|\.pl?)$ {
- gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
- root /usr/local/awstats/wwwroot/cgi-bin;
- fastcgi_pass 127.0.0.1:8000;
- fastcgi_index awstats.pl;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
好了,測試一下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配置文件相應調整爲顯示靜態網頁就能夠了。