How To: Setting up awstats with apache 2 on debian-ubuntu -- page 2

3. Configuring Awstats:

Awstats configuration file are located in /etc/awstats. By default, when calling the URL http://www.mysite.org/awstats/awstats.pl, awstats is looking for the configuration file name after your domain name, namely here /etc/awstats/awstats.www.mysite.org.conf. You can override this by giving awstats an argument named config. For instance http://www.mysite.org/awstats/awstats.pl?config=foobar will indicate awstats to fetch the configuration from /etc/awstats/awstats.foobar.conf.

Let's get back to it. On install, awstats provides a default configuration file named /etc/awstats/awstats.conf. Copy this file to /etc/awstats/awstats.www.mysite.org.conf:

~$sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.www.mysite.org.conf

and edit the file:

~$sudo vi /etc/awstats/awstats.www.mysite.org.conf

and check for the following lines and edit those for your needs:

LogFile="/var/log/apache2/access.log"
SiteDomain="mysite.org"

This is all setted up, now you need to generate the first stats.

4. Generating the First Stats:

in order to generate the first stats, you need to call the script as root using the following command line:

~:$sudo -u www-data /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=www.mysite.org

Once this is all processed, check out your stats from http://www.mysite.org/awstats/awstats.pl :D.

5. Automatising the stats generation using Cron:

If we check the file installed by awstats and search for the word cron using the following command line:

~:$dpkg -L awstats | grep cron
/etc/cron.d
/etc/cron.d/awstats

we can see that awstats already installed a cron job which contain:

0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null

which basically check every 10 minutes that file /usr/lib/cgi-bin/awstats.pl is executable AND file /etc/awstats/awstats.conf exists and is a regular file AND file /var/log/apache/access.log is readable, if this is TRUE, it executes awstats.pl with the config awstats.

As the file /etc/awstats/awstats.awstats.conf does not exist, it will take /etc/awstats/awstats.conf by default.

What we can do in the first, is to use that file for our needs. Let say I want update my stats every day at 2am, I will change the line to:

0 2 * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=mysite.com -update >/dev/null

Hope this helped ;)

Recommanded Book:

Apache: The Definitive Guide (3rd Edition)