AWStats is an open source Web analytics reporting tool that generates advanced web, streaming, ftp or mail server statistics, graphically. This log analyzer works as a CGI or from command line and shows you all possible information your log contains, in few graphical web pages. It uses a partial information file to be able to process large log files, often and quickly.
Update and upgrade Debian
#apt-get update && apt-get upgrade -y
Install awstats
#apt-get install awstats
enable the CGI module in Apache
#a2enmod cgi
Incase want to Disable CGI
#a2dismod cgi
Restart Apache to reflect the changes.
#/etc/init.d/apache2 restart
Configure AWStats
Create a configuration file by duplicating AWStats default conf. For example file for “vpshelpdesk.com” or ignore use default awstats.conf
#cd /etc/awstats
#cp /etc/awstats/awstats.conf /etc/awstats/vpshelpdesk.conf
Next, edit configuration file “vpshelpdesk.conf” or “awstats.conf”
#vim awstats.conf
# Examples for Apache combined logs (following two examples are equivalent):
# LogFormat = 1
# LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
#
# Example for IIS:
# LogFormat = 2
#
LogFormat=1
# Change to Apache log file, by default it's /var/log/apache2/access.log
LogFile="/var/log/apache2/access.log"
# Change to the website domain name
SiteDomain="test.com"
HostAliases="www.test.com localhost 127.0.0.1"
# When this parameter is set to 1, AWStats adds a button on report page to allow to "update" statistics from a web browser
AllowToUpdateStatsFromBrowser=1
#Default DNSLookup=2, disable DNS Lookup to save memory, set to DNSLookup=0
DNSLookup=0
Build the AWStats statistics from current apache2 logs
#/usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
or if use default awstats.conf
#/usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
If it is successful no errors, some output will shown:
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats version 7.2 (build 1.992)
From data in log file "/var/log/apache2/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: 4473
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 173 new qualified records.
Configure Apache to work with AWStats
Copy code into apache config file, recommend put at the bottom
# Directives to add to your Apache conf file to allow use of AWStats as a CGI.
# Note that path "/usr/local/awstats/" must reflect your AWStats Installation path.
#
Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
#ScriptAlias /awstats/ /usr/lib/cgi-bin/
# for Security, comment code above, add code below and change folder name
ScriptAlias /vps/ /usr/lib/cgi-bin/
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
#
Restart Apache to reflect the changes.
#/etc/init.d/apache2 restart
#service apache2 restart
The AWStats can access via browser at http://domain/vps/awstats.pl
Setup Cron Job to update every night at midnight (https://crontab.guru)
#vim /etc/crontab
Put code below at bottom
0 0 * * * root /usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
Error and Solutions once update AWStats via web browser
Error: Couldn’t open server log file “/var/log/apache2/access.log” : Permission denied
Give apache2 (www-data) permission on apache2 log file
#chown -R www-data:www-data /var/log/apache2/
#service apache2 restart
Warning: Error while storing hashfile: can’t create /var/lib/awstats/dnscachelastupdate.hash: Permission denied at (eval 5) line 1.
Warning: Failed to open for writing last update DNS Cache file “/var/lib/awstats/dnscachelastupdate.txt”: Permission denied
Give apache2 (www-data) permission on /var/lib/awstats/
#chown -R www-data:www-data /var/lib/awstats
Reset AWStats statistics to zero
Go to defaultr DirData /var/lib/awstats, delete all files awstatsMMYYYY.txt
#cd /var/lib/awstats
#rm -f awstats**
Go to default Apache2 access.log DirData, delete all files access.log.**
#cd /var/log/apache2/
#rm -f access.**
#touch access.log
#chown -R www-data:www-data /var/log/apache2/
Then Build the AWStats statistics again from apache2 logs
#/usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
/var/log/apache2# /usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats version 7.2 (build 1.992)
From data in log file "/var/log/apache2/access.log"...
Phase 1 : First bypass old records, searching new record...
Direct access to last remembered record is out of file.
So searching it from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 0
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.