Code

clarified minimum version required for MySQL backend (4.0.16)
[roundup.git] / doc / installation.txt
1 ==================
2 Installing Roundup
3 ==================
5 :Version: $Revision: 1.65 $
7 .. contents::
10 Overview
11 ========
13 Broken out separately, there are several conceptual pieces to a
14 Roundup installation:
16 Roundup trackers
17  Trackers consist of issues (be they bug reports or otherwise), tracker
18  configuration file(s), web HTML files etc. Roundup trackers are initialised
19  with a "Template" which defines the fields usable/assignable on a
20  per-issue basis.  Descriptions of the provided templates are given in
21  `choosing your template`_.
23 Roundup support code
24  Installed into your Python install's lib directory
26 Roundup scripts
27  These include the email gateway, the roundup
28  HTTP server, the roundup administration command-line interface, etc.
31 Prerequisites
32 =============
34 Python 2.1.3 or newer with a functioning anydbm or bsddb module. Download the
35 latest version from http://www.python.org/. It is highly recommended that
36 users install the latest patch version of python - 2.1.3, 2.2.3 or 2.3.2 -
37 as these contain many fixes to serious bugs.
39 If you want to use Berkeley DB bsddb3 with Roundup, use version 3.3.0 or
40 later. Download the latest version from http://pybsddb.sourceforge.net/.
42 If you're on windows, you will either need to be using the ActiveState python
43 distribution (at http://www.activestate.com/Products/ActivePython/), or you'll
44 have to install the win32all package separately (get it from
45 http://starship.python.net/crew/mhammond/win32/).
48 Getting Roundup
49 ===============
51 Download the latest version from http://roundup.sf.net/.
53 Testing your Python
54 -------------------
56 Once you've unpacked roundup's source, run ``python run_tests.py`` in the
57 source directory and make sure there are no errors. If there are errors,
58 please let us know!
60 If the above fails, you may be using the wrong version of python. Try
61 ``python2 run_tests.py``. If that works, you will need to substitute
62 ``python2`` for ``python`` in all further commands you use in relation to
63 Roundup -- from installation and scripts.
66 For The Really Impatient
67 ========================
69 If you just want to give Roundup a whirl Right Now, then simply run
70 ``python demo.py``. This will set up a simple demo tracker on your
71 machine. When it's done, it'll print out a URL to point your web browser
72 at so you may start playing. Three users will be set up:
74 1. anonymous - the "default" user with permission to do very little
75 2. demo (password "demo") - a normal user who may create issues
76 3. admin (password "admin") - an administrative user who has complete
77    access to the tracker
80 Installation
81 ============
83 :Note: Some systems, such as Debian and NetBSD, already have Roundup
84        installed. Try running the command "roundup-admin" with no arguments,
85        and if it runs you may skip the `Basic Installation Steps`_
86        below and go straight to `configuring your first tracker`_.
88 Set aside 15-30 minutes. Please make sure you're using a supported version of
89 Python -- see `testing your python`_. There's several steps to follow in your
90 installation:
92 1. `basic installation steps`_ if Roundup is not installed on your system
93 2. `configuring your first tracker`_ that all installers must follow
94 3. then optionally `configure a web interface`_
95 4. and optionally `configure an email interface`_
96 5. `shared environment steps`_ to take if you're installing on a shared
97    UNIX machine and want to restrict local access to roundup
100 Basic Installation Steps
101 ------------------------
103 To install the Roundup support code into your Python tree and
104 Roundup scripts into /usr/local/bin (substitute that path for whatever is
105 appropriate on your system). You need to have write permissions
106 for these locations, eg. being root on unix::
108     python setup.py install
110 If you would like to place the Roundup scripts in a directory other
111 than ``/usr/local/bin``, then specify the preferred location with
112 ``--install-script``. For example, to install them in
113 ``/opt/roundup/bin``::
115     python setup.py install --install-scripts=/opt/roundup/bin
117 You can also use the ``--prefix`` option to use a completely different
118 base directory, if you do not want to use administrator rights. If you
119 choose to do this, take note of the message at the end of installation
120 and modify the python path accordingly.
123 Configuring your first tracker
124 ------------------------------
126 1. To create a Roundup tracker (necessary to do before you can
127    use the software in any real fashion), you need to set up a "tracker
128    home":
130    a. (Optional) If you intend to keep your roundup trackers
131       under one top level directory which does not exist yet,
132       you should create that directory now.  Example::
134          mkdir /opt/roundup/trackers
136    b. Either add the Roundup script location to your ``PATH``
137       environment variable or specify the full path to
138       the command in the next step.
140    c. Install a new tracker with the command ``roundup-admin install``.
141       You will be asked a series of questions.  Descriptions of the provided
142       templates can be found in `choosing your template`_ below.  Descriptions
143       of the available backends can be found in `choosing your backend`_
144       below.  The questions will be something like (you may have more
145       templates or backends available)::
147           Enter tracker home: /opt/roundup/trackers/support
148           Templates: classic
149           Select template [classic]: classic
150           Back ends: anydbm, bsddb
151           Select backend [anydbm]: anydbm
153       The "support" part of the tracker name can be anything you want - it
154       is going to be used as the directory that the tracker information
155       will be stored in.
157       You will now be directed to edit the tracker configuration and
158       initial schema.  At a minimum, you must set ``MAILHOST``,
159       ``TRACKER_WEB``, ``MAIL_DOMAIN`` and ``ADMIN_EMAIL``. Note that the
160       configuration file uses Python syntax, so almost every value must be
161       ``'quoted'`` using single or double quotes. If you get stuck, and get
162       configuration file errors, then see the `tracker configuration`_ section
163       of the `customisation documentation`_.
165       If you just want to get set up to test things quickly (and follow
166       the instructions in step 3 below), you can even just set the
167       TRACKER_WEB variable to::
169          TRACKER_WEB = 'http://localhost:8080/support/'
171       The URL *must* end in a '/', or your web interface *will not work*.
172       See `Customising Roundup`_ for details on configuration and schema
173       changes. Note that you may change any of the configuration after
174       you've initialised the tracker - it's just better to have valid values
175       for this stuff now.
177    d. Initialise the tracker database with ``roundup-admin initialise``.
178       You will need to supply an admin password at this step. You will be
179       prompted::
181           Admin Password:
182                  Confirm:
184       Once this is done, the tracker has been created.
186 2. At this point, your tracker is set up, but doesn't have a nice user
187    interface. To set that up, we need to `configure a web interface`_ and
188    optionally `configure an email interface`_. If you want to try your
189    new tracker out, assuming ``TRACKER_WEB`` is set to
190    ``'http://localhost:8080/support/'``, run::
192      roundup-server support=/opt/roundup/trackers/support
194    then direct your web browser at:
196      http://localhost:8080/support/
198    and you should see the tracker interface.
201 Choosing Your Template
202 ----------------------
204 Classic Template
205 ~~~~~~~~~~~~~~~~
207 The classic template is the one defined in the `Roundup Specification`_. It
208 holds issues which have priorities and statuses. Each issue may also have a
209 set of messages which are disseminated to the issue's list of nosy users.
211 Minimal Template
212 ~~~~~~~~~~~~~~~~
214 The minimal template has the minimum setup required for a tracker
215 installation. That is, it has the configuration files, defines a user database
216 and the basic HTML interface to that. It's a completely clean slate for you to
217 create your tracker on.
220 Choosing Your Backend
221 ---------------------
223 The actual storage of Roundup tracker information is handled by backends.
224 There's several to choose from, each with benefits and limitations:
226 **anydbm**
227   This backend is guaranteed to work on any system that Python runs on. It
228   will generally choose the best dbm backend that is available on your system
229   (from the list dbhash, gdbm, dbm, dumbdbm). It is the least scaleable of all
230   backends, but performs well enough for a smallish tracker (a couple of
231   thousand issues, under fifty users, ...).
232 **bsddb**
233   This effectively the same as anydbm, but uses the bsddb backend. This allows
234   it to gain some performance and scaling benefits.
235 **bsddb3**
236   Again, this effectively the same as anydbm, but uses the bsddb3 backend.
237   This allows it to gain some performance and scaling benefits.
238 **sqlite**
239   This uses the SQLite_ embedded RDBMS to provide a fast, scaleable backend.
240   There are no limitations, and it's much faster and more scaleable than the
241   dbm backends.
242 **mysql**
243   Backend for popular RDBMS MySQL. According to benchmarks, this backend works
244   much faster than any of \*dbm ones, but slightly slower than metakit and
245   sqlite. You must read doc/mysql.txt for additional installation steps and
246   requirements.
247 **postgresql**
248   Backend for popular RDBMS PostgreSQL. According to benchmarks, this
249   backend works much faster than any of \*dbm ones and mysql, but slightly
250   slower than metakit and sqlite. You must read doc/postgresql.txt for
251   additional installation steps and requirements.
252 **metakit**
253   This backend is implemented over the metakit_ storage system, using Mk4Py as
254   the interface. It scales much better than the dbm backends.
256 You should be wary of using all but the mysql backend with high-volume trackers 
257 (requests every second or two) as database locking is done on the whole
258 database.
260 You may set your tracker up with the anydbm backend (which is guaranteed to be
261 available) and switch to one of the other backends at any time using the
262 instructions in the `maintenance documentation`_.
265 Configure a Web Interface
266 -------------------------
268 There are three web interfaces to choose from:
270 1. `web server cgi-bin`_
271 2. `stand-alone web server`_
272 3. `Zope product - ZRoundup`_
274 You may need to give the web server user permission to access the tracker home
275 - see the `shared environment steps`_ for information. You may also need to
276 configure your system in some way - see `platform-specific notes`_.
279 Web Server cgi-bin
280 ~~~~~~~~~~~~~~~~~~
282 A benefit of using the cgi-bin approach is that it's the easiest way to
283 restrict access to your tracker to only use HTTPS. Access will be slower
284 than through the `stand-alone web server`_ though.
286 Note that if your Python isn't install as "python" then you'll need to edit
287 the ``roundup.cgi`` script to fix the first line.
289 If you're using IIS on a Windows platform, you'll need to run this command
290 for the cgi to work (it turns on the PATH_INFO cgi variable)::
292     adsutil.vbs set w3svc/AllowPathInfoForScriptMappings TRUE
294 The ``adsutil.vbs`` file can be found in either ``c:\inetpub\adminscripts`` 
295 or ``c:\winnt\system32\inetsrv\adminsamples\`` or
296 ``c:\winnt\system32\inetsrv\adminscripts\`` depending on your installation.
298 Copy the ``cgi-bin/roundup.cgi`` file to your web server's ``cgi-bin``
299 directory. You will need to configure it to tell it where your tracker home
300 is. You can do this either:
302 through an environment variable
303  set the variable TRACKER_HOMES to be a colon (":") separated list of
304  name=home pairs (if you're using apache, the SetEnv directive can do this)
305 directly in the ``roundup.cgi`` file itself
306  add your instance to the TRACKER_HOMES variable as ``'name': 'home'``
308 The "name" part of the configuration will appear in the URL and identifies the
309 tracker (so you may have more than one tracker per cgi-bin script). Make sure
310 there are no spaces or other illegal characters in it (to be safe, stick to
311 letters and numbers). The "name" forms part of the URL that appears in the
312 tracker config TRACKER_WEB variable, so make sure they match. The "home"
313 part of the configuration is the tracker home directory.
315 Stand-alone Web Server
316 ~~~~~~~~~~~~~~~~~~~~~~
318 This approach will give you the fastest of the three web interfaces. You may
319 investigate using ProxyPass or similar configuration in apache to have your
320 tracker accessed through the same URL as other systems.
322 The stand-alone web server is started with the command ``roundup-server``. It
323 has several options - display them with ``roundup-server -h``.
325 The tracker home configuration is similar to the cgi-bin - you may either edit
326 the script to change the TRACKER_HOMES variable or you may supply the
327 name=home values on the command-line after all the other options.
329 To make the server run in the background, use the "-d" option, specifying the
330 name of a file to write the server process id (pid) to.
333 Zope Product - ZRoundup
334 ~~~~~~~~~~~~~~~~~~~~~~~
336 ZRoundup installs as a regular Zope product. Copy the ZRoundup directory to
337 your Products directory either in INSTANCE_HOME/Products or the Zope
338 code tree lib/python/Products.
340 When you next (re)start up Zope, you will be able to add a ZRoundup object
341 that interfaces to your new tracker.
344 Configure an Email Interface
345 ----------------------------
347 If you don't want to use the email component of Roundup, then remove the
348 "``nosyreaction.py``" module from your tracker "``detectors``" directory.
350 See `platform-specific notes`_ for steps that may be needed on your system.
352 There are three supported ways to get emailed issues into the
353 Roundup tracker.  You should pick ONE of the following, all
354 of which will continue my example setup from above:
356 As a mail alias pipe process 
357 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
359 Set up a mail alias called "issue_tracker" as (include the quote marks):
360 "``|/usr/bin/python /usr/local/bin/roundup-mailgw <tracker_home>``"
362 In some installations (e.g. RedHat 6.2 I think) you'll need to set up smrsh so
363 sendmail will accept the pipe command. In that case, symlink
364 ``/etc/smrsh/roundup-mailgw`` to "``/usr/local/bin/roundup-mailgw``" and change
365 the command to::
367     |roundup-mailgw /opt/roundup/trackers/support
368  
369 To test the mail gateway on unix systems, try::
371     echo test |mail -s '[issue] test' support@YOUR_DOMAIN_HERE
373 As a regular job using a mailbox source
374 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
376 Set ``roundup-mailgw`` up to run every 10 minutes or so. For example::
378   0,10,20,30,40,50 * * * * /usr/local/bin/roundup-mailgw /opt/roundup/trackers/support mailbox <mail_spool_file>
380 Where the ``mail_spool_file`` argument is the location of the roundup submission
381 user's mail spool. On most systems, the spool for a user "issue_tracker"
382 will be "``/var/mail/issue_tracker``".
384 As a regular job using a POP source
385 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
387 To retrieve from a POP mailbox, use a *cron* entry similar to the mailbox one::
389   0,10,20,30,40,50 * * * * /usr/local/bin/roundup-mailgw /opt/roundup/trackers/support pop <pop_spec>
391 where pop_spec is "``username:password@server``" that specifies the roundup
392 submission user's POP account name, password and server.
394 On windows, you would set up the command using the windows scheduler.
397 Shared Environment Steps
398 ------------------------
400 Each tracker ideally should have its own UNIX group, so create
401 a UNIX group (edit ``/etc/group`` or your appropriate NIS map if
402 you're using NIS).  To continue with my examples so far, I would
403 create the UNIX group 'support', although the name of the UNIX
404 group does not have to be the same as the tracker name.  To this
405 'support' group I then add all of the UNIX usernames who will be
406 working with this Roundup tracker.  In addition to 'real' users,
407 the Roundup email gateway will need to have permissions to this
408 area as well, so add the user your mail service runs as to the
409 group (typically "mail" or "daemon").  The UNIX group might then
410 look like::
412      support:*:1002:jblaine,samh,geezer,mail
414 If you intend to use the web interface (as most people do), you
415 should also add the username your web server runs as to the group.
416 My group now looks like this::
418      support:*:1002:jblaine,samh,geezer,mail,apache
420 The tracker "db" directory should be chmod'ed g+sw so that the group can
421 write to the database, and any new files created in the database will be owned
422 by the group.
424 An alternative to the above is to create a new user who has the sole
425 responsibility of running roundup. This user:
427 1. runs the CGI interface daemon
428 2. runs regular polls for email
429 3. runs regular checks (using cron) to ensure the daemon is up
430 4. optionally has no login password so that nobody but the "root" user
431    may actually login and play with the roundup setup.
434 Maintenance
435 ===========
437 Read the separate `maintenance documentation`_ for information about how to
438 perform common maintenance tasks with Roundup.
441 Upgrading
442 =========
444 Read the separate `upgrading document`_, which describes the steps needed to
445 upgrade existing tracker trackers for each version of Roundup that is
446 released.
449 Further Reading
450 ===============
452 If you intend to use Roundup with anything other than the defualt
453 templates, if you would like to hack on Roundup, or if you would
454 like implementation details, you should read `Customising Roundup`_.
457 Running Multiple Trackers
458 =========================
460 Things to think about before you jump off the deep end and install
461 multiple trackers, which involve additional URLs, user databases, email
462 addresses, databases to back up, etc.
464 1. Do you want a tracker per product you sell/support? You can just add
465    a new property to your issues called Product, and filter by that.
466 2. Do you want to track internal software development issues and customer
467    support issues separately? You can just set up an additiona "issue"
468    class called "cust_issues" in the same tracker, mimicing the normal
469    "issue" class, but with different properties.
472 Platform-Specific Notes
473 =======================
475 Windows command-line tools
476 --------------------------
478 To make the command-line tools accessible in Windows, you need to update
479 the "Path" environment variable in the Registry via a dialog box.
481 On Windows 2000 and later:
483 1) Press the "Start" button.
484 2) Choose "Settings"
485 3) Choose "Control Panel"
486 4) Choose "System"
487 5) Choose "Advanced"
488 6) Choose "Environmental Variables"
489 7) Add: "<dir>\Scripts" to the "Path" environmental variable.
491 Where <dir> in 7) is the root directory (e.g., ``C:\Python22\Scripts``)
492 of your Python installation.
494 I understand that in XP, 2) above is not needed as "Control
495 Panel" is directly accessible from "Start".
497 I do not believe this is possible to do in previous versions of Windows.
500 Windows Server
501 --------------
503 To have the Roundup web server start up when your machine boots up, set the
504 following up in Scheduled Tasks (note, the following is for a cygwin setup):
506 Run
507  ``c:\cygwin\bin\bash.exe -c "roundup-server TheProject=/opt/roundup/trackers/support"``
508 Start In
509  ``C:\cygwin\opt\roundup\bin``
510 Schedule
511  At System Startup
513 To have the Roundup mail gateway run periodically to poll a POP email address,
514 set the following up in Scheduled Tasks:
516 Run
517  ``c:\cygwin\bin\bash.exe -c "roundup-mailgw /opt/roundup/trackers/support pop roundup:roundup@mail-server"``
518 Start In
519  ``C:\cygwin\opt\roundup\bin``
520 Schedule
521  Every 10 minutes from 5:00AM for 24 hours every day
522  Stop the task if it runs for 8 minutes
525 Sendmail smrsh
526 --------------
528 If you use Sendmail's ``smrsh`` mechanism, you will need to tell
529 smrsh that roundup-mailgw is a valid/trusted mail handler
530 before it will work.
532 This is usually done via the following 2 steps:
534 1. make a symlink in ``/etc/smrsh`` called ``roundup-mailgw``
535    which points to the full path of your actual ``roundup-mailgw``
536    script.
538 2. change your alias to ``"|roundup-mailgw <tracker_home>"``
541 Linux
542 -----
544 Make sure you read the instructions under `shared environment steps`_.
546 Python 2.1.1 as shipped with SuSE7.3 might be missing module
547 ``_weakref``.
550 Solaris
551 -------
553 You'll need to build Python.
555 Make sure you read the instructions under `shared environment steps`_.
557 -------------------------------------------------------------------------------
559 Back to `Table of Contents`_
561 Next: `User Guide`_
563 .. _`table of contents`: index.html
564 .. _`user guide`: user_guide.html
565 .. _`roundup specification`: spec.html
566 .. _`tracker configuration`: customizing.html#tracker-configuration
567 .. _`customisation documentation`: customizing.html
568 .. _`customising roundup`: customizing.html
569 .. _`upgrading document`: upgrading.html
570 .. _`maintenance documentation`: maintenance.html
571 .. _sqlite: http://www.hwaci.com/sw/sqlite/
572 .. _metakit: http://www.equi4.com/metakit/