InstallationLast modified on $Date$
Before being able to use PyKota, you have of course to
install it first. But before installing, you must carefully plan your installation.
First you have to determine which machine will be the PyKotaStorage Server. The Storage Server is the host responsible
for keeping a centralized database of print usage for all your printers, users and groups.
Then you have to list all the Print Servers for which
you plan to use print quota facilities.
Finally you have to download PyKota's latest version
or buy an official package, from
http://www.librelogiciel.com/software/.
If you've just bought an official package, then as soon as you've receive it you
have to decompress and visit its archive, to do so just type the following commands :
jerome@nordine:~$ tar -zxf pykota-1.09_official.tar.gz
jerome@nordine:~$ cd pykota-1.09_official
jerome@nordine:~/pykota-1.09_official$
You can see many files in this directory, the first ones to read are README,
then COPYING and LICENSE. They will give you
basic installation instructions and explain the licensing terms under which
PyKota is distributed. Of course they are also mostly
boring to read ! Detailed installation and operating instructions are defined
in the ./docs directory, in the form of SGML
documentation in the DocBook format.
You have to compile these files into readable documentation like the HTML
or PDF formats, or buy an official PyKota package
which already contains these compiled forms of the documentation.
Now we will see what has to be done on each of the servers we are planning to use.
Note
Of course, depending on the size of your network, you may very well
use the same machine as both a Print Server and a Storage Server.
This is especially the case if you've got only one server.
Storage Server Installation
Depending on PyKota's version number, different
types of storage backends may be supported, so we will see for each one of
them how to configure it.
PostgreSQLPostgreSQL is an Object Relationnal DataBase
Management System distributed under a Free Software
license from the
http://www.postgresql.org
web site. It certainely is the free RDBMS which has the most advanced
features, and is widely used all over the world.
To configure your Storage Server, you must have PostgreSQL already working.
The complete installation of PostgreSQL is not covered by
the present manual, please refer to your system's documentation or to
http://www.postgresql.org for
details.
One thing you have to check, though, is that every Print Server on which you
want to install the print quota mechanism, must be able to connect to the
PostgreSQL server. In the default installation of
PostgreSQL this may not be the case for security reasons, except if both
servers are in fact the same machine. In any case, it is recommended that you
check the /etc/postgresql/pg_hba.conf file and modify it if
needed. This file is self documented and its modification is straightforward.
You also have to make sure that PostgreSQL accepts TCP/IP connections.
To do so you either have to launch it with the option or
modify the /etc/postgresql/postgresql.conf file, which is
self documented and easy to modify too.
Tip
Don't forget to restart PostgreSQL if you modify
any of its configuration files, in order for the changes to take effect.
Be careful, you may be unable to connect from a Print Server to the PostgreSQL
server even if the configuration is correct. Sometimes your connections may be blocked by
one or more network firewalls along the route from one machine to the other. If this
is the case, then the best thing you can do is to ask your Network Administrator
to not filter the IP port used by PostgreSQL, which is
usually port 5432/tcp.
Note
The TCP/IP network port used by PostgreSQL may be different. When in doubt, ask your
System Administrator for the correct value.
Now that your PostgreSQL server is up and running, and
is waiting for your connections, you have to create the Quota Storage DataBase.
To do so, you'll have to feed PostgreSQL with the
pykota-x.xx/initscripts/postgresql/pykota-postgresql.sql file.
This file will create a Quota DataBase administrator in the PostgreSQL system, then create an empty
Quota DataBase and set some permissions on it. The Quota DataBase administrator
is the PostgreSQL's user used to manage the Quota database.
The Quota DataBase Administrator is not present in the Quota Database
itself, he is only defined in PostgreSQL and don't
have to exist on any system, nor in the Quota DataBase. His default names
is pykotaadmin.
The database which will be created will be named pykota by default.
Note
You can choose other names if you want, just modify the
initscripts/postgresql/pykota-postgresql.sql file
accordingly, and report your changes into PyKota's
configuration file.
To run this script, you can use the psql frontend to
PostgreSQL, but your priviledges must be sufficient
to be allowed to create users and databases. You can launch psql
as the postgres user which is PostgreSQL's
default administrator, and connect to the default database named template1.
From a command line interpreter (i.e. shell), type the following commands :
jerome@nordine:~$ cd pykota-1.09_official/initscripts/postgresql
jerome@nordine:~/pykota-1.09_official/initscripts$ psql -h localhost -U postgres template1
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
template1=# \i pykota-postgresql.sql
... a lot of output lines
pykota=#
For security reasons, you may want to set passwords in
PostgreSQL for the
pykotaadmin user.
Otherwise any user able to connect to
PostgreSQL on your Quota Storage Server
could connect to the quota database as this user, and modify it without problem.
To do so, just type the following lines while still being at the psql
prompt (replace the password values by your own) :
pykota=# ALTER USER pykotaadmin PASSWORD 'somepassword';
ALTER USER
pykota=# \q
jerome@nordine:~/pykota-1.09_official/initscripts/postgresql$
The \q command above will quit the psql
program and return you to the shell's command line prompt.
To improve security further, you could encrypt your database connections, or
take any other step as needed. Please refer to PostgreSQL's
documentation for details. Also if PyKota's configuration
file is readable by anyone with access on your file system, a local user could
create some script to modify his own print quota.
Warning
Defining passwords may not be sufficient if your database access rule is
set to trust in the /etc/postgresql/pg_hba.conf.
Again, please refer to PostgreSQL's documentation
for details. Also, passwords will fly unencrypted over the network by default,
so be sure to take any necessary step to secure your database server from
unauthorized use. This has nothing to do with PyKota
though, it is just a general rule to keep in mind.
If no error occured, then your Quota DataBase is ready to be used.
Now you can let the Quota Storage Server alone, the remaining work
will have to be done on each one of the print servers which will
use this particular Quota Storage Server.
Tip
If an error occured, maybe your PostgreSQL version is too old, or
an unexpected problem (like a bug) happened. Please send me an email so that I
can try to solve the problem. Thanks in advance.
LDAP
From version 1.09 on, OpenLDAP can be used as a Quota Storage Backend.
It is possible that other LDAP servers can be used, but this is currently untested.
To use OpenLDAP as your Quota Storage Backend, you have to copy the
pykota/initscripts/ldap/pykota.schema in OpenLDAP's
schemas directory.
Under Debian GNU/Linux, this is something like :
$ cp pykota.schema /etc/ldap/schema
Then edit /etc/ldap/slapd.conf and add a line to
include the PyKota schema. You should have something
like :
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/pykota.schema
Finally, restart the OpenLDAP server :
$ /etc/init.d/slapd restart
Then you have to modify PyKota's configuration file /etc/pykota.conf
to include LDAP specific options. You may want to give a look at
pykota/conf/pykota.conf.sample to see all the options that are
needed. Adapt the values to your own configuration, and finally initialize your
Quota Storage with the help of the edpykota command.
MySQL
A MySQL Storage Backend is planned, but it actually
doesn't exist.
Berkeley DB
A Berkeley DB Storage Backend is planned, but it actually
doesn't exist. It seems that remote storage won't be possible with such a backend,
so in other terms this means that you will have a different quota database on
each print server. This may still prove to be useful for small configurations.
Print Server Installation
For each Print Server on which you plan to implement the print quota
mechanism, you have, of course, to have an already working printing environment.
Currently PyKota works with either the
CUPS
or the LPRng,
but more may be added in the future.
Here's the list of software you have to install on each Print Server, version numbers
are given as an indication of which was successfully tested, but older versions may
work too.
CUPS version 1.1 or above, or LPRng
version 3.8.20 or above (it probably works with older versions but this is untested).
You can download them from http://www.cups.org
or http://lprng.sourceforge.net
Python version 2.1 or above.
You can download it from http://www.python.org.
Quota Storage client libraries, depending on your Quota Storage Backend :
PostgreSQL backend :
PostgreSQL client libraries. They must match the PostgreSQL
version used on your Quota Storage Server.
The PygreSQL python module.
It must match the
PostgreSQL client libraries'
version, as well as Python's version.
MySQL backend : TODO
LDAP backend : TODO
Berkeley DB backend : TODO
ucd-snmp or net-snmp tools, version 4.2.5 or above. You only need
the snmpget command.
You can download them from http://www.sourceforge.net/projects/net-snmp/.
You only need this if you plan to query your printers for their internal page counter via SNMP.
netatalk version 1.6.1 or above. You only need
the pap command.
You can download them from http://netatalk.sourceforge.net/.
You only need this if you plan to query your printers for their internal page counter via AppleTalk.
eGenix' mxDateTime Python module version 2.0.3 or above. It must match your default Python version.
You can download it from http://www.egenix.com.