Lighttpd Install and Configure AwStats Software Log Analyzer

by on April 29, 2008 · 9 comments· LAST UPDATED April 29, 2008

in , ,

AWStats is a free powerful 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. It can analyze log files from all major server tools like Apache log files (NCSA combined/XLF/ELF log format or common/CLF log format), WebStar, IIS (W3C log format) and a lot of other web, proxy, wap, streaming servers, mail servers and some ftp servers.

You can easily configure awstats under Lighttpd web server.

Step # 1: Install awstats

Visit project web site to grab latest stable version.
# cd /tmp
# wget http://jaist.dl.sourceforge.net/sourceforge/awstats/awstats-6.7-1.noarch.rpm
# rpm -ivh awstats-6.7-1.noarch.rpm

Important Configuration Files

  • /usr/local/awstats/wwwroot/ - Default installtion directory
  • /etc/awstats/ - Configuration file for all your domains
  • /usr/local/awstats/wwwroot/cgi-bin/ : Main program directory
  • /var/log/lighttpd/domain.com/access.log : Web server access log file
  • /home/lighttpd/domain.com/http/ : Web root for your domain
  • /home/lighttpd/domain.com/stats/awstats/ : Directory to store awstats data files. You need to create this directory.

Step # 2: Configure lighttpd

Open lighttpd.conf file and configure perl cgi access (see tutorial for more info):
# vi lighttpd.conf
Append following configuration directive:

alias.url = (
                "/awstatsclasses" => "/usr/local/awstats/wwwroot/classes/",
                "/awstatscss" => "/usr/local/awstats/wwwroot/css/",
                "/awstatsicons" => "/usr/local/awstats/wwwroot/icon/",
                "/awstats/" => "/usr/local/awstats/wwwroot/cgi-bin/",
                "/icon/" => "/usr/local/awstats/wwwroot/icon/"
              )
# provide awstats cgi-bin access
$HTTP["url"] =~ "/awstats/" {
      cgi.assign = ( ".pl" => "/usr/bin/perl" )
}

Save and close the file. Restart lighttpd:
# /etc/init.d/lighttpd restart

Step # 3: Configure domain

Make a copy of default configuration file awstats.model.conf as awstats.domain.com.conf:
# cd /etc/awstats
# cp awstats.model.conf awstats.theos.in.conf

Open config file:
# vi awstats.theos.in.conf
Make sure you set values as follows:
LogFile="/var/log/lighttpd/theos.in/access.log"
LogFormat=1
SiteDomain="theos.in"
DirData="/home/lighttpd/theos.in/stats/awstats"

Where,

  • LogFile : Defines the web, ftp or mail server log file to analyze. A full path to your log file /var/log/lighttpd/theos.in/access.log
  • LogFormat : Use Apache / Lighttpd combined log format
  • DirData : When AWStats updates its statistics, it stores results of its analysis in files (AWStats database). All those files are written in the directory defined by the "DirData" parameter. Set this value to the directory where you want AWStats to save its database and working files into.

Save and close the file. Create dataDir:
# mkdir -p /home/lighttpd/theos.in/stats/awstats
# chown lighttpd:lighttpd /home/lighttpd/theos.in/stats/awstats

Step 4: Generate stats

Type the following command at a shell prompt:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=domain.com
If your domain name is theos.in, enter:
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=theos.in
Sample output:

Create/Update database for config "/etc/awstats/awstats.theos.in.conf" by AWStats version 6.7 (build 1.892)
From data in log file "/var/log/lighttpd/theos.in/access.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 50894)
Jumped lines in file: 50894
 Found 50894 already parsed records.
Parsed lines in file: 47047
 Found 0 dropped records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 47047 new qualified records.

Step 5: View stats

Fire a web browser and type url:
http://server-ip/awstats/awstats.pl?config=domain.com

http://server-ip/awstats/awstats.pl?config=theos.in

http://theos.in/awstats/awstats.pl?config=theos.in


(Fig.01: Awstats for theos.in domain - click to enlarge)

Password protect your stats

Use mod_auth to setup a secure password protected area under Lighttpd.

Automatically update stats

Simply create a shell script to update all domains - /etc/cron.daily/01awstats via a cron job:
# vi /etc/cron.daily/01awstats
Append code as follows:

#!/bin/bash
# path to cgi-bin
AWS=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
 
# append your domain
DOMAINS="theos.in cyberciti.biz nixcraft.com cricketnow.in vivekgite.com"
 
# loop through all domains
for d in ${DOMAINS}
do
   ${AWS} -update -config=${d}
done

Save and close the file. Test your script:
# chmod +x /etc/cron.daily/01awstats
# /etc/cron.daily/01awstats

Recommended readings:

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 9 comments… read them below or add one }

1 tony September 12, 2008 at 7:02 pm

I got this error when trying to install the awstats RPM package:

error: Failed dependencies:
perl(LWP::UserAgent) is needed by awstats-6.8-1.noarch

Reply

2 yoander September 22, 2008 at 1:08 am

You must install this module. You can do that through a cpan install

Reply

3 Roon October 28, 2008 at 12:18 am

I am getting a 403 when trying to access the awstats.pl from in my browser.
Updating the stats worked fine, and I can see the awstat.pl file listed if I just browse to /awstats/

Any ideas?

Reply

4 tony October 28, 2008 at 1:10 am

403 error: you have problem with permission of awstats directory, check on that.

Reply

5 Roon October 28, 2008 at 10:10 am

Problem solved, I only required the /awstats/ and /icons/ aliases, the others were causing problems.

Cheers!

Reply

6 Vinny March 16, 2011 at 2:04 pm

Hi,

I’m using Debian 6 and Lighttpd as webserver and tomcat as App server. When I install AWstats, /usr/local/awstats folder is not being created. So where can I find the folder paths for ALIAS?

Reply

7 Jaša October 21, 2011 at 10:16 pm

Vinny, use this command to find out which files the awstats package installs:
dpkg -L awstats | less

I have a question myself: If I use logrotate for the log, does awstats remember the old data (I suppose so because of the DB) and where in the log it has been?

Reply

8 Jason March 25, 2012 at 1:38 am

If you get a 403 error like me, make sure you have mod_cgi enabled in your lighttpd conf. I only had mod_fastcgi enabled.

Reply

9 Mike April 16, 2012 at 7:05 pm

Make sure you run:
lighttpd-enable-mod accesslog
and then restart lighttpd. Access logs are not enabled by default.

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , , , , , ,

Previous post:

Next post: