$Id: README,v 1.3 2008-02-05 02:27:08 mike Exp $

You're probably here because you got a message like:

	It was not possible to connect to the Keystone Resolver database.
	Please see /usr/share/libkeystone-resolver-perl/db/README

Keystone Resolver works by reference to a resource database: if that
database is not available, it cannot run.

There are two possible reasons why you got this message.  Either there
is no database on the system, or your web server is providing the
wrong configuration information to the resolver, so that it can't find
the database.  If this is the first time you've installed the
resolver, then the odds are you have the first problem -- but we'll
deal with the second one first, because it's easier.


Configuration of database details incorrect
-------------------------------------------

Check your web-server's Keystone Resolver configuration file.  If
you're using Apache 1.3, it's probably
	/etc/apache/conf.d/keystone-resolver.conf
and if you're using Apache 2.0, it's probably
	/etc/apache2/sites-enabled/keystone-resolver

Whichever dialect of Apache you're using, you'll find directives like
these:
	PerlSetEnv KRdbms mysql
	PerlSetEnv KRdb kr
	PerlSetEnv KRuser kr_read
	PerlSetEnv KRpw kr_read_3636
	PerlSetEnv KRrwuser kr_admin
	PerlSetEnv KRrwpw kr_adm_3636

In order, these indicate the RDBMS to use, the name of the resource
database with the RDBMS, the username and password to use for
accessing the database in readonly mode (as the resolver itself does)
and the username and password to use when accessing the database in
read-write mode (as the admin UI does).

If your resource database is configured differently from how the
installed Apache configuration expects, modify the settings to match
your installation and restart the web-server.


No resource database
--------------------

If you don't have Keystone Resolver resource database on your system
(perhaps because it's the first time you've installed the software)
then you need to make one.  You can use whatever RDBMS you want
(provided it's supported by Perl's DBI system), name the database what
you want, and use whatever usernames and passwords you want to access
the database in read-only and read-write modes.

Establishing a resource database is a three-step process: 1, create
the database; 2, create the tables; 3, populate the tables.

1. The way to create a database, set up users users, and specify
   passwords and permissions for those users is different depending on
   what RDBMS you're using.  For MySQL (which is what Keystone
   Resolver was developed on), the commands are listed in the script
   "create_db.mysql" in this directory.  In fact, you can simply feed
   that script to MySQL if you like, once you've made any changes you
   want to make to database names, users, etc.

2. Then you need to create the tables in the database.  Unlike the
   initial database creation, this does not need to be done as the
   RDBMS superuser: you should be able to do this as the read-write
   user that you set up in step 1.  The precise syntax needed to crate
   the tables is different for different RDBMSs (ah, the glories of
   standardisation!) so you will need to use the "create_tables"
   script for your chosen RDBMS.  (At present, this script is supplied
   only for MySQL; An Oracle version will follow soon.)

   The table-creation scripts in this directory constitute an
   implementation of the data model described in
   /usr/share/doc/libkeystone-resolver-perl/data-model

3. Once the tables are in place, they must be populated with data.
   Doing this is of course a huge job in its own right, and there are
   companies whose whole business model is maintaining and selling
   resource databases for OpenURL resolvers.  But we supply a simple
   database that is sufficient to allow the resolver to run against a
   tiny set of resources.  Once more the precise syntax to populate
   the tables is different for different RDBMSs, so you will need to
   use "simple.mysql", "simple.oracle", or whatever matches your
   RDBMS.

So, for example, if you are using MySQL and you are satisfied with the
default database name, usernames and passwords, you can create a
database as follows:

	$ mysql -u root -p < create_db.mysql
	$ Enter password: ********
	$ mysql -u'kr_admin' -p'kr_adm_3636' kr < create_tables.mysql
	$ mysql -u'kr_admin' -p'kr_adm_3636' kr < simple.mysql

