≡ Menu

Lighttpd Install and Configure AwStats Software Log Analyzer

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 : 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:

(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:

# path to cgi-bin
# append your domain
DOMAINS="theos.in cyberciti.biz nixcraft.com cricketnow.in vivekgite.com"
# loop through all domains
for d in ${DOMAINS}
   ${AWS} -update -config=${d}

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

Recommended readings:

Share this on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:

{ 9 comments… add one }
  • tony September 12, 2008, 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

  • yoander September 22, 2008, 1:08 am

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

  • Roon October 28, 2008, 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?

  • tony October 28, 2008, 1:10 am

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

  • Roon October 28, 2008, 10:10 am

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


  • Vinny March 16, 2011, 2:04 pm


    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?

  • JaÅ¡a October 21, 2011, 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?

  • Jason March 25, 2012, 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.

  • Mike April 16, 2012, 7:05 pm

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

Leave a Comment

   Tagged with: , , , , , , , , , , , , , , , , ,