Before you install DnsZone you should be sure to have your database of 
choice ready. You probably want to have a special user for the database.

It's advisable to read the SECURITY notes in the distribution. 

You need a running Apache/mod_perl server compiled with all the bells and
whistles. I normally do this something like this:
Get the latest mod_perl from http://perl.apache.org/dist/
Get the latest apache from http://httpd.apache.org/dist/httpd/
(This assumes Apache 1.3.20 and mod_perl 1.25)
$ tar -zxf apache_1.3.20.tar.gz
$ tar -zxf mod_perl-1.25.tar.gz
$ cd mod_perl-1.25.tar.gz
$ perl Makefile.PL \
    DO_HTTPD=1 \
    APACHE_SRC=../apache_1.3.20 \
    USE_APACI=1 \
    EVERYTHING=1 \
    APACHE_PREFIX=/usr/local/modperl
$ make
$ make test
$ make install

That should get your mod_perl running.

Recommended modules to install before installing DnsZone: Bundle::Apache,
Apache::Request, Apache::AuthCookie, Apache::AuthTicket, Net::DNS,'
CGI::FastTemplate, Email::Valid, Bundle::ABH.

You might be forced to download Apache::Request 0.3103 by hand and
install it, the package is available from:
http://www.cpan.org/authors/id/J/JI/JIMW/libapreq-0.31_03.tar.gz

To install DnsZone:

$ perl Makefile.PL
$ make
$ make install

To create the language dbm file you type:

$ make language
create a directory called dnszone under your apache installation
$ cp lang/DnsZoneLang /path/to/your/apache/dnszone
If you experience problems with the dbm file it could be a permission
issue, so a chmod 666 DnsZoneLang might come handy.

To install the templates:

create a directory under the dnszone directory in your apache 
installation called 'template'.
$ cp -R templates/standard/* /path/to/your/apache/dnszone/template

After DnsZone is installed you need to activate it by adding some 
directives to your Apache configuration files (sample configuration 
also available as conf/dnszone.conf): 

PerlModule Apache::DBI 
# for persistant connections
PerlModule Apache::DnsZone
PerlModule Apache::DnsZone::DB::MySQL 
# or your db of choice

<VirtualHost [your.ip]>
  ServerAdmin  you@yourdomain
  DocumentRoot /usr/local/modperl/htdocs
  ServerName   dnszone.at.yourdomain
  ErrorLog     logs/dnszone-error_log
  TransferLog  logs/dnszone-access_log
  PerlSetVar   DnsZoneDBsrc               'dbi:mysql:dnszone'
  PerlSetVar   DnsZoneDBuser              'dnszone'
  PerlSetVar   DnsZoneDBpass              '*******'
  PerlSetVar   DnsZoneDebugLevel          1
  PerlSetVar   DnsZoneLangDir             '/usr/local/modperl/dnszone'
  PerlSetVar   DnsZoneTemplateDir         '/usr/local/modperl/dnszone/template'
  PerlSetVar   DnsZoneLoginLang           'en'
  # or 'de' 'se' 'dk' 'fr' 'it' 
  # DnsZoneLoginLang is used if the browser doesn't send an 'Accept-Language' header and the language isn't in DnsZone already
  PerlModule   Apache::DnsZone::AuthCookie
  PerlSetVar   DnsZoneTicketTable         'tickets:ticket_hash:ts'
  PerlSetVar   DnsZoneTicketUserTable     'users:username:password'
  PerlSetVar   DnsZoneTicketPasswordStyle cleartext
  PerlSetVar   DnsZoneTicketSecretTable   'ticketsecrets:sec_data:sec_version'
  PerlSetVar   DnsZoneTicketExpires       60
  PerlSetVar   DnsZoneTicketLogoutURI     /
  PerlSetVar   DnsZoneTicketLoginHandler  /login
  PerlSetVar   DnsZoneTicketIdleTimeout   10
  PerlSetVar   DnsZonePath                /
  PerlSetVar   DnsZoneLoginScript         /loginform
  <Location /admin>
    SetHandler        perl-script
    PerlHandler       Apache::DnsZone
    AuthType          Apache::DnsZone::AuthCookie
    AuthName          DnsZone
    PerlAuthenHandler Apache::DnsZone::AuthCookie->authenticate
    PerlAuthzHandler  Apache::DnsZone::AuthCookie->authorize
  </Location>
  <Location /loginform>
    SetHandler        perl-script
    Perlhandler       Apache::DnsZone::AuthCookie->login_screen
    AuthType          Apache::DnsZone::AuthCookie
    AuthName          DnsZone
  </Location>
  <Location /login>
    SetHandler        perl-script
    PerlHandler       Apache::DnsZone::AuthCookie->login
    AuthType          Apache::DnsZone::AuthCookie
    AuthName          DnsZone
  </Location>
</VirtualHost>

Copy the contents of htdocs/ to /path/to/your/apache/htdocs

$ cp -R htdocs/* /path/to/your/apache/htdocs

Now you need to import the tables that DnsZone needs into your database.

for mysql:

$ mysql -udnszone -p dnszone < sql/mysql.sql

Before you can start using DnsZone you need to set your nameserver to
allow transfers and updates on the domain you want to make changes to 
through DnsZone.

In named.conf:

zone "example.com" {
	type master;
	allow-transfer { 127.0.0.1; your.ip; };
   	allow-update { your.ip; };
        file "example.com";
};

To create a new user in DnsZone:

$ cd bin/mysql
$ perl adduser.pl
Username to add: test
Password for test:
Password again:
Users email: test@example.com
Language: en
test(test@example.com:en) added...

To add a domain to the user:

$ perl addzone.pl
Domain for inserting into DnsZone: example.com
User to add example.com for: test
From which nameserver do you want to transfer the zone for example.com: yourname.server
Performing Zone transfer...
Which restrictions do you want to place on the user:
How many A records can he have: 10
How many CNAME records can he have: 10
How many MX records can he have: 10
How many NS records can he have: 10
How many TXT records can he have: 10
Do you want the SOA to be locked (n):
Inserting records into db...
NS: example.com yourname.server 86400
Do you want this record to be locked (n): y
MX: example.com mail.example.com 10 86400
Do you want this record to be locked (n):
A: mail.example.com 192.168.1.1 86400
Do you want this record to be locked (n): 
example.com succesfully imported

You should now be set for accessing the webinterface, fire up your
favorite browser and point it to the host you created in apache.

If the software is complaining about missing modules you need to 
install those.

If you encounter any bugs please report them so they can be fixed.


