好吧。之前寫過關於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的安裝,這個不多說了,系統光盤裏都有。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/
日誌文件就已經生成了。
現在可以來處理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來源識別,打開監控網頁的整體會變慢,而且統計圖片很可能會顯示不出來——當然這個和機器的配置還有設置有關係。