root / pykota / trunk / docs / installation.sgml @ 1083

Revision 1052, 19.5 kB (checked in by jalet, 21 years ago)

1.09 is out !

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<!-- $Id$ -->
2
3<chapter>
4  <title id="installation">Installation</title>
5 
6  <para>Last modified on $Date$</para>
7 
8  <para>
9    Before being able to use <application>PyKota</application>, you have of course to
10    install it first. But before installing, you must carefully plan your installation.
11  </para>
12 
13  <para>
14    First you have to determine which machine will be the <application>PyKota</application>
15    <firstterm>Storage Server</firstterm>. The Storage Server is the host responsible
16    for keeping a centralized database of print usage for all your printers, users and groups.
17  </para>
18 
19  <para>
20    Then you have to list all the <firstterm>Print Servers</firstterm> for which
21    you plan to use <firstterm>print quota</firstterm> facilities.
22  </para>
23 
24  <para>
25    Finally you have to download <application>PyKota</application>'s latest version
26    or buy an official package, from
27    <ulink url="http://www.librelogiciel.com/software/">http://www.librelogiciel.com/software/</ulink>.
28    If you've just bought an official package, then as soon as you've receive it you
29    have to decompress and visit its archive, to do so just type the following commands :
30    <screen>
31jerome@nordine:~$ tar -zxf pykota-1.09_official.tar.gz   
32jerome@nordine:~$ cd pykota-1.09_official
33jerome@nordine:~/pykota-1.09_official$
34    </screen>
35  </para>
36 
37  <para>
38    You can see many files in this directory, the first ones to read are <filename>README</filename>,
39    then <filename>COPYING</filename> and <filename>LICENSE</filename>. They will give you
40    basic installation instructions and explain the licensing terms under which
41    <application>PyKota</application> is distributed. Of course they are also mostly
42    boring to read ! Detailed installation and operating instructions are defined
43    in the <filename>./docs</filename> directory, in the form of <acronym>SGML</acronym>
44    documentation in the <ulink url="http://www.docbook.org">DocBook</ulink> format.
45    You have to compile these files into readable documentation like the <acronym>HTML</acronym>
46    or <acronym>PDF</acronym> formats, or buy an official <application>PyKota</application> package
47    which already contains these compiled forms of the documentation.
48  </para>
49 
50  <para>
51    Now we will see what has to be done on each of the servers we are planning to use.
52    <note>
53      <title>Note</title>
54      <para>
55        Of course, depending on the size of your network, you may very well
56        use the same machine as both a Print Server and a Storage Server.
57        This is especially the case if you've got only one server.
58      </para>
59    </note> 
60  </para>
61 
62  <sect1>
63    <title>Storage Server Installation</title>
64   
65    <para>
66      Depending on <application>PyKota</application>'s version number, different
67      types of storage backends may be supported, so we will see for each one of
68      them how to configure it.
69    </para>
70   
71    <sect2>
72      <title>PostgreSQL</title>
73     
74      <para>
75        <application>PostgreSQL</application> is an <firstterm>Object Relationnal DataBase
76        Management System</firstterm> distributed under a <firstterm>Free Software</firstterm>
77        license from the
78        <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink>
79        web site. It certainely is the free <acronym>RDBMS</acronym> which has the most advanced
80        features, and is widely used all over the world.
81      </para>
82     
83      <para>
84        To configure your Storage Server, you must have PostgreSQL already working.
85        The complete installation of <application>PostgreSQL</application> is not covered by
86        the present manual, please refer to your system's documentation or to
87        <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink> for
88        details.
89      </para>
90     
91      <para>
92        One thing you have to check, though, is that every Print Server on which you
93        want to install the print quota mechanism, must be able to connect to the
94        <application>PostgreSQL</application> server. In the default installation of
95        <application>PostgreSQL</application> this may not be the case for security reasons, except if both
96        servers are in fact the same machine. In any case, it is recommended that you
97        check the <filename>/etc/postgresql/pg_hba.conf</filename> file and modify it if
98        needed. This file is self documented and its modification is straightforward.
99        You also have to make sure that <application>PostgreSQL</application> accepts <acronym>TCP/IP</acronym> connections.
100        To do so you either have to launch it with the <option>-i</option> option or
101        modify the <filename>/etc/postgresql/postgresql.conf</filename> file, which is
102        self documented and easy to modify too.
103        <tip>
104          <title>Tip</title>
105          <para>
106            Don't forget to restart <application>PostgreSQL</application> if you modify
107            any of its configuration files, in order for the changes to take effect.
108          </para>
109        </tip> 
110      </para>
111     
112      <para>
113        Be careful, you may be unable to connect from a Print Server to the <application>PostgreSQL</application>
114        server even if the configuration is correct. Sometimes your connections may be blocked by
115        one or more network firewalls along the route from one machine to the other. If this
116        is the case, then the best thing you can do is to ask your <firstterm>Network Administrator</firstterm>
117        to not filter the IP port used by <application>PostgreSQL</application>, which is
118        usually port 5432/tcp.
119        <note>
120          <title>Note</title>
121          <para>
122            The TCP/IP network port used by PostgreSQL may be different. When in doubt, ask your
123            <firstterm>System Administrator</firstterm> for the correct value.
124          </para>
125        </note> 
126      </para>
127     
128      <para>
129        Now that your <application>PostgreSQL</application> server is up and running, and
130        is waiting for your connections, you have to create the Quota Storage DataBase.
131        To do so, you'll have to feed <application>PostgreSQL</application> with the
132        <filename>pykota-x.xx/initscripts/postgresql/pykota-postgresql.sql</filename> file.
133        This file will create a Quota DataBase administrator in the <application>PostgreSQL</application> system, then create an empty
134        Quota DataBase and set some permissions on it. The Quota DataBase administrator
135        is the <application>PostgreSQL</application>'s user used to manage the Quota database.
136        The Quota DataBase Administrator is not present in the Quota Database
137        itself, he is only defined in <application>PostgreSQL</application> and don't
138        have to exist on any system, nor in the Quota DataBase. His default names
139        is <literal>pykotaadmin</literal>.
140        The database which will be created will be named <literal>pykota</literal> by default.
141        <note>
142          <title>Note</title>
143          <para>
144            You can choose other names if you want, just modify the
145            <filename>initscripts/postgresql/pykota-postgresql.sql</filename> file
146            accordingly, and report your changes into <application>PyKota</application>'s
147            configuration file.
148          </para>
149        </note> 
150      </para>
151     
152      <para>
153        To run this script, you can use the <application>psql</application> frontend to
154        <application>PostgreSQL</application>, but your priviledges must be sufficient
155        to be allowed to create users and databases. You can launch <application>psql</application>
156        as the <literal>postgres</literal> user which is <application>PostgreSQL</application>'s
157        default administrator, and connect to the default database named <literal>template1</literal>.
158        From a command line interpreter (i.e. shell), type the following commands :
159        <screen>
160jerome@nordine:~$ cd pykota-1.09_official/initscripts/postgresql
161jerome@nordine:~/pykota-1.09_official/initscripts$ psql -h localhost -U postgres template1
162Welcome to psql, the PostgreSQL interactive terminal.
163
164Type:  \copyright for distribution terms
165       \h for help with SQL commands
166       \? for help on internal slash commands
167       \g or terminate with semicolon to execute query
168       \q to quit
169
170template1=# \i pykota-postgresql.sql
171            ... a lot of output lines
172pykota=#       
173        </screen>
174      </para>
175     
176      <para>
177        For security reasons, you may want to set passwords in
178        <application>PostgreSQL</application> for the
179        <literal>pykotaadmin</literal> user.
180        Otherwise any user able to connect to
181        <application>PostgreSQL</application> on your Quota Storage Server
182        could connect to the quota database as this user, and modify it without problem.
183      </para>
184     
185      <para>
186        To do so, just type the following lines while still being at the <application>psql</application>
187        prompt (replace the password values by your own) :
188        <screen>
189pykota=# ALTER USER pykotaadmin PASSWORD 'somepassword';
190ALTER USER
191pykota=# \q
192jerome@nordine:~/pykota-1.09_official/initscripts/postgresql$
193        </screen>
194      </para>
195     
196      <para>
197        The <literal>\q</literal> command above will quit the <application>psql</application>
198        program and return you to the shell's command line prompt.
199      </para>
200     
201      <para>
202        To improve security further, you could encrypt your database connections, or
203        take any other step as needed. Please refer to <application>PostgreSQL</application>'s
204        documentation for details. Also if <application>PyKota</application>'s configuration
205        file is readable by anyone with access on your file system, a local user could
206        create some script to modify his own print quota.
207        <warning>
208          <title>Warning</title>
209          <para>
210            Defining passwords may not be sufficient if your database access rule is
211            set to <literal>trust</literal> in the <filename>/etc/postgresql/pg_hba.conf</filename>.
212            Again, please refer to <application>PostgreSQL</application>'s documentation
213            for details. Also, passwords will fly unencrypted over the network by default,
214            so be sure to take any necessary step to secure your database server from
215            unauthorized use. This has nothing to do with <application>PyKota</application>
216            though, it is just a general rule to keep in mind.
217          </para>
218        </warning> 
219      </para>
220     
221      <para>
222        If no error occured, then your Quota DataBase is ready to be used.
223        Now you can let the Quota Storage Server alone, the remaining work
224        will have to be done on each one of the print servers which will
225        use this particular Quota Storage Server.
226        <tip>
227          <title>Tip</title>
228          <para>
229            If an error occured, maybe your PostgreSQL version is too old, or
230            an unexpected problem (like a bug) happened. Please send me an email so that I
231            can try to solve the problem. Thanks in advance.
232          </para>
233        </tip> 
234      </para>
235     
236    </sect2> 
237   
238    <sect2>
239      <title>LDAP</title>
240     
241      <para>
242        From version 1.09 on, <application>OpenLDAP</application> can be used as a Quota Storage Backend.
243        It is possible that other LDAP servers can be used, but this is currently untested.
244      </para>
245     
246      <para>
247        To use <application>OpenLDAP</application> as your Quota Storage Backend, you have to copy the
248        <filename>pykota/initscripts/ldap/pykota.schema</filename> in <application>OpenLDAP</application>'s
249        schemas directory.
250        Under Debian GNU/Linux, this is something like :
251        <screen>       
252$ cp pykota.schema /etc/ldap/schema
253        </screen>
254     </para>
255     <para>   
256       Then edit <filename>/etc/ldap/slapd.conf</filename> and add a line to   
257       include the PyKota schema. You should have something
258       like :
259       <screen>   
260# Schema and objectClass definitions
261include         /etc/ldap/schema/core.schema
262include         /etc/ldap/schema/cosine.schema
263include         /etc/ldap/schema/nis.schema
264include         /etc/ldap/schema/inetorgperson.schema
265include         /etc/ldap/schema/pykota.schema
266        </screen>       
267      </para>
268      <para>
269        Finally, restart the <application>OpenLDAP</application> server :   
270        <screen>   
271$ /etc/init.d/slapd restart
272        </screen>
273      </para>
274     
275      <para>
276        Then you have to modify PyKota's configuration file <filename>/etc/pykota.conf</filename>
277        to include LDAP specific options. You may want to give a look at
278        <filename>pykota/conf/pykota.conf.sample</filename> to see all the options that are
279        needed. Adapt the values to your own configuration, and finally initialize your
280        Quota Storage with the help of the <application>edpykota</application> command.
281      </para>
282    </sect2> 
283   
284    <sect2>
285      <title>MySQL</title>
286     
287      <para>
288        A <application>MySQL</application> Storage Backend is planned, but it actually
289        doesn't exist.
290      </para>
291    </sect2> 
292   
293    <sect2>
294      <title>Berkeley DB</title>
295     
296      <para>
297        A <application>Berkeley DB</application> Storage Backend is planned, but it actually
298        doesn't exist. It seems that remote storage won't be possible with such a backend,
299        so in other terms this means that you will have a different quota database on
300        each print server. This may still prove to be useful for small configurations.
301      </para>
302    </sect2> 
303  </sect1> 
304 
305  <sect1>
306    <title>Print Server Installation</title>
307   
308    <para>
309      For each Print Server on which you plan to implement the print quota
310      mechanism, you have, of course, to have an already working printing environment.
311      Currently <application>PyKota</application> works with either the
312      <ulink url="http://www.cups.org"><application>CUPS</application></ulink>
313      or the <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>,
314      but more may be added in the future.
315    </para>
316   
317    <para>
318      Here's the list of software you have to install on each Print Server, version numbers
319      are given as an indication of which was successfully tested, but older versions may
320      work too.
321      <itemizedlist>
322        <listitem>
323          <para>
324            <application>CUPS</application> version 1.1 or above, or <application>LPRng</application>
325            version 3.8.20 or above (it probably works with older versions but this is untested).
326            You can download them from <ulink url="http://www.cups.org">http://www.cups.org</ulink>
327            or <ulink url="http://lprng.sourceforge.net">http://lprng.sourceforge.net</ulink>
328          </para>
329        </listitem> 
330        <listitem>
331          <para>
332            Python version 2.1 or above.
333            You can download it from <ulink url="http://www.python.org">http://www.python.org</ulink>.
334          </para>
335        </listitem> 
336        <listitem>
337          <para>
338            Quota Storage client libraries, depending on your Quota Storage Backend :
339            <itemizedlist>
340              <listitem>
341                <para>
342                  PostgreSQL backend :
343                  <itemizedlist>
344                    <listitem>
345                      <para>
346                        <application>PostgreSQL</application> client libraries. They must match the <application>PostgreSQL</application>
347                        version used on your Quota Storage Server.
348                      </para>
349                    </listitem> 
350                    <listitem>
351                      <para>
352                        The <application>PygreSQL</application> python module.
353                        It must match the
354                        <application>PostgreSQL</application> client libraries'
355                        version, as well as Python's version.
356                      </para>
357                    </listitem> 
358                  </itemizedlist> 
359                </para>
360              </listitem> 
361              <listitem>
362                <para>
363                  MySQL backend : TODO
364                </para>
365              </listitem>
366              <listitem>
367                <para>
368                  LDAP backend : TODO
369                </para>
370              </listitem>
371              <listitem>
372                <para>
373                  Berkeley DB backend : TODO
374                </para>
375              </listitem>
376            </itemizedlist> 
377          </para>
378        </listitem> 
379        <listitem>
380          <para>
381            <application>ucd-snmp</application> or <application>net-snmp</application> tools, version 4.2.5 or above. You only need
382            the <application>snmpget</application> command.
383            You can download them from <ulink url="http://www.sourceforge.net/projects/net-snmp/">http://www.sourceforge.net/projects/net-snmp/</ulink>.
384            You only need this if you plan to query your printers for their internal page counter via SNMP.
385          </para>
386        </listitem> 
387        <listitem>
388          <para>
389            <application>netatalk</application> version 1.6.1 or above. You only need
390            the <application>pap</application> command.
391            You can download them from <ulink url="http://netatalk.sourceforge.net/">http://netatalk.sourceforge.net/</ulink>.
392            You only need this if you plan to query your printers for their internal page counter via AppleTalk.
393          </para>
394        </listitem> 
395        <listitem>
396          <para>
397            eGenix' mxDateTime Python module version 2.0.3 or above. It must match your default Python version.
398            You can download it from <ulink url="http://www.egenix.com">http://www.egenix.com</ulink>.
399          </para>
400        </listitem> 
401      </itemizedlist> 
402    </para>
403  </sect1> 
404</chapter>
405
406<!--
407
408$Log$
409Revision 1.17  2003/06/30 21:44:18  jalet
4101.09 is out !
411
412Revision 1.16  2003/06/24 21:37:05  jalet
413Minor changes
414
415Revision 1.15  2003/06/10 16:37:54  jalet
416Deletion of the second user which is not needed anymore.
417Added a debug configuration field in /etc/pykota.conf
418All queries can now be sent to the logger in debug mode, this will
419greatly help improve performance when time for this will come.
420
421Revision 1.14  2003/06/05 07:12:29  jalet
422Reorganization of directories
423
424Revision 1.13  2003/04/24 21:09:47  jalet
425Documentation slightly improved.
426
427Revision 1.12  2003/04/17 21:33:16  jalet
428Version 1.03 is out.
429
430Revision 1.11  2003/03/25 09:32:06  jalet
431Improved documentation.
432
433Revision 1.10  2003/03/23 17:59:56  jalet
434Clarify a point.
435
436Revision 1.9  2003/03/23 17:57:20  jalet
437Deleted a repetition.
438
439Revision 1.8  2003/03/22 15:34:50  jalet
440More complete installation documentation.
441
442Revision 1.7  2003/03/22 14:26:45  jalet
443Download instructions added.
444
445Revision 1.6  2003/03/22 14:06:02  jalet
446Quota Storage Server installation is OK for PostgreSQL.
447
448Revision 1.5  2003/03/22 13:11:33  jalet
449The port on which the Quota Storage Sever is listening can now
450be set in the configuration file (see sample).
451Better error handling if PygreSQL is not installed.
452Improved documentation.
453Version number changed to 1.02alpha
454
455Revision 1.4  2003/03/22 07:20:38  jalet
456More information wrt PostgreSQL tcp/ip configuration.
457
458Revision 1.3  2003/03/18 22:18:25  jalet
459The documentation will only be a sequence of chapters in a single part, not
460multiple parts each including chapters.
461
462Revision 1.2  2003/03/18 22:10:54  jalet
463Documentation improvements.
464
465Revision 1.1  2003/02/08 00:03:35  jalet
466Documentation skeleton added
467
468
469-->
Note: See TracBrowser for help on using the browser.