好吧。之前寫過關于apache日志的文章,本意是了解一下apache日志的配置和基礎解讀為apache日志分析打好基礎,應用到生産之後能夠對網站的維護和日常生産做出指導作用。
寫在前面的話:
因為我的實際生産環境AS4、AS5、AS6都有,是以都做了實驗,并且現在都已經應用在生産中了。但實際這個東西三版系統中除了最後jawstats的應用有點問題以外,其它都一樣,是以這裡用AS4做基礎的實驗環境。
實驗環境:AS4UP4 (AS5、AS6通用)
采用的軟體包:
awstats: 采用的是現在為止最新的穩定版(2016-03-03)
本體:http://prdownloads.sourceforge.net/awstats/awstats-7.4.tar.gz
jawstats: 這裡要說明一下,這個界面比awstats友好多了,但最新版在09年初就已經停止更新了,是以這裡到後面會有一點小問題。
本體:http://static.jawstats.com/src/jawstats-0.7beta.tar.gz
語言包:http://www.jawstats.com/src/languagepack.zip
一、系統設定
由于是實驗性質,是以采用了絕對安全環境下進行的一些設定(為了避免軟體引起的幹涉),在實際環境中請慎重考慮一下:
Selinux關閉,這個不關可能在apache另做的别名和系統預設的apache檔案夾以外的檔案夾無法被順得加載。
#setenforce 0
這個是臨時關閉,重新開機之後失效
或者
#vim /etc/selinux/config
把SELINUX=Enforcing 改成 SELINUX=disabled
這個重新開機之後就永久關閉了。
perl的安裝,這個不多說了,系統CD光牒裡都有。awstats需要這個做支援,7.4版本要求在版本在5以上,這個應該不是難事,AS4自帶的就是5。
二、設定
首先說明一下,awstats是基本LAMP的軟體,而本身我們也是為了分析apache日志,是以LAMP環境是必須的。實驗中我是直接完全安裝,現在RPM包全裝完了。源碼包的安裝方式參看:
使用的三個包
awstats這個是從apache日志中提取資訊并成生分析資料的軟體,這是整個分析系統的核心。
Jawstats直接利用awstats生成的資料,轉換到一個更加友好界面展現出來,其實就是awstats的一個插件。
Languagepack是jawstats的語言包
SO,一步步來。
安裝awstats
awstats對日志的分析支援的模式是 combined,是以之前做的日志要改變一下。
# vim /etc/httpd/conf/httpd.conf //編輯apache配置檔案
把
CustomLog 改成
CustomLog "| /usr/sbin/rotatelogs /etc/httpd/logs/access_log%Y%m%d 86400 480" combined
# service httpd restart //重新開機apache
打開浏覽器通路一下http://IP
#ll /etc/httpd/logs/
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DOzMzNyMjMwIjNwMDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
日志檔案就已經生成了。
現在可以來處理awstats了
# tar zxvf awstats-7.4.tar.gz
# mv awstats-7.4 /usr/local/awstats
# cd /usr/local/awstats/tools/
# ./awstats_configure.pl
這裡要求的是apache配置檔案的完整路徑。
apache配置檔案找到之後,會寫入和awstats相關的别名設定。
模闆配置檔案也會生成,儲存在/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf
這裡是利用模闆,直接配置需要分析的模闆了。
這裡是網站名稱,可以寫全域名,我這裡直接寫localhost了。
這裡說明是配置檔案存放路徑,預設是/etc/awstats,預設就直接回車了。
之後apache就會直接重新開機,之後會提示日志分析指令和web通路路徑。基本配置到此完成,現在準備生成分析資料。
這裡說明一下,如果找不到libmysql.so.14.0或者以上版本的同名檔案重新開機apache是會失敗的,但無傷大雅,可以自己手動重新開機。AS4系統中内置包名是mysql-4.1.20-1.RHEL4.1.i386.rpm,其它幾個系統類同。
# mkdir /var/lib/awstats //這個是日志分析後資料儲存的路徑,必須手動建立
# vim /etc/awstats/awstats.localhost.conf
//修改localhost的配置檔案,因為配置檔案裡的apache源日志檔案名是通用的,要改成之前設定的那個
LogFile改成如下:
LogFile="/etc/httpd/logs/access_log%YYYY%MM%DD"
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost
//生成資料,指令照打,如下是成功的。
# crontab -e //apache的日志是不斷産生的,是以要加入計劃任務。
*/1 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost
# service crond restart
# chown apache.apache -R /usr/local/awstats/ //把權限改成apache使用者,否則無法正常通路
打開浏覽器
http://IP/awstats/awstats.pl?config=localhost
完成。
安裝jawstats
# mkdir jawstats
# tar zxvf jawstats-0.7beta.tar.gz -C jawstats //jawstats解開是檔案狀态,是以要指定檔案夾
# mkdir language
# unzip languagepack.zip -d language
# cp language/* ./jawstats/languages/
# mv jawstats /var/www/html/
# cd /var/www/html/jawstats/
# cp config.dist.php config.php
# vim config.php //編譯配置檔案
全局變量
$sDefaultLanguage = "zh-cn"; //這裡隻需要把預設的語言改掉就行了
$aConfig["localhost"] = array(
//這裡是指定讀取網站的名稱,這裡寫錯了會讀錯日志,和awstats設定一樣,即剛剛在awstats中輸入的網站名稱。
"statspath" => "/var/lib/awstats/",
//awstats生成的資料檔案目錄
"updatepath" => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",
//也就是awstats.pl檔案的目錄
"siteurl" => "localhost",
//這個是jawstats進去之後标題的連結
"sitename" => "localhost",
//這個是jawstats進去之後給出的網站标題,主要是标明哪個網站
"theme" => "default",
"fadespeed" => 250,
"password" => "mypassword",
//更新站點資料的密碼,jawstats有個功能,其實感覺用F5重新整理就行了,如果你等不急awstats每分鐘重新整理一次的頻率的話,可能試下這個。
"includes" => "",
"language" => "zh-cn"
//預設語言
);
關于jawstats第一步就完成了。這裡有兩個地方要說明一下。
1.jawstat,在09年初就斷更了。PHP5.3釋出之後很多PHP規則都改變了,它裡面很多内置函數因為這個原因都無法使用,是以它是不支援PHP5.3以上的版本的。SO,AS6就失敗了。
2.由于awstats的版本一直在更新,是以jawstats是不能完全支援最新版本的awstats的,例如檢視浏覽器和作業系統就無法完成。要支援的話,可以使用awstats6.95的版本。不過其實這些功能awstats本身都有,看個人取舍。
以上設定完成之後,awstats和jawstats的目錄都是不設防的,所有人都可以通路。一般情況下為了安全起見是要做一下通路控制的,網上大多數人用的都是.htpasswd,不過如果有固定IP位址或者VPN的話可以直接用ACL進行控制。
下面分别說明一下:
.htpasswd方法
例awstats在apache配置檔案中原始的檔案夾權限
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
修改為:
<Directory "/usr/local/apache/htdocs/www/awstats">
AuthType Basic
AuthName "Auth Youself" //這裡是提示資訊
AuthUserFile /usr/local/awstats/wwwroot/.htpasswd
Require user admin
</Directory>
然後
/usr/bin/htpasswd -c /usr/local/awstats/wwwroot/.htpasswd 使用者名 密碼
jawstats亦以此類推,複制一下即可。
ACL方法:
例awstats在apache配置檔案中原始的檔案夾權限
如下
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
修改為:
<Directory "/usr/local/awstats/wwwroot">
Options None
Order deny,allow
//這裡deny,allow的位置要注意,寫在後面的覆寫前面的,寫反了allow将不會生效
Deny from all
Allow from 允許的IP
</Directory>
Jawstats可以以此類推,如下:
Alias /jawstats "/var/www/html/jawstats" //我這裡建立了一個别名
<Directory "/var/www/htmlt/jawstats">
Options None
Order deny,allow
Deny from all
Allow from 允許的IP
</Directory>
無論哪種方法,不要忘記重新開機apache服務。
awstats的優化
剛剛建好的awstats最大的問題在于無法通過IP識别來源的國家,這個需要其它插件的支援。
要下三個包
http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz 主程式
http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.19.tar.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 城市資訊
先安裝GeoIP
# tar zxvf GeoIP.tar.gz
# cd GeoIP-1.4.8/
# ./configure --prefix=/usr/local/geoip
# make
# make install
安裝Geo-IP-PurePerl
# tar zxvf Geo-IP-PurePerl-1.19.tar.gz
# cd Geo-IP-PurePerl-1.19
# perl Makefile.PL
# make
# make test
# make install
更新資料庫
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/local/awstats/wwwroot/cgi-bin/
//資料庫GeoLiteCity.dat移到目标目錄
# vim /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf
做如下修改:
LoadPlugin="decodeutfkeys"
LoadPlugin="graphgooglechartapi"
LoadPlugin="geoip GEOIP_STANDARD /usr/local/geoip/share/GeoIP/GeoIP.dat"
//這裡是安裝目錄,其實是GeoIP資料庫GeoIP.dat的路徑
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/awstats/wwwroot/cgi-bin/GeoLiteCity.dat"
//這行别搞錯了,原來是以GeoIPCity.dat結尾的。如果隻注釋那麼是得不到想要的結果的。
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost
更新過後,應該就可以得出結果了
本來GeoIP是有自動更新功能的,但帳号需要購買,是以隻能定時下載下傳更新包了。
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
///另,開啟了IP來源識别,打開監控網頁的整體會變慢,而且統計圖檔很可能會顯示不出來——當然這個和機器的配置還有設定有關系。