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 遠端登出後繼續執行

# 使用 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 就完成囉!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *