root / pykota / branches / 1.26_fixes / docs / installation.sgml @ 3570

Revision 3570, 52.3 kB (checked in by jerome, 11 years ago)

Removed references to psyco.

  • 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    database server. The database 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 print quota facilities.
22  </para>
23
24  <para>
25    With most database backends, several print servers can share a single database, however
26    as we'll see later this is not possible if you choose to use <application>SQLite</application>
27    as your print quota database backend.
28  </para>
29
30  <para>
31    Finally you have to download <application>PyKota</application>'s latest version
32    or buy an official package, from
33    <ulink url="http://www.pykota.com/software/pykota">http://www.pykota.com/software/pykota</ulink>.
34    If you've just bought an official package, then as soon as you've receive it you
35    have to decompress and visit its archive, to do so just type the following commands :
36    <screen>
37jerome@nordine:~$ tar -zxf pykota-1.26_official.tar.gz
38jerome@nordine:~$ cd pykota-1.26_official
39jerome@nordine:~/pykota-1.26_official$
40    </screen>
41  </para>
42
43  <para>
44    You can see many files in this directory, the first ones to read are <filename>README</filename>,
45    then <filename>COPYING</filename> and <filename>LICENSE</filename>. They will give you
46    basic installation instructions and explain the licensing terms under which
47    <application>PyKota</application> is distributed. Of course they are also mostly
48    boring to read ! Detailed installation and operating instructions are defined
49    in the <filename>./docs</filename> directory, in the form of <acronym>SGML</acronym>
50    documentation in the <ulink url="http://www.docbook.org">DocBook</ulink> format.
51    You have to compile these files into readable documentation like the <acronym>HTML</acronym>
52    or <acronym>PDF</acronym> formats, or buy an official <application>PyKota</application> package
53    which already contains these compiled forms of the documentation. Of course you already
54    know this because that's what you are currently reading !
55  </para>
56
57  <sect1>
58    <title>Interactive step-by-step installation of PyKota with pksetup</title>
59
60    <para>
61      <command>pksetup</command> is a command line tool with which you'll be able
62      to install <application>PyKota</application> and all its dependencies in
63      a completely interactive way. At the end of the installation, a shell
64      script is created which allows you to replicate the very same
65      installation in an automated way. This can be useful if you've got
66      several servers to install identically.
67    </para>
68
69    <para>
70      Currently, <command>pksetup</command> is experimental, and only works
71      with <ulink url="http://www.debian.org">Debian</ulink> and
72      <ulink url="http://www.ubuntu.com">Ubuntu</ulink> distributions.
73      In addition, the database backend which will be installed with
74      this command is <ulink url="http://www.postgresql.org">PostgreSQL</ulink>
75      and you have no choice for another backend. If you want another
76      database backend, or use a different distribution, or want to do
77      the installation manually, then read and follow the instructions in the next section.
78    </para>
79
80    <para>
81      To launch the installation procedure, just type <literal>pksetup</literal>
82      followed with the name of your distribution, like :
83    <screen>
84jerome@nordine:~/pykota-1.26_official$ ./bin/pksetup debian
85    </screen>
86      and then follow the instructions and answer to the several questions you'll
87      be asked.
88    </para>
89  </sect1>
90
91  <sect1>
92    <title>Manual installation</title>
93    <para>
94      To do a manual installation, we will see what has to be done on each of the servers we are planning to use.
95      <note>
96        <title>Note</title>
97        <para>
98          Of course, depending on the size of your network, you may very well
99          use the same machine as both a Print Server and a database server.
100          This is especially the case if you've got only one server.
101        </para>
102      </note>
103    </para>
104
105    <sect2>
106      <title>Database server installation</title>
107
108      <para>
109        Depending on <application>PyKota</application>'s version number, different
110        types of storage backends may be supported, so we will see for each one of
111        them how to configure it.
112      </para>
113
114      <sect3>
115        <title>PostgreSQL</title>
116
117        <para>
118          <application>PostgreSQL</application> is an <firstterm>Object Relationnal DataBase
119          Management System</firstterm> distributed under a <firstterm>Free Software</firstterm>
120          license from the
121          <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink>
122          web site. It certainely is the free <acronym>RDBMS</acronym> which has the most advanced
123          features, and is widely used all over the world.
124        </para>
125
126        <para>
127          To configure your database, you must have PostgreSQL already working.
128          The complete installation of <application>PostgreSQL</application> is not covered by
129          the present manual, please refer to your system's documentation or to
130          <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink> for
131          details.
132        </para>
133
134        <para>
135          One thing you have to check, though, is that every Print Server on which you
136          want to install the print quota mechanism, must be able to connect to the
137          <application>PostgreSQL</application> server. In the default installation of
138          <application>PostgreSQL</application> this may not be the case for security reasons, except if both
139          servers are in fact the same machine. In any case, it is recommended that you
140          check the <filename>/etc/postgresql/pg_hba.conf</filename> file and modify it if
141          needed. This file is self documented and its modification is straightforward.
142          You also have to make sure that <application>PostgreSQL</application> accepts <acronym>TCP/IP</acronym> connections.
143          To do so you either have to launch it with the <option>-i</option> option or
144          modify the <filename>/etc/postgresql/postgresql.conf</filename> file, which is
145          self documented and easy to modify too. Allowing <acronym>TCP/IP</acronym> connections
146          is not necessary though if your print quota database server and your Print Server are
147          the very same host.
148        </para>
149
150        <para>
151          Here's an excerpt from a <filename>pg_hba.conf</filename> file. This one rejects all
152          connections to PyKota's database excepted when made from the same host by <application>PostgreSQL</application> users
153          <literal>pykotauser</literal> or <literal>pykotaadmin</literal> with the correct password.
154    <screen>
155          local all    postgres                              ident sameuser
156          local all    all                                   reject
157          host  pykota pykotauser  127.0.0.1 255.255.255.255 crypt
158          host  pykota pykotaadmin 127.0.0.1 255.255.255.255 crypt
159          host  pykota all         127.0.0.1 255.255.255.255 reject
160    </screen>
161       </para>
162
163       <para>
164          Of course if your print server and your database servers have different <acronym>IP</acronym>
165          addresses, you have to replace the <literal>127.0.0.1</literal> address above with your print
166          server's <acronym>IP</acronym> address. As an alternative, you could still keep these
167          lines and add similar lines with other <acronym>IP</acronym> addresses if you have several
168          print servers for which you want a single centralized database.
169          <tip>
170            <title>Tip</title>
171            <para>
172              Don't forget to restart <application>PostgreSQL</application> if you modify
173              any of its configuration files, in order for the changes to take effect.
174            </para>
175          </tip>
176        </para>
177
178        <para>
179          Be careful, you may be unable to connect from a Print Server to the <application>PostgreSQL</application>
180          server even if the configuration is correct. Sometimes your connections may be blocked by
181          one or more network firewalls along the route from one machine to the other. If this
182          is the case, then the best thing you can do is to ask your <firstterm>Network Administrator</firstterm>
183          to not filter the IP port used by <application>PostgreSQL</application>, which is
184          usually port <literal>5432/tcp</literal>.
185          <note>
186            <title>Note</title>
187            <para>
188              The TCP/IP network port used by PostgreSQL may be different. When in doubt, ask your
189              <firstterm>System Administrator</firstterm> for the correct value.
190            </para>
191          </note>
192        </para>
193
194        <para>
195          Now that your <application>PostgreSQL</application> server is up and running, and
196          is waiting for your connections, you have to create the print quota database.
197          To do so, you'll have to feed <application>PostgreSQL</application> with the
198          <filename>pykota-1.26_official/initscripts/postgresql/pykota-postgresql.sql</filename> file.
199          This file will create a print quota database administrator in the <application>PostgreSQL</application> system, then create an empty
200          print quota database and set some permissions on it. The print quota database administrator
201          is the <application>PostgreSQL</application>'s user used to manage the quota database.
202          The print quota database Administrator is not present in the quota database
203          itself, he is only defined in <application>PostgreSQL</application> and don't
204          have to exist on any system, nor in the print quota database. His default name
205          is <literal>pykotaadmin</literal>.
206          A print quota database read-only user is also created under the name of <literal>pykotauser</literal>.
207          This read-only user is used by <application>PyKota</application> to connect to the
208          print quota database when an user who is not a <application>PyKota</application> administrator
209          <footnote><para>a <application>PyKota</application> administrator is an user who can read the <filename>~pykota/pykotadmin.conf</filename> file.</para></footnote>
210          launches a pykota command. This prevents normal
211          users from being able to modify their own, or other users', quota information.
212          The database which will be created will be named <literal>pykota</literal> by default.
213          The <literal>pykotaadmin</literal> and <literal>pykotauser</literal> users by
214          default respectively have <literal>readwritepw</literal> and <literal>readonlypw</literal>
215          as their passwords.
216          <note>
217            <title>Note</title>
218            <para>
219              You can choose other names and passwords if you want by modifying the
220              <filename>initscripts/postgresql/pykota-postgresql.sql</filename> file
221              accordingly, and report your changes into <application>PyKota</application>'s
222              configuration files.
223            </para>
224          </note>
225        </para>
226
227        <para>
228          To run this script, you can use the <command>psql</command> frontend to
229          <application>PostgreSQL</application>, but your priviledges must be sufficient
230          to be allowed to create users and databases. You can launch <command>psql</command>
231          as the <literal>postgres</literal> user which is <application>PostgreSQL</application>'s
232          default administrator, and connect to the default database named <literal>template1</literal>.
233          From a command line interpreter (i.e. shell), type the following commands :
234          <screen>
235    jerome@nordine:~$ cd pykota-1.26_official/initscripts/postgresql
236    jerome@nordine:~/pykota-1.26_official/initscripts$ psql -h localhost -U postgres template1
237    Welcome to psql, the PostgreSQL interactive terminal.
238
239    Type:  \copyright for distribution terms
240         \h for help with SQL commands
241         \? for help on internal slash commands
242         \g or terminate with semicolon to execute query
243         \q to quit
244
245    template1=# \i pykota-postgresql.sql
246              ... a lot of output lines
247    pykota=#
248          </screen>
249          <note>
250            <title>Note</title>
251            <para>
252              If you use RPM or DEB packages, usually the
253              <filename>pykota-postgresql.sql</filename> file gets installed into the
254              <filename>/usr/share/pykota/postgresql</filename> directory, along
255              with a README file.
256            </para>
257          </note>
258        </para>
259
260        <para>
261          If you want to you can change passwords later in
262          <application>PostgreSQL</application> for the
263          <literal>pykotaadmin</literal> and <literal>pykotauser</literal> users.
264          To do so, just type the following lines while still being at the <command>psql</command>
265          prompt (replace the password values by your own :
266          <screen>
267    pykota=# ALTER USER pykotaadmin PASSWORD 'somepassword';
268    ALTER USER
269    pykota=# ALTER USER pykotauser PASSWORD 'anotherpassword';
270    pykota=# \q
271    jerome@nordine:~/pykota-1.26_official/initscripts/postgresql$
272          </screen>
273        </para>
274
275        <para>
276          The <literal>\q</literal> command above will quit the <command>psql</command>
277          program and return you to the shell's command line prompt.
278        </para>
279
280        <para>
281          To improve security further, you could encrypt your database connections, or
282          take any other step as needed. Please refer to <application>PostgreSQL</application>'s
283          documentation for details.
284          <warning>
285            <title>Warning</title>
286            <para>
287              Defining passwords may not be sufficient if your database access rule is
288              set to <literal>trust</literal> in the <filename>/etc/postgresql/pg_hba.conf</filename>.
289              Again, please refer to <application>PostgreSQL</application>'s documentation
290              for details. Also, passwords will fly unencrypted over the network by default,
291              so be sure to take any necessary step to secure your database server from
292              unauthorized use. This has nothing to do with <application>PyKota</application>
293              though, it is just a general rule to keep in mind.
294            </para>
295          </warning>
296        </para>
297
298        <para>
299          For more details, please see <filename>initscripts/mysql/README.postgresql</filename>.
300        </para>
301
302        <para>
303          If no error occured, then your print quota database is ready to be used.
304          Now you can let the print quota database server alone, the remaining work
305          will have to be done on each one of the print servers which will
306          use this particular print quota database server.
307          <tip>
308            <title>Tip</title>
309            <para>
310              If an error occured, maybe your PostgreSQL version is too old, or
311              an unexpected problem (like a bug) happened. Please contact us via email so that we
312              can try to fix the problem. Thanks in advance.
313            </para>
314          </tip>
315        </para>
316
317      </sect3>
318
319      <sect3>
320        <title>LDAP</title>
321
322        <para>
323          Any <acronym>LDAP</acronym> server, and particularly <application>OpenLDAP</application>, can be used
324          as a print quota database backend.
325          Some other LDAP servers can be used, but this is currently untested in production.
326        </para>
327
328        <para>
329          <application>OpenLDAP</application> is a Lightweight Directory Access Protocol server
330          implementation published as Free Software.
331          You can download it from <ulink url="http://www.openldap.org">http://www.openldap.org</ulink>.
332        </para>
333
334        <para>
335          To use <application>OpenLDAP</application> as your print quota database backend, you have to copy the
336          <filename>pykota/initscripts/ldap/pykota.schema</filename> into <application>OpenLDAP</application>'s
337          schemas directory.
338          Under Debian GNU/Linux, this is something like :
339          <screen>
340    $ cp pykota.schema /etc/ldap/schema
341          </screen>
342          <note>
343            <title>Note</title>
344            <para>
345              If you use RPM or DEB packages, the
346              <filename>pykota.schema</filename> file is usually installed into the
347              <filename>/usr/share/pykota/ldap</filename> directory, along
348              with a README file, and may also be installed automatically in
349              your <acronym>LDAP</acronym> server's schemas directory.
350            </para>
351          </note>
352       </para>
353       <para>
354         Then edit <filename>/etc/ldap/slapd.conf</filename> and add a line to
355         include the PyKota schema. You should have something
356         like :
357         <screen>
358    # Schema and objectClass definitions
359    include         /etc/ldap/schema/core.schema
360    include         /etc/ldap/schema/cosine.schema
361    include         /etc/ldap/schema/nis.schema
362    include         /etc/ldap/schema/inetorgperson.schema
363    include         /etc/ldap/schema/pykota.schema
364          </screen>
365        </para>
366
367        <para>
368          While this is not mandatory, it is recommended that you setup
369          some indexes for some often accessed PyKota attributes.
370          Here are the minimal indexes
371          lines you may want to put in <filename>slapd.conf</filename> :
372          <screen>
373    # Indexes for PyKota
374    index pykotaUserName pres,eq,sub
375    index pykotaGroupName pres,eq,sub
376    index pykotaPrinterName pres,eq,sub
377    index pykotaBillingCode pres,eq,sub
378    index pykotaLastJobIdent eq
379          </screen>
380        </para>
381
382        <para>
383          Now you must ensure that the DNs you'll use to bind to
384          your OpenLDAP server don't have search queries size limits,
385          which gives for example (OpenLDAP 2.1.x or above) :
386
387    <screen>
388    # No Limits for PyKota's administrator and read-only user
389    limits dn="cn=pykotaadmin,dc=example,dc=com" size.soft=-1 size.hard=soft
390    limits dn="cn=pykotauser,dc=example,dc=com" size.soft=-1 size.hard=soft
391    </screen>
392
393          Where pykotaadmin and pykotauser are the usernames used to bind to your
394          OpenLDAP server within PyKota, respectively in ReadWrite mode
395          (as set in pykotadmin.conf) and in ReadOnly mode (as set in pykota.conf).
396        </para>
397
398        <para>
399          Finally, stop the <application>OpenLDAP</application> server, generate
400          the index files, and restart <application>OpenLDAP</application>
401          <screen>
402    $ /etc/init.d/slapd stop
403    $ slapindex
404    $ /etc/init.d/slapd start
405          </screen>
406        </para>
407
408        <para>
409          With an <acronym>LDAP</acronym> backend, PyKota will need some branches
410          in your <acronym>LDAP</acronym> directory to put its own datas.
411          You can configure PyKota to either attach its datas to your existing
412          users and groups, or to put them in their own <literal>ou</literal>.
413          But some <literal>ou</literal>s dedicated to PyKota are needed in any case,
414          so the best bet may be to put all PyKota's datas below an <literal>ou=PyKota</literal>
415          branch. While this will separate these datas from your existing users and groups
416          entries, this may ease the maintainance.
417        </para>
418
419        <para>
420          PyKota needs at least an <literal>ou</literal> for printers, for users quotas, for
421          groups quotas, for print jobs, for billing codes, and for pointers to the last job of each printer.
422          In the future, this last <literal>ou</literal> may disappear as its content
423          will probably be attached to each printer.
424        </para>
425
426        <para>
427          Actually PyKota doesn't create these <literal>ou</literal>s for you, because it's
428          difficult to guess what is the best configuration for you. So you have to
429          create them by yourself, either directly with a text editor and the
430          <command>ldapadd</command> command, or with some specialized tool
431          like <command>gq</command>. You can look at the <filename>initscripts/ldap/pykota-sample.ldif</filename>
432          file to see which minimal branches are necessary.
433          <note>
434            <title>Note</title>
435            <para>
436              If you use RPM or DEB packages, usually the
437              <filename>pykota-sample.ldif</filename> file is installed into the
438              <filename>/usr/share/pykota/ldap</filename> directory, along
439              with a README file.
440            </para>
441          </note>
442        </para>
443
444        <para>
445          If no error occured, then your print quota database is ready to be used.
446          Now you can let the print quota database server alone, the remaining work
447          will have to be done on each one of the print servers which will
448          use this particular print quota database server.
449          <tip>
450            <title>Tip</title>
451            <para>
452              If an error occured, maybe your OpenLDAP version is too old, or
453              an unexpected problem (like a bug) happened. Please contact us via email so that we
454              can try to fix the problem. Thanks in advance.
455            </para>
456          </tip>
457        </para>
458      </sect3>
459
460      <sect3>
461        <title>MySQL</title>
462
463        <para>
464          <application>MySQL</application> is a simple Relationnal DataBase
465          Management System distributed under a <firstterm>Free Software</firstterm>
466          license from the
467          <ulink url="http://www.mysql.org">http://www.mysql.org</ulink>
468          web site.
469        </para>
470
471        <para>
472          To configure your database, you must have MySQL version 4.1 or higher already working.
473          We recommend that you use MySQL 5.0 or higher though.
474          The complete installation of <application>MySQL</application> is not covered by
475          the present manual, please refer to your system's documentation or to
476          <ulink url="http://www.mysql.org">http://www.mysql.org</ulink> for
477          details.
478        </para>
479
480        <para>
481          One thing you have to check, though, is that every Print Server on which you
482          want to install the print quota mechanism, must be able to connect to the
483          <application>MySQL</application> server. In the default installation of
484          <application>MySQL</application> this may not be the case for security reasons, except if both
485          servers are in fact the same machine. In any case, it is recommended that you
486          check the <filename>/etc/mysql/my.cnf</filename> file and modify it if
487          needed.
488          <tip>
489            <title>Tip</title>
490            <para>
491              Don't forget to restart <application>MySQL</application> if you modify
492              any of its configuration files, in order for the changes to take effect.
493            </para>
494          </tip>
495        </para>
496
497        <para>
498          Be careful, you may be unable to connect from a Print Server to the <application>MySQL</application>
499          server even if the configuration is correct. Sometimes your connections may be blocked by
500          one or more network firewalls along the route from one machine to the other. If this
501          is the case, then the best thing you can do is to ask your <firstterm>Network Administrator</firstterm>
502          to not filter the IP port used by <application>MySQL</application>, which is
503          usually port <literal>3306/tcp</literal>.
504          <note>
505            <title>Note</title>
506            <para>
507              The TCP/IP network port used by MySQL may be different. When in doubt, ask your
508              <firstterm>System Administrator</firstterm> for the correct value.
509            </para>
510          </note>
511        </para>
512
513        <para>
514          Now that your <application>MySQL</application> server is up and running, and
515          is waiting for your connections, you have to create the print quota database.
516          To do so, you'll have to feed <application>MySQL</application> with the
517          <filename>pykota-1.26_official/initscripts/mysql/pykota-mysql.sql</filename> file.
518          This file will create an empty
519          print quota database and set some permissions on it.
520          The database which will be created will be named <literal>pykota</literal> by default.
521          Two database users will be defined to have access in readonly and read+write modes under
522          the respective names <literal>pykotauser</literal> and <literal>pykotaadmin</literal>.
523          The <literal>pykotaadmin</literal> and <literal>pykotauser</literal> users by
524          default respectively have <literal>readwritepw</literal> and <literal>readonlypw</literal>
525          as their passwords.
526          <note>
527            <title>Note</title>
528            <para>
529              You can choose other names and passwords if you want by modifying the
530              <filename>initscripts/mysql/pykota-mysql.sql</filename> file
531              accordingly, and report your changes into <application>PyKota</application>'s
532              configuration files.
533            </para>
534          </note>
535        </para>
536
537        <para>
538          To run this script, you can use the <command>mysql</command> frontend to
539          <application>MySQL</application>, but your priviledges must be sufficient
540          to be allowed to create databases. You can launch <command>mysql</command>
541          as the <literal>root</literal> user for example.
542          From a command line interpreter (i.e. shell), type the following commands :
543          <screen>
544    jerome@nordine:~$ cd pykota-1.26_official/initscripts/mysql
545    jerome@nordine:~/pykota-1.26_official/initscripts$ mysql &lt;pykota-mysql.sql
546          </screen>
547          <note>
548            <title>Note</title>
549            <para>
550              If you use RPM or DEB packages, usually the
551              <filename>pykota-mysql.sql</filename> file gets installed into the
552              <filename>/usr/share/pykota/mysql</filename> directory, along
553              with a README file.
554            </para>
555          </note>
556        </para>
557
558        <para>
559          To improve security further, you could encrypt your database connections, or
560          take any other step as needed. Please refer to <application>MySQL</application>'s
561          documentation for details.
562        </para>
563
564        <para>
565          For more details, please see <filename>initscripts/mysql/README.mysql</filename>.
566        </para>
567
568        <para>
569          If no error occured, then your print quota database is ready to be used.
570          Now you can let the print quota database server alone, the remaining work
571          will have to be done on each one of the print servers which will
572          use this particular print quota database server.
573          <tip>
574            <title>Tip</title>
575            <para>
576              If an error occured, maybe your MySQL version is too old, or
577              an unexpected problem (like a bug) happened. Please contact us via email so that we
578              can try to fix the problem. Thanks in advance.
579            </para>
580          </tip>
581        </para>
582
583      </sect3>
584
585      <sect3>
586        <title>SQLite</title>
587
588        <para>
589          <application>SQLite</application> is an embeddable Relationnal DataBase
590          distributed under a Free Software
591          license from the
592          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink>
593          web site.
594          If is very easy to configure and use, offers a very small memory footprint,
595          is very fast, but can only be used on the print server because it doesn't include
596          a server daemon : the database is directly embedded in the application.
597        </para>
598
599        <para>
600          To configure your database, you must have SQLite already working.
601          The complete installation of <application>SQLite</application> is not covered by
602          the present manual, please refer to your system's documentation or to
603          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink> for
604          details.
605        </para>
606
607        <para>
608          Once <application>SQLite</application> is installed, you have to decide where
609          you'll put your database. A good idea is to store it into the <literal>pykota</literal>
610          user's home directory. Then to create the database, just type :
611    <screen>
612    # sqlite3 ~pykota/pykota.db &lt;pykota/initscripts/sqlite/pykota.sqlite
613    # chown pykota.pykota ~pykota/pykota.db
614    # chmod 660 ~pykota/pykota.db
615    # chown pykota.pykota ~pykota
616    </screen>
617        </para>
618        <para>
619          If user <literal>pykota</literal> doesn't exist yet, then please
620          follow the instructions a bit below which explain how to install PyKota on the print server.
621        </para>
622
623        <para>
624          Once this is done, you'll want to set in <filename>~pykota/pykota.conf</filename> the
625          following lines in the <literal>[global]</literal> section :
626    <screen>
627    storagebackend : sqlitestorage
628    storagename : /etc/pykota/pykota.db
629    </screen>
630        </para>
631        <para>
632          Of course you'll want to replace the path on the <literal>storagename</literal> line
633          with the full path to the newly created <application>SQLite</application> database.
634        </para>
635        <para>
636          If no error occured, then your print quota database is ready to be used.
637          In case you need them, additional instructions are available in <filename>pykota/initscripts/sqlite/README.sqlite</filename>
638          <tip>
639            <title>Tip</title>
640            <para>
641              If an error occured, maybe your SQLite version is too old, or
642              an unexpected problem (like a bug) happened. Please contact us via email so that we
643              can try to fix the problem. Thanks in advance.
644            </para>
645          </tip>
646        </para>
647      </sect3>
648
649      <sect3>
650        <title>Berkeley DB</title>
651
652        <para>
653          A <application>Berkeley DB</application> backend is planned, but it actually
654          doesn't exist. It seems that remote storage won't be possible with such a backend,
655          so in other terms this means that you will have a different quota database on
656          each print server. This may still prove to be useful for small configurations.
657        </para>
658      </sect3>
659    </sect2>
660
661    <sect2>
662      <title>Print Server Installation</title>
663
664      <para>
665        For each Print Server on which you plan to implement the print quota
666        mechanism, you have, of course, to have an already working printing environment.
667        Currently <application>PyKota</application> works with
668        <ulink url="http://www.cups.org"><application>CUPS</application></ulink>
669        but older releases also supported <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>.
670        <application>LPRng</application> support might be re-added in the future.
671      </para>
672
673      <para>
674        Here's the list of software you have to install on each Print Server, version numbers
675        are given as an indication of which was successfully tested, but older versions may
676        work too.
677        <itemizedlist>
678          <listitem>
679            <para>
680              <application>CUPS</application> version 1.1.14 or higher, version 1.2.4 or higher
681              is recommanded.
682              You can download it from <ulink url="http://www.cups.org">http://www.cups.org</ulink>
683            </para>
684          </listitem>
685          <listitem>
686            <para>
687              <application>Python</application> version 2.3 or higher.
688              You can download it from <ulink url="http://www.python.org">http://www.python.org</ulink>.
689              While <application>PyKota</application> itself will try to preserve compatibility
690              with <application>Python</application> version 2.3 for the near future, some <application>Python</application>
691              modules which are needed by <application>PyKota</application> may require a more recent version
692              of this language.
693            </para>
694          </listitem>
695          <listitem>
696            <para>
697              print quota database client libraries, depending on your print quota database backend :
698              <itemizedlist>
699                <listitem>
700                  <para>
701                    PostgreSQL backend :
702                    <itemizedlist>
703                      <listitem>
704                        <para>
705                          <application>PostgreSQL</application> client libraries. They must match the <application>PostgreSQL</application>
706                          version used on your print quota database server.
707                        </para>
708                      </listitem>
709                      <listitem>
710                        <para>
711                          The <application>PygreSQL</application> python module.
712                          <application>PygreSQL</application> is normally included in
713                          <application>PostgreSQL</application>, but you may want to
714                          download it from <ulink url="http://www.pygresql.org">http://www.pygresql.org</ulink>
715                        </para>
716                      </listitem>
717                    </itemizedlist>
718                  </para>
719                </listitem>
720                <listitem>
721                  <para>
722                    OpenLDAP backend :
723                    <itemizedlist>
724                      <listitem>
725                        <para>
726                          <application>OpenLDAP</application> client libraries. They must match
727                          the <application>OpenLDAP</application> version used on your print quota database server.
728                        </para>
729                      </listitem>
730                      <listitem>
731                        <para>
732                          The <application>Python-LDAP</application> python module.
733                          You may download this module from <ulink url="http://python-ldap.sourceforge.net">http://python-ldap.sourceforge.net</ulink>
734                        </para>
735                      </listitem>
736                    </itemizedlist>
737                  </para>
738                </listitem>
739                <listitem>
740                  <para>
741                    MySQL backend :
742                    <itemizedlist>
743                      <listitem>
744                        <para>
745                          <application>MySQL</application> client libraries. They must match the <application>MySQL</application>
746                          version used on your database server.
747                        </para>
748                      </listitem>
749                      <listitem>
750                        <para>
751                          The <application>Python-MySQL</application> python module, version 1.2.x or higher.
752                          You can download it from <ulink url="http://sourceforge.net/projects/mysql-python">http://sourceforge.net/projects/mysql-python</ulink>
753                        </para>
754                      </listitem>
755                    </itemizedlist>
756                  </para>
757                </listitem>
758                <listitem>
759                  <para>
760                    SQLite backend : SQLite is not a database server, but an embeddable database, so
761                    if you want to use it you MUST install SQLite on your print server. With
762                    <application>PostgreSQL</application>, <application>MySQL</application> or
763                    <application>OpenLDAP</application> you can store your datas on a different
764                    machine than the print server, but this is not possible with <application>SQLite</application>.
765                    <itemizedlist>
766                      <listitem>
767                        <para>
768                          <application>SQLite</application> version 3.2.1 or higher and its library.
769                          You can download it from
770                          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink>
771                        </para>
772                      </listitem>
773                      <listitem>
774                        <para>
775                          The <application>Python-SQLite</application> python module version 2.0.5 or higher.
776                          You can download it from
777                          <ulink url="http://www.pysqlite.org">http://www.pysqlite.org</ulink>
778                        </para>
779                      </listitem>
780                    </itemizedlist>
781                  </para>
782                </listitem>
783                <listitem>
784                  <para>
785                    Berkeley DB backend : Not supported yet.
786                  </para>
787                </listitem>
788              </itemizedlist>
789            </para>
790          </listitem>
791          <listitem>
792            <para>
793              <application>ucd-snmp</application> or <application>net-snmp</application> tools, version 4.2.5 or above. You only need
794              the <command>snmpget</command> command.
795              You can download this software from <ulink url="http://www.sourceforge.net/projects/net-snmp/">http://www.sourceforge.net/projects/net-snmp/</ulink>.
796              You only need this if PyKota's internal SNMP accounting code doesn't work for your SNMP-aware
797              printers.
798            </para>
799          </listitem>
800          <listitem>
801            <para>
802              <application>netatalk</application> version 1.6.1 or above. You only need
803              the <command>pap</command> command.
804              You can download this software from <ulink url="http://netatalk.sourceforge.net/">http://netatalk.sourceforge.net/</ulink>.
805              You only need this if you plan to query your printers for their internal page counter via AppleTalk.
806            </para>
807          </listitem>
808          <listitem>
809            <para>
810              eGenix' mxDateTime Python module version 2.0.3 or above. It must match your default Python version.
811              You can download it from <ulink url="http://www.egenix.com">http://www.egenix.com</ulink>.
812            </para>
813          </listitem>
814          <listitem>
815            <para>
816              The <application>pysnmp</application> Python module version 3.4.2, or higher, version 4 is recommanded.
817              You can download it from <ulink url="http://pysnmp.sourceforge.net">http://pysnmp.sourceforge.net</ulink>.
818            </para>
819          </listitem>
820          <listitem>
821            <para>
822              The <application>JAXML</application> Python module.
823              You can download it from <ulink url="http://www.librelogiciel.com/software/">http://www.librelogiciel.com/software/</ulink>.
824            </para>
825          </listitem>
826          <listitem>
827            <para>
828              The <application>ReportLab</application> Toolkit Python module.
829              You can download it from <ulink url="http://www.reportlab.org">http://www.reportlab.org</ulink>.
830            </para>
831          </listitem>
832          <listitem>
833            <para>
834              The <application>Python Imaging Library - PIL</application> module.
835              You can download it from <ulink url="http://www.pythonware.com">http://www.pythonware.com</ulink>.
836            </para>
837          </listitem>
838          <listitem>
839            <para>
840              The <application>PyOSD</application> Python module.
841              You can download it from <ulink url="http://repose.cx/pyosd/">http://repose.cx/pyosd/</ulink>.
842            </para>
843          </listitem>
844          <listitem>
845            <para>
846              The <application>pkpgcounter</application> Generic Page Description Language parser.
847              You can download it from <ulink url="http://www.pykota.com.com/software/pkpgcounter">http://www.pykota.com/software/pkpgcounter</ulink>.
848            </para>
849          </listitem>
850          <listitem>
851            <para>
852              The <application>PyPAM</application> Python interface to <acronym>PAM</acronym>.
853              You'll need this if you plan to ask users to authenticate when printing through <command>pknotify</command>
854              and <command>pykoticon</command>. You don't need this module otherwise.
855              If needed, you can download it from <ulink url="http://www.pangalactic.org/PyPAM/">http://www.pangalactic.org/PyPAM/</ulink>.
856            </para>
857          </listitem>
858          <listitem>
859            <para>
860              The <application>PkIPPLib</application> Python <acronym>IPP</acronym> library.
861              You can download it from <ulink url="http://www.pykota.com/software/pkipplib">http://www.pykota.com/software/pkipplib</ulink>.
862            </para>
863          </listitem>
864        </itemizedlist>
865      </para>
866
867      <para>
868        Instead of downloading all these programs' sources and compiling them, which really
869        is a boring task considering that many software are needed, you may prefer to look
870        into the packages included with your GNU/Linux distribution of choice (if you use
871        this operating system of course). Most, if not all, GNU/Linux distributions include
872        all the software mentionned above, in the form of packages which are easier to
873        install than sources tarballs. This is probably the same for the many *BSD
874        distributions.
875      </para>
876
877      <para>
878         You can check that all needed software is installed by launching the <command>checkdeps.py</command>
879         command :
880        <screen>
881    $ python checkdeps.py
882        </screen>
883      </para>
884
885      <para>
886        Once all these software are installed, installing PyKota itself is a breeze.
887        PyKota being written entirely in the Python language, which is interpreted,
888        there's no need to compile anything. You just have to execute the installation
889        script :
890        <screen>
891    $ python setup.py install
892        </screen>
893      </para>
894
895      <para>
896        The setup script will automatically create the
897        <filename>/usr/share/pykota/conf</filename> directory and put the sample
898        configuration files <filename>conf/pykota.conf.sample</filename> and
899        <filename>conf/pykotadmin.conf.sample</filename> there, along with
900        a <filename>README</filename> file explaining their purpose.
901      </para>
902
903      <para>
904        Now you have to create a <literal>pykota</literal> system user and group. The <application>PyKota</application>
905        software will automatically search its configuration files in user <literal>pykota</literal>'s
906        home directory. For example we could create the user and group, and set <filename>/etc/pykota</filename>
907        as the home directory, but any other home directory will do :
908    <screen>
909      adduser --system --group --home /etc/pykota --gecos PyKota pykota
910    </screen>
911      </para>
912
913      <para>
914        You now have to copy the sample configuration files into the <filename>~pykota</filename>
915        directory, under the respective names <filename>pykota.conf</filename> and
916        <filename>pykotadmin.conf</filename>. Once copied there, you just
917        have to modify these files to adapt them to your own setup.
918        These files are heavily commented, so you should have no problem.
919        Also their format is quite common, because it's the one used by
920        <application>Samba</application> for example, or by <literal>.ini</literal>
921        files under <application>MS-Windows</application>, so you may already
922        be familiar with this syntax.
923        In a future release, this documentation will include the complete
924        reference for all configuration fields available. Keep in mind that
925        <application>PyKota</application> can be really heavily customized, and can delegate some work
926        to any external command of your choice.
927      </para>
928
929      <para>
930        Please create a backup copy of the <filename>~pykota</filename>
931        directory before modifying a working installation.
932      </para>
933
934      <para>
935        PyKota features some interesting possibilities which allow you to
936        define options either globally so that they apply to all printers,
937        or on a per printer basis. Please see the sample configuration files
938        to see what I mean. In the simplest form, only a <literal>[global]</literal> section is
939        needed. In more complex configurations, you will have to create
940        one section per printer. Each section in the configuration files
941        begins with a name between square brackets <literal>[]</literal>.
942        The name to use to define a particular printer section is the name
943        of the print queue you want to manage with PyKota.
944      </para>
945
946      <para>
947        After you have modified <application>PyKota</application>'s configuration files, you have to
948        double check their permissions, otherwise your installation may be
949        insecure or may not work at all.
950        The main configuration file <filename>~pykota/pykota.conf</filename>
951        doesn't contain much sensitive information, so it can be made
952        readable by anyone. If normal users read this file, at best they
953        will learn the username and optional password of the read-only
954        database user. This means that beside being allowed to read all the contents of
955        the quota database, they won't be allowed to modify or delete it.
956        On the other hand, the <filename>~pykota/pykotadmin.conf</filename>
957        file contains the read-write user's identity and password. You must then
958        ensure that no normal user can read this file. It should only be readable
959        by the <literal>root</literal> user, which is always the case, and by
960        <application>PyKota</application> administrators. In addition,
961        users for which <application>CUPS</application> doesn't run as user <literal>root</literal> will
962        have to ensure that the user their printing system is run as
963        can read both of these files. An easy way to do so is to put the <literal>lp</literal> user
964        (for example) into the <literal>pykota</literal> system group, then
965        to give the correct permissions to <application>PyKota</application>'s configuration files :
966        <screen>
967    $ chown -R pykota.pykota ~pykota/
968    $ chmod 750 ~pykota/
969    $ chmod 644 ~pykota/pykota.conf
970    $ chmod 640 ~pykota/pykotadmin.conf
971        </screen>
972
973        <warning>
974          <title>Warning</title>
975          <para>
976            All the users allowed to read the <filename>~pykota/pykotadmin.conf</filename>
977            are considered to be <application>PyKota</application> administrators. So be
978            careful with these files permissions.
979          </para>
980        </warning>
981      </para>
982
983      <para>
984        On some systems, you may be able to strenghten permissions like this :
985        <screen>
986    $ chown -R pykota.pykota ~pykota/
987    $ chmod 750 ~pykota/
988    $ chmod 640 ~pykota/pykota.conf
989    $ chmod 600 ~pykota/pykotadmin.conf
990        </screen>
991      </para>
992
993      <para>
994        And on other ones, you may need to relax them, and change the files' owner :
995        <screen>
996    $ chown pykota.pykota ~pykota/
997    $ chmod 755 ~pykota/
998    $ chown lp.pykota ~pykota/pykota.conf
999    $ chmod 640 ~pykota/pykota.conf
1000    $ chown lp.pykota ~pykota/pykotadmin.conf
1001    $ chmod 640 ~pykota/pykotadmin.conf
1002        </screen>
1003      </para>
1004
1005      <para>
1006        This all depends on the printing system you are using, and the user the
1007        printing system is usually running as. You need to remember three things :
1008
1009        <itemizedlist>
1010          <listitem>
1011            <para>
1012              The user your printing system runs as MUST be allowed to read
1013              both <application>PyKota</application>'s configuration files.
1014            </para>
1015          </listitem>
1016          <listitem>
1017            <para>
1018              Any user who can read <filename>pykotadmin.conf</filename>
1019              is a <application>PyKota</application> administrator, and
1020              can do whatever he wants to the print quota database.
1021            </para>
1022          </listitem>
1023          <listitem>
1024            <para>
1025              If <filename>cupsd.conf</filename> contains <literal>RunAsUser</literal>, then
1026              you won't be able to authenticate users with <command>pknotify</command> and <command>pykoticon</command>.
1027              Also in this case you may have to make <application>PyKota</application>'s configuration files
1028              owned by the user <application>CUPS</application> runs as.
1029            </para>
1030          </listitem>
1031        </itemizedlist>
1032      </para>
1033
1034      <para>
1035        Don't forget to restart your print server sofware if you changed group membership for the user it runs
1036        as, otherwise your change wouldn't be taken into account.
1037      </para>
1038
1039      <para>
1040        Now depending on your printing system, the configuration to do is particular.
1041        We will now see how to plug PyKota into <application>CUPS</application> since <application>LPRng</application>
1042        is not supported anymore.
1043      </para>
1044
1045      <sect3>
1046        <title>With CUPS</title>
1047
1048        <para>
1049          From version 1.16alpha7 on, configuring <application>PyKota</application> to integrate
1050          within <application>CUPS</application> is more than easy.
1051        </para>
1052
1053        <para>
1054          You just have to create a symbolic link to the <command>cupspykota</command>
1055          command in <application>CUPS</application>' backend directory :
1056          <screen>
1057    $ cd /usr/lib/cups/backend
1058    $ ln -s /usr/share/pykota/cupspykota cupspykota
1059          </screen>
1060        </para>
1061
1062        <para>
1063          If you use CUPS v1.2 or higher, you must
1064          also type the following command to allow the <command>cupspykota</command>
1065          backend to correctly support other backends which must be run
1066          as the root user (e.g. the <command>lpd</command> backend) :
1067          <screen>
1068    $ chmod 700 /usr/share/pykota/cupspykota
1069          </screen>
1070        </para>
1071
1072        <para>
1073          You have to restart <application>CUPS</application> for this modification to
1074          take effect :
1075          <screen>
1076    $ /etc/init.d/cupsys restart
1077          </screen>
1078        </para>
1079
1080        <para>
1081          Now point your web browser to CUPS configuration page, usually at
1082          <ulink url="http://localhost:631">http://localhost:631</ulink> on
1083          your print server.
1084        </para>
1085
1086        <para>
1087          Then when creating new printers or reconfiguring existing ones, just
1088          choose devices which are <literal>PyKota managed</literal>
1089          <footnote>
1090            <para>
1091              Debian 3.0 Woody is known to have problems : CUPS 1.1.14 doesn't automatically
1092              detect <literal>PyKota managed</literal> devices. So you have to manually
1093              modify CUPS' <filename>printers.conf</filename> file as explained in
1094              PyKota's toplevel <filename>README</filename> file.
1095            </para>
1096          </footnote>
1097          instead of
1098          normal devices. You've got one <literal>PyKota managed</literal> device
1099          for each regular device available from CUPS, so just choose the appropriate
1100          one.
1101        </para>
1102
1103        <para>
1104          Repeat the above procedure for each print queue on which you want to use
1105          PyKota. That's all !
1106        </para>
1107
1108        <sect4>
1109          <title>Troubleshooting</title>
1110          <para>
1111            In case of problem, the simplest way to solve it is currently
1112            to ask on PyKota's mailing list, describing the symptoms, as
1113            well as the hardware and software you use.
1114          </para>
1115
1116          <para>
1117            A searchable FAQ is now available at
1118            <ulink url="http://otrs.librelogiciel.com/otrs/public.pl">http://otrs.librelogiciel.com/public.pl</ulink>.
1119            A FAQ entry explaining in great details how to diagnose a problem correctly is
1120            available at
1121            <ulink url="http://otrs.librelogiciel.com/otrs/public.pl?ID=2">http://otrs.librelogiciel.com/public.pl?ID=2</ulink>.
1122          </para>
1123
1124          <para>
1125            You can also ask questions on IRC :
1126            <screen>
1127    /server irc.freenode.net
1128    /join #pykota
1129            </screen>
1130          </para>
1131        </sect4>
1132
1133      </sect3>
1134
1135    </sect2>
1136  </sect1>
1137</chapter>
1138
Note: See TracBrowser for help on using the browser.