Installation instructions for The Webalizer The Webalizer is distributed in either source or binary distributions, and installation is different for each type. Regardless of the type of installation, you need to obtain and un-tar/un-zip the distribution. For binary distributions, you should create a directory somewhere and chdir to it before unpacking the file. Source distributions will automagically create a directory for you (webalizer-x.xx-xx). If you are upgrading from a previous version, check the CHANGES file, and the README.FIRST file for important upgrade information. For Binary distributions ------------------------ You should have all the files you need in the directory you created when you un-tarred/un-zipped the distribution file. The file 'webalizer' in this directory is the binary executable. Copy this someplace useful, like /usr/local/bin or /usr/bin. A man page for The Webalizer is also supplied... If desired, copy the file 'webalizer.1' to your local man directory (ie: /usr/local/man/man1). (You may also need to run 'makeinfo' or similar) Note: There may also be platform specific installation instructions and/or usage notes supplied with the binary distribution. You should read them, as that will be your starting point if problems are encountered. Most of the binary distributions are submitted by users, and I cannot support them the same way I can the Linux binary distribution and the source code itself. For Source distributions ------------------------ The Webalizer requires, at a minimum, the GD graphics library (http://www.libgd.org/), the PNG (portable network graphics) graphics library ( http://www.libpng.org/pub/png/ ), the Zlib compression library ( http://www.zlib.net/ ) and associated header files for these libraries. Most modern systems will have these libraries, but may or may not have the required header files for them unless you installed the 'dev' (development) versions (which include the required header files along with the libraries). Consult your systems documentation for specifics. For native DNS and Geolocation (GeoDB) support, the Berkeley DB library (by sleepycat, now owned by Oracle) v4.1 or higher and associated header file is required. http://www.oracle.com/technology/products/berkeley-db/ For BZip2 support, the bzip2 compression library and header file is required. http://www.bzip.org/ For GeoIP geolocation support, the GeoIP library (by MaxMind, Inc.) and header file is required, along with a Country Edition database. http://www.maxmind.com/app/ip-location New style build: The Webalizer source distribution now comes packaged with a GNU autoconf 'configure' script, which should allow you to simply type: ./configure make make install Normal configure options apply, type ./configure --help to get a complete list. A few options in particular may be useful: --sysconfdir=/etc The sysconfdir switch specifies where the default configuration file (webalizer.conf) should be looked for. If not specified, the default of ${prefix}/etc is used. --with-language= Allows you to specify the language to use. Check the /lang directory to see the available language choices. As an example, you could use ./configure --with-language=french to compile the program using french (webalizer_lang.french) for output. You can also use the --without-language switch, which will use the default language (english). --enable-dns DNS lookup and native geolocation features are added if the required library (libdb) and header file (db.h) are found. DNS/GeoDB code is enabled at compile time by using the -DUSE_DNS compiler switch. For GeoDB lookups, a current geodb database is also required (available at ftp://ftp.mrunix.net/pub/webalizer/geodb). --with-geodb= The default location for the GeoDB database is /usr/share/GeoDB but may be changed using this option. --enable-bz2 BZip2 compression support will be added if the required library (libbz2) and header file (bzlib.h) are found. BZip2 code is enabled at compile time using the -DUSE_BZIP compiler switch. --enable-geoip GeoIP geolocation support will be added if the required library (libGeoIP) and header file (GeoIP.h) are found. No attempt is made to locate a valid Country Edition database, which is also required for GeoIP lookups to be performed. GeoIP code is enabled at compile time using the -DUSE_GEOIP compiler switch. Some systems may require unusual settings that the configure script cannot determine. You can pass values to the script by setting environment variables. For example: CC=c89 CFLAGS=-O LIBS=-lposix ./configure --with-language=german Would allow you to set the compiler (c89) and various flags and libraries to use, which would then be passed to the configure script and eventually to the Makefile generated. It also will cause the program to be compiled using German instead of the English default. Additionally, the various --with- and --with- options allow specification of non-standard locations for the various libraries and headers. For example, if you built the bzip2 library in /src/bzip2, you could use: ./configure --with-bz2=/src/bzip2 --with-bz2lib=/src/bzip2 --enable-bz2 to specify where the bz2 header files (--with-bz2) and library (--with-bz2lib) are located. They should then be detected by the configure script and enabled. Please note that if you are linking against a shared library (ie: libbz2.so), then even though configure script finds the library, and The Webalizer compiles successfully, the program may FAIL when run because the systems run-time linking loader cannot find the library. If this happens, then you need to tell the loader where the library is, and is dependent upon what type system is being used. Some platforms require the path to the library to be placed in the LD_LIBRARY_PATH environment variable.. some (such as linux based platforms) use the ld.so.conf file and ldconfig program to configure the dynamic linker run-time bindings. Consult the documentation for your system specific requirements. For package maintainers, the environment variable DESTDIR can be used to specify a root directory for installation. This is the top level directory under which all other directories will be placed when 'make install' is invoked, and allows binary packages to be easily built outside the normal root directory tree. For example, if you wish to build a binary package of The Webalizer under the /usr/pkg/webalizer-2.20 directory, you could type: make install DESTDIR=/usr/pkg/webalizer-2.20 Which would then create the following directory tree: /usr/pkg/webalizer-2.20/ /usr/pkg/webalizer-2.20/etc/ /usr/pkg/webalizer-2.20/etc/webalizer.conf.sample /usr/pkg/webalizer-2.20/usr/ /usr/pkg/webalizer-2.20/usr/bin/ /usr/pkg/webalizer-2.20/usr/bin/webalizer /usr/pkg/webalizer-2.20/usr/bin/webazolver -> webalizer /usr/pkg/webalizer-2.20/usr/bin/wcmgr /usr/pkg/webalizer-2.20/usr/man/ /usr/pkg/webalizer-2.20/usr/man/man1/ /usr/pkg/webalizer-2.20/usr/man/man1/webalizer.1 /usr/pkg/webalizer-2.20/usr/man/man1/webazolver.1 -> webalizer.1 /usr/pkg/webalizer-2.20/usr/man/man1/wcmgr.1 If the configure script doesn't work for you.. please let me know (along with relevant info like system type, compiler, etc..) If you are able and can tweak something to make it work, let me know as well. Old style build: If you have a platform that the configure script won't work on, or some other situation where you have to configure and build the source yourself, the file 'Makefile.std' is a "stock" Makefile that you can use to build the Webalizer. Copy or rename the file to 'Makefile', edit to match your system, and do the usual 'make'. This is a very generic Makefile, so expect to have to tweak it for your particular platform and configuration. If everything seems to have gone well, next type 'make install' to do a stock install. Again, you may want to tweak the Makefile for the install, or skip the 'make install' step completely (see below). This will install the Webalizer on your system, and put a sample configuration file in /etc (named 'webalizer.conf.sample'). If you don't want to use the 'make install' method... just copy the file 'webalizer' to someplace useful, and you are ready to go :) Usage ----- When run, The Webalizer will read the specified log file and produce HTML output in the directory specified (or current directory if none). You may specify various configuration options either on the command line or in a configuration file. The format of the command line is: webalizer [options] [log_file] Where 'options' may be any of the valid command line options described in the README file. If a log filename is not given, input is taken from stdin. A typical command line might look something similar to: webalizer /var/lib/httpd/logs/access_log This will produce output in the current directory based on the logfile /var/lib/httpd/logs/access_log. Another example: webalizer -c somehost.conf This will read the configuration file somehost.conf, which should specify, among other things, the log filename and output directory to use. You can use 'webalizer -h' to get a list of available command line options, or view the file README for complete instructions on all available configuration options. You should note that The Webalizer will _always_ look for a configuration file named 'webalizer.conf' in either the current directory or in /etc/, and will process that file _before_ any other configuration or command line options. If you run a single server, you may want to create a default configuration file and place it in the /etc/ directory. This will allow you to simply type 'webalizer' without the need to specify additional command line options. Configuration ------------- The Webalizer can be customized in many ways using either the command line or configuration files. To test The Webalizer, type: 'webalizer /var/lib/httpd/logs/access_log', changing the directory to wherever your log files are. After processing, you should have the output and a file named index.html which can be viewed with any browser. The Webalizer can accept many command line options as well, type 'webalizer -h' to view them. In addition to the command line options, The Webalizer can be customized using configuration files. There is a sample.conf file that is part of both the source and binary distributions that can be used as a 'template' for creating your own site configuration file. Just make a copy of the file and name it something like 'mysite.conf'. Edit the new file to match your particular setup and taste. To test the new configuration file, type 'webalizer -c mysite.conf' (or whatever your configuration file is named). Fire up the browser and look at the results. If you rename your new configuration file to 'webalizer.conf', you will only need to type 'webalizer', and The Webalizer will use it as the default. See the README file for more on configuration and use of configuration files. Language Support ---------------- Language support is provided as language specific header files that must be compiled into the program. If you don't have the source code, get it. If you can't compile the program yourself, ask a friend. The /lang/ directory of the distribution contains all supported languages at the time of release. Additional/updated language files will be found at ftp://ftp.webalizer.org/pub/webalizer/lang and are always the most current versions. To build with language support, use the --with-language option of the configure script. This will automagically do for you the steps described below. If you can't use the configure script, you can manually select the language file to use. In the webalizer source directory, you will find a symbolic link for the file webalizer_lang.h, and it will be pointing to the file webalizer_lang.english which is the default. Delete the link (ie: rm webalizer_lang.h) and create a new one to the language file you want The Webalizer to use (ie: ln -s lang/webalizer_lang.spanish webalizer_lang.h) and re-compile the program. Note: The source distribution of The Webalizer contains all language support files that were available at the time. Additional/updated language files can be found at: ftp://ftp.webalizer.org/pub/webalizer/lang where I will put them as I receive them. Common Questions ---------------- Q: Will it run on [some platform] A: If it is a *nix platform, it should without a problem. If it's something different, probably not and your on your own if you want to try to make it work. Q: When I compile, I get "file not found" errors? A: Most likely, the compiler cant find the header files for one the required libraries. If they are someplace other than the standard locations (ie: /usr/include), then you probably need to specify an alternate location to look using one of the --with- command line switches when you run configure, or edit the Makefile and specify the location with an '-I' compiler flag. Q: I get "libgd not found' errors? A: You don't have the GD graphics located in a standard library path, or you don't have the GD graphics library at all. If the later, go to http://www.boutell.com/gd/ and grab a copy. If you do have it, add a -L switch in the Makefile to point to the proper location. Q: I get unresolved symbol errors when compiling, why? A: This most often occurs when the GD library was built with additional support for such things as TrueType fonts or X11 graphics. The configure script for The Webalizer only checks that the gd library is available, and does not check any other dependencies it may have. Typically, to fix this problem, you need to edit the Makefile and add the dependent libraries to a compiler switch (or pass them on the command line when running the configure script). For example, if you are getting errors about not finding truetype routines, you may need to add '-lttf' (for 'libttf', the truetype library) to the "LIBS" variable. Hint: I usually find it easier to just grab the GD library source, and compile it myself locally as a static library, in a directory just above where I compile The Webalizer. Then, at configure time, just add the '-with-gd=../gd' and '--with-gdlib=../gd' switches, and the GD graphic stuff will be statically linked into The Webalizer, eliminating any other library dependencies that the normal, shared library on my system may have.