Ubuntu 18.04 安裝 AWStats 來統計網站流量
最近接到一個任務,要用 AWStats 統計流量,之前大多使用 Google Analytics,這次要求用 AWStats,很久以前有用過,但從來沒有自己架設過,這篇留個紀錄。
安裝 AWStats
sudo apt-get install awstats libgeo-ipfree-perl libnet-ip-perl
這邊應該沒有什麼問題,安裝就是了。
設定要統計的網站
# 把預設的 awstats.conf 複製一份出來改 sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.noter.tw.conf # 編輯設定檔 sudo vim /etc/awstats/awstats.noter.tw.conf
安裝完之後在 /etc/awstats/ 下面會有一個預設設定檔 awstats.conf,直接複製出來改成 awstats.接上你的網址.conf,然後進入編輯。
要修改的部份小蛙直接參考 Awstats流量統計@Alvin Chen Club 的設定
# 要分析的 log 路徑,大概在 50 行左右 LogFile="/var/log/apache2/access.log" # 記錄類別,維持不變 W = weblog,大概在 62 行 LogType=W # 記錄格式,這邊小蛙的環境是 Apache2,維持 1 就好,也可以自己設定 # 大概在 123 行 LogFormat=1 # Domain,大概在 154 行 SiteDomain="noter.tw" # 其他可連到主機的名稱,大概在 169 行 HostAliases="localhost 127.0.0.1" AllowFullYearView=3 LoadPlugin="tooltips" LoadPlugin="graphgooglechartapi" LoadPlugin="geoipfree"
小蛙大概改了這些東西,好了之後存檔離開。
搬移排程檔
因為剛安裝的時候,會自動在 /etc/cron.d/ 下面建立一個 awstats,打開可以看到裡面已經設定了自動執行的排程,為了避免等一下我們設定統計資料的時候,這個排程造成干擾,因此先把它移動到其他地方。
# 把 awstats 排程檔移動到其他地方放,e.g. /root 目錄下 sudo mv /etc/cron.d/awstats /root # 把 awstats 裡面原本建立的檔案都先刪掉 sudo rm /var/lib/awstats/*
手動執行
要知道設定檔能不能正確執行,就先手動跑一次囉!
sudo /usr/lib/cgi-bin/awstats.pl -config=noter.tw -update
這一步小蛙跑超久超久,期間還一直被中斷 … 因為小蛙總共要跑 5 份統計資料,花了不少時間在這邊測試,後來發現很簡單,只要搭配這篇 SSH 遠端登出後繼續執行
感謝同事翻到這篇文章,並且了小蛙跑超久的解決方案
分析速度很慢的問題把 DNSLookup 改成 0 應該就好了
官方文件有說
With DNSLookup enabled, log analyze speed is decreased by 40 to 100 times, so use it only if required
# 使用 screen screen # 要執行的指令 sudo /usr/lib/cgi-bin/awstats.pl -config=noter.tw -update # 離開 screen ctrl + a, d
這樣就會背景執行,突然斷線也不用擔心沒跑完,那要怎麼知道有沒有跑完呢?
# 查看所有 screen screen -ls # 連到特定 screen (xxxx 是上面 -ls 出現的數字) screen -r xxxx # 如果看到 Found xxxx new qualified records. 的字樣,就可以關閉 screen ctrl + a, k
設定排程檔
跑完一次統計資料之後,就可以設定排程了,網路上看到的資料都是 10 分鐘跑一次,但是小蛙遇到的 case 跑一次要兩小時 … 十分鐘跑一次不就會後面卡一堆排程 … 在這邊花了一兩天測試。
除了跑很久的問題,還遇到指令的問題,例如這台主機已經有被其他人設定過 awstats,但是設定檔有問題造成無法正確執行;原本網站使用的/usr/lib/cgi-bin/awstats.pl -update無法執行 …
先把剛剛移去 /root 下面放的 awstats 排程檔案移到 /etc/cron.d 下面放
# 把排程檔移回 sudo mv /root/awstats /etc/cron.d # 編輯排程檔 sudo vim /etc/cron.d/awstats # 每天早上六點執行 0 6 * * * * root /usr/lib/cgi-bin/awstats.pl -config=noter.tw -update > /dev/null
小蛙的狀況如果沒有加上 -config=noter.tw 的話沒有辦法執行 Orz … 跟別人講的不一樣啊!總之加了好了,就加吧!想知道有沒有成功,可以先把運行時間調到三、五分鐘後,然後等他執行完再來看看有沒有。
設定可以透過瀏覽器瀏覽
編輯 /etc/apache2/site-enabled/awstats.conf 加入以下設定
Alias /awstatsclasses "/usr/share/awstats/lib/" Alias /awstats-icon/ "/usr/share/awstats/icon/" Alias /awstatscss "/usr/share/doc/awstats/examples/css" ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ ScriptAlias /awstats/ /usr/lib/cgi-bin/ Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
開啟模組,重啟 apache
因為 awstats 是用 cgi 跑的,要開啟這個模組,開啟後重啟 apache
sudo a2enmod cgi sudo service apache2 restart
以上設定都沒問題的話,用瀏覽器開啟
http://你的網址/cgi-bin/awstats.pl?config=上面設定的網址
限制瀏覽
如果不想讓其他人看到這個頁面的話,就必須要加上這一步限制瀏覽 … 先透過以下指令建立可登入的使用者帳號及密碼
sudo htpasswd -c /etc/apache2/htpasswd 要登入的帳號
只要在剛剛編輯的 /etc/apache2/site-enabled/awstats.conf 加上
<Directory "/usr/lib/cgi-bin/"> AuthUserFile /etc/apache2/htpasswd AuthName "Please Enter Your Password" AuthType Basic Require valid-user </Directory>
重新啟動 apache 就完成囉!