Monday, September 30, 2013

Install and configure AWStats on CentOS and RHEL System

AWStats (Advanced Web Statistics) is a free powerful and featureful tool that generates advanced web (but also ftp or mail) server
statistics, graphically.

Following are the steps to configure AWStats on CentOS and RHEL system.

1] Download the awstats

[root@server ~]# wget http://sourceforge.net/projects/awstats/files/AWStats/7.0/awstats-7.0-1.noarch.rpm

2] Install awstats

[root@server ~]# rpm -ivh awstats-7.2-1.noarch.rpm
error: Failed dependencies:
    perl(LWP::UserAgent) is needed by awstats-7.2-1.noarch

If you receive above error then install below package :

[root@server ~]# yum install perl-libwww-perl.noarch

Now Again run the command :

[root@server ~]# rpm -ivh awstats-7.2-1.noarch.rpm
Preparing...             ############################## [100%]
   1:awstats              ############################## [100%]

----- AWStats 7.2 - Laurent Destailleur -----
AWStats files have been installed in /usr/local/awstats

If first install, follow instructions in documentation
(/usr/local/awstats/docs/index.html) to setup AWStats in 3 steps:
Step 1 : Install and Setup with awstats_configure.pl (or manually)
Step 2 : Build/Update Statistics with awstats.pl
Step 3 : Read Statistics

3] Now configure and setup AWstats with awstats_configure.pl

[root@server ~]# cd /usr/local/awstats/tools

[root@server tools]# perl awstats_configure.pl
----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Linux, BSD or Unix

-----> Check for web server install

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf    --> Enter Apache configuration path

-----> Check and complete web server config file '/etc/httpd/conf/httpd.conf'
  Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
  Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
  Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
  Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
  Add '<Directory>' directive
  AWStats directives added to Apache config file.

-----> Update model config file '/etc/awstats/awstats.model.conf'
  File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.anup.co.in                -->  Enter your website name

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>                               --> Press Enter

-----> Create config file '/etc/awstats/awstats.www.anup.co.in.conf'
 Config file /etc/awstats/awstats.www.anup.co.in.conf created.

-----> Restart Web server with '/sbin/service httpd restart'
Stopping httpd:                                            [  OK  ]
Starting httpd:                                             [  OK  ]

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.anup.co.in
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...


A SIMPLE config file has been created: /etc/awstats/awstats.www.anup.co.in.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.anup.co.in' with command:
> perl awstats.pl -update -config=www.anup.co.in
You can also read your statistics for 'www.anup.co.in' with URL:
> http://localhost/awstats/awstats.pl?config=www.anup.co.in

Press ENTER to finish...

4] Now update awstat

[root@server ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update --config=www.anup.co.in
Error: AWStats database directory defined in config file by 'DirData' parameter (/var/lib/awstats) does not exist or is not writable.
Setup ('/etc/awstats/awstats.www.anup.co.in.conf' file, web server or permissions) may be wrong.
Check config file, permissions and AWStats documentation (in 'docs' directory).

[root@server ~]# mkdir -p /var/lib/awstats

Now configure your website config file:

vi /etc/awstats/awstats.www.anup.co.in.conf

LogFile="/var/log/httpd/access_log"

and save the file.

Now Again run the command :

[root@server ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update --config=www.anup.co.in

5] Add crontab entry to update awstat for every 15 minute.

[root@server ~]# crontab -e
15 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.www.anup.co.in

6] Now we configure apache file to enable http based authentication.

Open the httpd.conf file and following lines at the end of file.

[root@server ~]# vi /etc/httpd/conf/httpd.conf

<Directory "/usr/local/awstats/cgi-bin">
  Order allow,deny
  Allow from all
</Directory>

# This is to force authentication when trying to access /awstats

<Location /awstats>
AuthType Basic
AuthName "AWStats Admin Access Required"
AuthUserFile /etc/httpd/conf.d/awstats.passwd
require valid-user
</Location>

7] Set username and password for awstat link.

[root@server ~]# htpasswd -c  /etc/httpd/conf.d/awstats.passwd admin

8] Restart the httpd.

[root@server ~]# service httpd restart

That's it, access awstats url and check it.
http://localhost/awstats/awstats.pl?config=www.anup.co.in