Code

info about how roundup is installed
[roundup.git] / doc / installation.txt
1 ==================
2 Installing Roundup
3 ==================
5 :Version: $Revision: 1.67 $
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 Roundup requires Python 2.1.3 or newer with a functioning anydbm or
35 bsddb module. Download the latest version from http://www.python.org/.
36 It is highly recommended that users install the latest patch version
37 of python 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. `UNIX environment steps`_ to take if you're installing on a shared
97    UNIX machine and want to restrict local access to roundup
98 6. `additional language codecs`_
100 For information about how Roundup installs, see the `maintenance
101 documentation`_.
104 Basic Installation Steps
105 ------------------------
107 To install the Roundup support code into your Python tree and
108 Roundup scripts into /usr/local/bin (substitute that path for whatever is
109 appropriate on your system). You need to have write permissions
110 for these locations, eg. being root on unix::
112     python setup.py install
114 If you would like to place the Roundup scripts in a directory other
115 than ``/usr/local/bin``, then specify the preferred location with
116 ``--install-script``. For example, to install them in
117 ``/opt/roundup/bin``::
119     python setup.py install --install-scripts=/opt/roundup/bin
121 You can also use the ``--prefix`` option to use a completely different
122 base directory, if you do not want to use administrator rights. If you
123 choose to do this, take note of the message at the end of installation
124 and modify the python path accordingly.
127 Configuring your first tracker
128 ------------------------------
130 1. To create a Roundup tracker (necessary to do before you can
131    use the software in any real fashion), you need to set up a "tracker
132    home":
134    a. (Optional) If you intend to keep your roundup trackers
135       under one top level directory which does not exist yet,
136       you should create that directory now.  Example::
138          mkdir /opt/roundup/trackers
140    b. Either add the Roundup script location to your ``PATH``
141       environment variable or specify the full path to
142       the command in the next step.
144    c. Install a new tracker with the command ``roundup-admin install``.
145       You will be asked a series of questions.  Descriptions of the provided
146       templates can be found in `choosing your template`_ below.  Descriptions
147       of the available backends can be found in `choosing your backend`_
148       below.  The questions will be something like (you may have more
149       templates or backends available)::
151           Enter tracker home: /opt/roundup/trackers/support
152           Templates: classic
153           Select template [classic]: classic
154           Back ends: anydbm, bsddb
155           Select backend [anydbm]: anydbm
157       The "support" part of the tracker name can be anything you want - it
158       is going to be used as the directory that the tracker information
159       will be stored in.
161       You will now be directed to edit the tracker configuration and
162       initial schema.  At a minimum, you must set ``MAILHOST``,
163       ``TRACKER_WEB``, ``MAIL_DOMAIN`` and ``ADMIN_EMAIL``. Note that the
164       configuration file uses Python syntax, so almost every value must be
165       ``'quoted'`` using single or double quotes. If you get stuck, and get
166       configuration file errors, then see the `tracker configuration`_ section
167       of the `customisation documentation`_.
169       If you just want to get set up to test things quickly (and follow
170       the instructions in step 3 below), you can even just set the
171       TRACKER_WEB variable to::
173          TRACKER_WEB = 'http://localhost:8080/support/'
175       The URL *must* end in a '/', or your web interface *will not work*.
176       See `Customising Roundup`_ for details on configuration and schema
177       changes. Note that you may change any of the configuration after
178       you've initialised the tracker - it's just better to have valid values
179       for this stuff now.
181    d. Initialise the tracker database with ``roundup-admin initialise``.
182       You will need to supply an admin password at this step. You will be
183       prompted::
185           Admin Password:
186                  Confirm:
188       Once this is done, the tracker has been created.
190 2. At this point, your tracker is set up, but doesn't have a nice user
191    interface. To set that up, we need to `configure a web interface`_ and
192    optionally `configure an email interface`_. If you want to try your
193    new tracker out, assuming ``TRACKER_WEB`` is set to
194    ``'http://localhost:8080/support/'``, run::
196      roundup-server support=/opt/roundup/trackers/support
198    then direct your web browser at:
200      http://localhost:8080/support/
202    and you should see the tracker interface.
205 Choosing Your Template
206 ----------------------
208 Classic Template
209 ~~~~~~~~~~~~~~~~
211 The classic template is the one defined in the `Roundup Specification`_. It
212 holds issues which have priorities and statuses. Each issue may also have a
213 set of messages which are disseminated to the issue's list of nosy users.
215 Minimal Template
216 ~~~~~~~~~~~~~~~~
218 The minimal template has the minimum setup required for a tracker
219 installation. That is, it has the configuration files, defines a user database
220 and the basic HTML interface to that. It's a completely clean slate for you to
221 create your tracker on.
224 Choosing Your Backend
225 ---------------------
227 The actual storage of Roundup tracker information is handled by backends.
228 There's several to choose from, each with benefits and limitations:
230 **anydbm**
231   This backend is guaranteed to work on any system that Python runs on. It
232   will generally choose the best dbm backend that is available on your system
233   (from the list dbhash, gdbm, dbm, dumbdbm). It is the least scaleable of all
234   backends, but performs well enough for a smallish tracker (a couple of
235   thousand issues, under fifty users, ...).
236 **bsddb**
237   This effectively the same as anydbm, but uses the bsddb backend. This allows
238   it to gain some performance and scaling benefits.
239 **bsddb3**
240   Again, this effectively the same as anydbm, but uses the bsddb3 backend.
241   This allows it to gain some performance and scaling benefits.
242 **sqlite**
243   This uses the SQLite_ embedded RDBMS to provide a fast, scaleable backend.
244   There are no limitations, and it's much faster and more scaleable than the
245   dbm backends.
246 **mysql**
247   Backend for popular RDBMS MySQL. According to benchmarks, this backend works
248   much faster than any of \*dbm ones, but slightly slower than metakit and
249   sqlite. You must read doc/mysql.txt for additional installation steps and
250   requirements.
251 **postgresql**
252   Backend for popular RDBMS PostgreSQL. According to benchmarks, this
253   backend works much faster than any of \*dbm ones and mysql, but slightly
254   slower than metakit and sqlite. You must read doc/postgresql.txt for
255   additional installation steps and requirements.
256 **metakit**
257   This backend is implemented over the metakit_ storage system, using Mk4Py as
258   the interface. It scales much better than the dbm backends.
260 You should be wary of using all but the mysql backend with high-volume trackers 
261 (requests every second or two) as database locking is done on the whole
262 database.
264 You may set your tracker up with the anydbm backend (which is guaranteed to be
265 available) and switch to one of the other backends at any time using the
266 instructions in the `maintenance documentation`_.
269 Configure a Web Interface
270 -------------------------
272 There are three web interfaces to choose from:
274 1. `web server cgi-bin`_
275 2. `stand-alone web server`_
276 3. `Zope product - ZRoundup`_
278 You may need to give the web server user permission to access the tracker home
279 - see the `UNIX environment steps`_ for information. You may also need to
280 configure your system in some way - see `platform-specific notes`_.
283 Web Server cgi-bin
284 ~~~~~~~~~~~~~~~~~~
286 A benefit of using the cgi-bin approach is that it's the easiest way to
287 restrict access to your tracker to only use HTTPS. Access will be slower
288 than through the `stand-alone web server`_ though.
290 Note that if your Python isn't install as "python" then you'll need to edit
291 the ``roundup.cgi`` script to fix the first line.
293 If you're using IIS on a Windows platform, you'll need to run this command
294 for the cgi to work (it turns on the PATH_INFO cgi variable)::
296     adsutil.vbs set w3svc/AllowPathInfoForScriptMappings TRUE
298 The ``adsutil.vbs`` file can be found in either ``c:\inetpub\adminscripts`` 
299 or ``c:\winnt\system32\inetsrv\adminsamples\`` or
300 ``c:\winnt\system32\inetsrv\adminscripts\`` depending on your installation.
302 Copy the ``cgi-bin/roundup.cgi`` file to your web server's ``cgi-bin``
303 directory. You will need to configure it to tell it where your tracker home
304 is. You can do this either:
306 through an environment variable
307  set the variable TRACKER_HOMES to be a colon (":") separated list of
308  name=home pairs (if you're using apache, the SetEnv directive can do this)
309 directly in the ``roundup.cgi`` file itself
310  add your instance to the TRACKER_HOMES variable as ``'name': 'home'``
312 The "name" part of the configuration will appear in the URL and identifies the
313 tracker (so you may have more than one tracker per cgi-bin script). Make sure
314 there are no spaces or other illegal characters in it (to be safe, stick to
315 letters and numbers). The "name" forms part of the URL that appears in the
316 tracker config TRACKER_WEB variable, so make sure they match. The "home"
317 part of the configuration is the tracker home directory.
319 Stand-alone Web Server
320 ~~~~~~~~~~~~~~~~~~~~~~
322 This approach will give you the fastest of the three web interfaces. You may
323 investigate using ProxyPass or similar configuration in apache to have your
324 tracker accessed through the same URL as other systems.
326 The stand-alone web server is started with the command ``roundup-server``. It
327 has several options - display them with ``roundup-server -h``.
329 The tracker home configuration is similar to the cgi-bin - you may either edit
330 the script to change the TRACKER_HOMES variable or you may supply the
331 name=home values on the command-line after all the other options.
333 To make the server run in the background, use the "-d" option, specifying the
334 name of a file to write the server process id (pid) to.
337 Zope Product - ZRoundup
338 ~~~~~~~~~~~~~~~~~~~~~~~
340 ZRoundup installs as a regular Zope product. Copy the ZRoundup directory to
341 your Products directory either in INSTANCE_HOME/Products or the Zope
342 code tree lib/python/Products.
344 When you next (re)start up Zope, you will be able to add a ZRoundup object
345 that interfaces to your new tracker.
348 Configure an Email Interface
349 ----------------------------
351 If you don't want to use the email component of Roundup, then remove the
352 "``nosyreaction.py``" module from your tracker "``detectors``" directory.
354 See `platform-specific notes`_ for steps that may be needed on your system.
356 There are three supported ways to get emailed issues into the
357 Roundup tracker.  You should pick ONE of the following, all
358 of which will continue my example setup from above:
360 As a mail alias pipe process 
361 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363 Set up a mail alias called "issue_tracker" as (include the quote marks):
364 "``|/usr/bin/python /usr/local/bin/roundup-mailgw <tracker_home>``"
366 In some installations (e.g. RedHat 6.2 I think) you'll need to set up smrsh so
367 sendmail will accept the pipe command. In that case, symlink
368 ``/etc/smrsh/roundup-mailgw`` to "``/usr/local/bin/roundup-mailgw``" and change
369 the command to::
371     |roundup-mailgw /opt/roundup/trackers/support
372  
373 To test the mail gateway on unix systems, try::
375     echo test |mail -s '[issue] test' support@YOUR_DOMAIN_HERE
377 As a regular job using a mailbox source
378 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
380 Set ``roundup-mailgw`` up to run every 10 minutes or so. For example::
382   0,10,20,30,40,50 * * * * /usr/local/bin/roundup-mailgw /opt/roundup/trackers/support mailbox <mail_spool_file>
384 Where the ``mail_spool_file`` argument is the location of the roundup submission
385 user's mail spool. On most systems, the spool for a user "issue_tracker"
386 will be "``/var/mail/issue_tracker``".
388 As a regular job using a POP source
389 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
391 To retrieve from a POP mailbox, use a *cron* entry similar to the mailbox one::
393   0,10,20,30,40,50 * * * * /usr/local/bin/roundup-mailgw /opt/roundup/trackers/support pop <pop_spec>
395 where pop_spec is "``username:password@server``" that specifies the roundup
396 submission user's POP account name, password and server.
398 On windows, you would set up the command using the windows scheduler.
401 UNIX Environment Steps
402 ----------------------
404 Each tracker ideally should have its own UNIX group, so create
405 a UNIX group (edit ``/etc/group`` or your appropriate NIS map if
406 you're using NIS).  To continue with my examples so far, I would
407 create the UNIX group 'support', although the name of the UNIX
408 group does not have to be the same as the tracker name.  To this
409 'support' group I then add all of the UNIX usernames who will be
410 working with this Roundup tracker.  In addition to 'real' users,
411 the Roundup email gateway will need to have permissions to this
412 area as well, so add the user your mail service runs as to the
413 group (typically "mail" or "daemon").  The UNIX group might then
414 look like::
416      support:*:1002:jblaine,samh,geezer,mail
418 If you intend to use the web interface (as most people do), you
419 should also add the username your web server runs as to the group.
420 My group now looks like this::
422      support:*:1002:jblaine,samh,geezer,mail,apache
424 The tracker "db" directory should be chmod'ed g+sw so that the group can
425 write to the database, and any new files created in the database will be owned
426 by the group.
428 An alternative to the above is to create a new user who has the sole
429 responsibility of running roundup. This user:
431 1. runs the CGI interface daemon
432 2. runs regular polls for email
433 3. runs regular checks (using cron) to ensure the daemon is up
434 4. optionally has no login password so that nobody but the "root" user
435    may actually login and play with the roundup setup.
438 Additional Language Codecs
439 --------------------------
441 If you intend to send messages to Roundup that use Chinese, Japanese or
442 Korean encodings the you'll need to obtain CJKCodecs from
443 http://cjkpython.berlios.de/
446 Maintenance
447 ===========
449 Read the separate `maintenance documentation`_ for information about how to
450 perform common maintenance tasks with Roundup.
453 Upgrading
454 =========
456 Read the separate `upgrading document`_, which describes the steps needed to
457 upgrade existing tracker trackers for each version of Roundup that is
458 released.
461 Further Reading
462 ===============
464 If you intend to use Roundup with anything other than the defualt
465 templates, if you would like to hack on Roundup, or if you would
466 like implementation details, you should read `Customising Roundup`_.
469 Running Multiple Trackers
470 =========================
472 Things to think about before you jump off the deep end and install
473 multiple trackers, which involve additional URLs, user databases, email
474 addresses, databases to back up, etc.
476 1. Do you want a tracker per product you sell/support? You can just add
477    a new property to your issues called Product, and filter by that.
478 2. Do you want to track internal software development issues and customer
479    support issues separately? You can just set up an additiona "issue"
480    class called "cust_issues" in the same tracker, mimicing the normal
481    "issue" class, but with different properties.
484 Platform-Specific Notes
485 =======================
487 Windows command-line tools
488 --------------------------
490 To make the command-line tools accessible in Windows, you need to update
491 the "Path" environment variable in the Registry via a dialog box.
493 On Windows 2000 and later:
495 1) Press the "Start" button.
496 2) Choose "Settings"
497 3) Choose "Control Panel"
498 4) Choose "System"
499 5) Choose "Advanced"
500 6) Choose "Environmental Variables"
501 7) Add: "<dir>\Scripts" to the "Path" environmental variable.
503 Where <dir> in 7) is the root directory (e.g., ``C:\Python22\Scripts``)
504 of your Python installation.
506 I understand that in XP, 2) above is not needed as "Control
507 Panel" is directly accessible from "Start".
509 I do not believe this is possible to do in previous versions of Windows.
512 Windows Server
513 --------------
515 To have the Roundup web server start up when your machine boots up, set the
516 following up in Scheduled Tasks (note, the following is for a cygwin setup):
518 Run
519  ``c:\cygwin\bin\bash.exe -c "roundup-server TheProject=/opt/roundup/trackers/support"``
520 Start In
521  ``C:\cygwin\opt\roundup\bin``
522 Schedule
523  At System Startup
525 To have the Roundup mail gateway run periodically to poll a POP email address,
526 set the following up in Scheduled Tasks:
528 Run
529  ``c:\cygwin\bin\bash.exe -c "roundup-mailgw /opt/roundup/trackers/support pop roundup:roundup@mail-server"``
530 Start In
531  ``C:\cygwin\opt\roundup\bin``
532 Schedule
533  Every 10 minutes from 5:00AM for 24 hours every day
534  Stop the task if it runs for 8 minutes
537 Sendmail smrsh
538 --------------
540 If you use Sendmail's ``smrsh`` mechanism, you will need to tell
541 smrsh that roundup-mailgw is a valid/trusted mail handler
542 before it will work.
544 This is usually done via the following 2 steps:
546 1. make a symlink in ``/etc/smrsh`` called ``roundup-mailgw``
547    which points to the full path of your actual ``roundup-mailgw``
548    script.
550 2. change your alias to ``"|roundup-mailgw <tracker_home>"``
553 Linux
554 -----
556 Make sure you read the instructions under `UNIX environment steps`_.
558 Python 2.1.1 as shipped with SuSE7.3 might be missing module
559 ``_weakref``.
562 Solaris
563 -------
565 You'll need to build Python.
567 Make sure you read the instructions under `UNIX environment steps`_.
570 -------------------------------------------------------------------------------
572 Back to `Table of Contents`_
574 Next: `User Guide`_
576 .. _`table of contents`: index.html
577 .. _`user guide`: user_guide.html
578 .. _`roundup specification`: spec.html
579 .. _`tracker configuration`: customizing.html#tracker-configuration
580 .. _`customisation documentation`: customizing.html
581 .. _`customising roundup`: customizing.html
582 .. _`upgrading document`: upgrading.html
583 .. _`maintenance documentation`: maintenance.html
584 .. _sqlite: http://www.hwaci.com/sw/sqlite/
585 .. _metakit: http://www.equi4.com/metakit/