Setting up awstats

August 17th, 2007

I recently setup awstats on two Intranet servers for a client. Local web server log analysis software seems to be going the way of the Big-eared Hopping Mouse.

  • Analog hasn’t been updated in forever.
  • Webalizer hasn’t been updated in forever.
  • Firestats is fantastic, I use this on Internet based sites with Google Analytics
    * It’s AJAX just doesn’t like mod_auth_ntlm or the other way round.

I followed the included PDF file awstats.pdf which covers ninety percent of the process. There’s a few caveats in the process. Here’s how I did it.

tar zxpfv awstats-XX.tar.gz
mv awstats-XX /usr/local/awstats
mkdir /var/lib/awstats
chmod 777 /var/lib/awstats
cd  /usr/local/awstats
cd tools

Now we can run the config

perl awstats_configure.pl

I did the usual Y,Y,Y,Y and accepted all the defaults. Remember what profile name you set because you will need to add it into cron later.

55 23 * * *     /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=CONFIG-NAME

Lets edit the config file.
If you’re on a closed server (not on the Internet) it’s nice to have the following set

nano /etc/awstats/awstats.CONFIG-NAME.conf

Change the following two lines. The first, surprisingly allows you to update the statitics from the web browser and the second allows you to view a whole year. Both are disabled by default for safety reasons.

AllowToUpdateStatsFromBrowser=1
AllowFullYearView=3

There is an incosistancy in the awstats documentation with the DirIcons, the default config is

Change DirIcons="/icon"

But you will need to change that to

DirIcons="/awstatsicon"

so it matches the apache configuration further on.

Now, I wanted a complete historical reports from when my logs started. So the first thing I did was to run a report on my whole set of logs

Change the log file setting to look similar to this

LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/apache2/*.log |"

This reads the whole directory and does take some time. Once thats done you can change the LogFile setting to something a little more optimised like

LogFile="/var/log/apache2/access_log-%YY%MM%DD.log"

This assumes your apache is setup like this

CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/apache2/access_log-%y%m%d.log 86400" combined
ErrorLog "|/usr/local/apache2/bin/rotatelogs /var/log/apache2/error_log-%y%m%d.log 86400"

This means I get a new log file every day.

Once you’re happy with the setup, go ahead and run it

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=CONFIG-NAME

Watch out for any errors!

Finally, we can setup apache so we can view the logs. Because I am running this on a closed, single site server this config is going in my global. You may want to put them under a virtual host and/or add some security to them.
Add the following to your httpd.conf

Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicon "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Note there is another inconsitancy in the documentation, it stays

ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi.bin/"

Where really it should say

ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

Now you should now have some nice reports to view over at

http://YOUR-SERVER/awstats/awstats.pl?output=main&config=CONFIG-FILE&framename=index

Was this post useful to you? Let me know, buy me a beer!
Alternatively, if you're feeling impecunious, you may like to subscribe to my RSS feed, or see other articles in the HTML, CSS, AJAX, Linux category.

Leave a Reply