File: admin_guide.html

package info (click to toggle)
roundup 1.2.1-10%2Betch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 4,764 kB
  • ctags: 3,756
  • sloc: python: 30,296; sh: 1,497; perl: 23; makefile: 22
file content (685 lines) | stat: -rw-r--r-- 26,770 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Administration Guide</title>
<style type="text/css">

/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
  border: 0 }

table.borderless td, table.borderless th {
  /* Override padding for "table.docutils td" with "! important".
     The right padding separates the table cells. */
  padding: 0 0.5em 0 0 ! important }

.first {
  /* Override more specific margin styles with "! important". */
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em ;
  margin-right: 2em }

div.footer, div.header {
  clear: both;
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin-left: 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

img.align-left {
  clear: left }

img.align-right {
  clear: right }

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font-family: serif ;
  font-size: 100% }

pre.literal-block, pre.doctest-block {
  margin-left: 2em ;
  margin-right: 2em ;
  background-color: #eeeeee }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (h1..h6 element) */
  font-size: 80% }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px }

table.docinfo {
  margin: 2em 4em }

table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }

table.footnote {
  border-left: solid 1px black;
  margin-left: 1px }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

tt.docutils {
  background-color: #eeeeee }

ul.auto-toc {
  list-style-type: none }

</style>
</head>
<body>
<div class="document" id="administration-guide">
<h1 class="title">Administration Guide</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Version:</th>
<td>$Revision$</td></tr>
</tbody>
</table>
<div class="contents topic">
<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#what-does-roundup-install" id="id1" name="id1">What does Roundup install?</a></li>
<li><a class="reference" href="#configuring-roundup-s-logging-of-messages-for-sysadmins" id="id2" name="id2">Configuring Roundup's Logging of Messages For Sysadmins</a></li>
<li><a class="reference" href="#configuring-roundup-server" id="id3" name="id3">Configuring roundup-server</a></li>
<li><a class="reference" href="#users-and-security" id="id4" name="id4">Users and Security</a></li>
<li><a class="reference" href="#tasks" id="id5" name="id5">Tasks</a><ul>
<li><a class="reference" href="#tracker-backup" id="id6" name="id6">Tracker Backup</a></li>
<li><a class="reference" href="#software-upgrade" id="id7" name="id7">Software Upgrade</a></li>
<li><a class="reference" href="#migrating-backends" id="id8" name="id8">Migrating Backends</a></li>
<li><a class="reference" href="#moving-a-tracker" id="id9" name="id9">Moving a Tracker</a></li>
<li><a class="reference" href="#migrating-from-other-software" id="id10" name="id10">Migrating From Other Software</a></li>
<li><a class="reference" href="#adding-a-user-from-the-command-line" id="id11" name="id11">Adding A User From The Command-Line</a></li>
</ul>
</li>
<li><a class="reference" href="#running-the-servers" id="id12" name="id12">Running the Servers</a><ul>
<li><a class="reference" href="#unix" id="id13" name="id13">Unix</a></li>
<li><a class="reference" href="#windows" id="id14" name="id14">Windows</a><ul>
<li><a class="reference" href="#running-the-mail-gateway-script" id="id15" name="id15">Running the Mail Gateway Script</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id1" id="what-does-roundup-install" name="what-does-roundup-install">What does Roundup install?</a></h1>
<p>There's two &quot;installations&quot; that we talk about when using Roundup:</p>
<ol class="arabic">
<li><p class="first">The installation of the software and its support files. This uses the
standard Python mechanism called &quot;distutils&quot; and thus Roundup's core code,
executable scripts and support data files are installed in Python's
directories. On Windows, this is typically:</p>
<dl class="docutils">
<dt>Scripts</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">dir&gt;\scripts\...</span></tt></p>
</dd>
<dt>Core code</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">dir&gt;\lib\site-packages\roundup\...</span></tt></p>
</dd>
<dt>Support files</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">dir&gt;\share\roundup\...</span></tt></p>
</dd>
</dl>
<p>and on Unix-like systems (eg. Linux):</p>
<dl class="docutils">
<dt>Scripts</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">root&gt;/bin/...</span></tt></p>
</dd>
<dt>Core code</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">root&gt;/lib-&lt;python</span> <span class="pre">version&gt;/site-packages/roundup/...</span></tt></p>
</dd>
<dt>Support files</dt>
<dd><p class="first last"><tt class="docutils literal"><span class="pre">&lt;python</span> <span class="pre">root&gt;/share/roundup/...</span></tt></p>
</dd>
</dl>
</li>
<li><p class="first">The installation of a specific tracker. When invoking the roundup-admin
&quot;inst&quot; (and &quot;init&quot;) commands, you're creating a new Roundup tracker. This
installs configuration files, HTML templates, detector code and a new
database. You have complete control over where this stuff goes through
both choosing your &quot;tracker home&quot; and the <tt class="docutils literal"><span class="pre">main</span></tt> -&gt; <tt class="docutils literal"><span class="pre">database</span></tt> variable
in the tracker's config.ini.</p>
</li>
</ol>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id2" id="configuring-roundup-s-logging-of-messages-for-sysadmins" name="configuring-roundup-s-logging-of-messages-for-sysadmins">Configuring Roundup's Logging of Messages For Sysadmins</a></h1>
<p>You may configure where Roundup logs messages in your tracker's config.ini
file. Roundup will use the standard Python (2.3+) logging implementation
when available. If not, then a very basic logging implementation will be used
(see BasicLogging in the roundup.rlog module for details).</p>
<dl class="docutils">
<dt>Configuration for standard &quot;logging&quot; module:</dt>
<dd><ul class="first last simple">
<li>tracker configuration file specifies the location of a logging
configration file as <tt class="docutils literal"><span class="pre">logging</span></tt> -&gt; <tt class="docutils literal"><span class="pre">config</span></tt></li>
<li><tt class="docutils literal"><span class="pre">roundup-server</span></tt> specifies the location of a logging configuration
file on the command line</li>
</ul>
</dd>
<dt>Configuration for &quot;BasicLogging&quot; implementation:</dt>
<dd><ul class="first last simple">
<li>tracker configuration file specifies the location of a log file
<tt class="docutils literal"><span class="pre">logging</span></tt> -&gt; <tt class="docutils literal"><span class="pre">filename</span></tt></li>
<li>tracker configuration file specifies the level to log to as
<tt class="docutils literal"><span class="pre">logging</span></tt> -&gt; <tt class="docutils literal"><span class="pre">level</span></tt></li>
<li><tt class="docutils literal"><span class="pre">roundup-server</span></tt> specifies the location of a log file on the command
line</li>
<li><tt class="docutils literal"><span class="pre">roundup-server</span></tt> specifies the level to log to on the command line</li>
</ul>
</dd>
</dl>
<p>(<tt class="docutils literal"><span class="pre">roundup-mailgw</span></tt> always logs to the tracker's log file)</p>
<p>In both cases, if no logfile is specified then logging will simply be sent
to sys.stderr with only logging of ERROR messages.</p>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id3" id="configuring-roundup-server" name="configuring-roundup-server">Configuring roundup-server</a></h1>
<p>The basic configuration file layout is as follows (take from the
<tt class="docutils literal"><span class="pre">roundup-server.ini.example</span></tt> file in the &quot;doc&quot; directory):</p>
<pre class="literal-block">
[main]
port = 8080
;hostname =
;user =
;group =
;log_ip = yes
;pidfile =
;logfile =

[trackers]
; Add one of these per tracker being served
name = /path/to/tracker/name
</pre>
<p>Values &quot;;commented out&quot; are optional. The meaning of the various options
are as follows:</p>
<dl class="docutils">
<dt><strong>port</strong></dt>
<dd>Defines the local TCP port to listen for clients on.</dd>
<dt><strong>hostname</strong></dt>
<dd>Defines the local hostname to listen for clients on. Only required if
&quot;localhost&quot; is not sufficient.</dd>
<dt><strong>user</strong> and <strong>group</strong></dt>
<dd>Defines the Unix user and group to run the server as. Only work if the
server is started as root.</dd>
<dt><strong>log_ip</strong></dt>
<dd>If <tt class="docutils literal"><span class="pre">yes</span></tt> then we log IP addresses against accesses. If <tt class="docutils literal"><span class="pre">no</span></tt> then we
log the hostname of the client. The latter can be much slower.</dd>
<dt><strong>pidfile</strong></dt>
<dd>If specified, the server will fork at startup and write its new PID to
the file.</dd>
<dt><strong>logfile</strong></dt>
<dd>Any unhandled exception messages or other output from Roundup will be
written to this file. It must be specified if <strong>pidfile</strong> is specified.
If per-tracker logging is specified, then very little will be written to
this file.</dd>
<dt><strong>trackers</strong> section</dt>
<dd>Each line denotes a mapping from a URL component to a tracker home.
Make sure the name part doesn't include any url-unsafe characters like
spaces. Stick to alphanumeric characters and you'll be ok.</dd>
</dl>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id4" id="users-and-security" name="users-and-security">Users and Security</a></h1>
<p>Roundup holds its own user database which primarily contains a username,
password and email address for the user. Roundup <em>must</em> have its own user
listing, in order to maintain internal consistency of its data. It is a
relatively simple exercise to update this listing on a regular basis, or on
demand, so that it matches an external listing (eg. unix passwd file, LDAP,
etc.)</p>
<p>Roundup identifies users in a number of ways:</p>
<ol class="arabic simple">
<li>Through the web, users may be identified by either HTTP Basic
Authentication or cookie authentication. If you are running the web
server (roundup-server) through another HTTP server (eg. apache or IIS)
then that server may require HTTP Basic Authentication, and it will pass
the <tt class="docutils literal"><span class="pre">REMOTE_USER</span></tt> variable through to Roundup. If this variable is not
present, then Roundup defaults to using its own cookie-based login
mechanism.</li>
<li>In email messages handled by roundup-mailgw, users are identified by the
From address in the message.</li>
</ol>
<p>In both cases, Roundup's behaviour when dealing with unknown users is
controlled by Permissions defined in the &quot;SECURITY SETTINGS&quot; section of the
tracker's <tt class="docutils literal"><span class="pre">schema.py</span></tt> module:</p>
<dl class="docutils">
<dt>Web Registration</dt>
<dd>If granted to the Anonymous Role, then anonymous users will be able to
register through the web.</dd>
<dt>Email Registration</dt>
<dd>If granted to the Anonymous Role, then email messages from unknown users
will result in those users being registered with the tracker.</dd>
</dl>
<p>More information about how to customise your tracker's security settings
may be found in the <a class="reference" href="customizing.html">customisation documentation</a>.</p>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id5" id="tasks" name="tasks">Tasks</a></h1>
<p>Maintenance of Roundup can involve one of the following:</p>
<ol class="arabic simple">
<li><a class="reference" href="#tracker-backup">tracker backup</a></li>
<li><a class="reference" href="#software-upgrade">software upgrade</a></li>
<li><a class="reference" href="#migrating-backends">migrating backends</a></li>
<li><a class="reference" href="#moving-a-tracker">moving a tracker</a></li>
<li><a class="reference" href="#migrating-from-other-software">migrating from other software</a></li>
<li><a class="reference" href="#adding-a-user-from-the-command-line">adding a user from the command-line</a></li>
</ol>
<div class="section">
<h2><a class="toc-backref" href="#id6" id="tracker-backup" name="tracker-backup">Tracker Backup</a></h2>
<p>Stop the web and email frontends and to copy the contents of the tracker home
directory to some other place using standard backup tools.</p>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id7" id="software-upgrade" name="software-upgrade">Software Upgrade</a></h2>
<p>Always make a backup of your tracker before upgrading software. Steps you may
take:</p>
<ol class="arabic">
<li><p class="first">Ensure that the unit tests run on your system:</p>
<pre class="literal-block">
python run_tests.py
</pre>
</li>
<li><p class="first">If you're using an RDBMS backend, make a backup of its contents now.</p>
</li>
<li><p class="first">Make a backup of the tracker home itself.</p>
</li>
<li><p class="first">Stop the tracker web and email frontends.</p>
</li>
<li><p class="first">Follow the steps in the <a class="reference" href="upgrading.html">upgrading documentation</a> for the new version of
the software in the copied.</p>
</li>
<li><p class="first">You may test each of the admin tool, web interface and mail gateway using
the new version of the software. To do this, invoke the scripts directly
in the source directory with:</p>
<pre class="literal-block">
PYTHONPATH=. python roundup/scripts/roundup_server.py &lt;normal arguments&gt;
PYTHONPATH=. python roundup/scripts/roundup_admin.py &lt;normal arguments&gt;
PYTHONPATH=. python roundup/scripts/roundup_mailgw.py &lt;normal arguments&gt;
</pre>
<p>Note that on Windows, this would read:</p>
<pre class="literal-block">
C:\sources\roundup-0.7.4&gt; SET PYTHONPATH=.
C:\sources\roundup-0.7.4&gt; python roundup/scripts/roundup_server.py &lt;normal arguments&gt;
</pre>
</li>
<li><p class="first">Once you're comfortable that the upgrade will work using that copy, you
should install the new version of the software:</p>
<pre class="literal-block">
python setup.py install
</pre>
</li>
<li><p class="first">Restart your tracker web and email frontends.</p>
</li>
</ol>
<p>If something bad happens, you may reinstate your backup of the tracker and
reinstall the older version of the sofware using the same install command:</p>
<pre class="literal-block">
python setup.py install
</pre>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id8" id="migrating-backends" name="migrating-backends">Migrating Backends</a></h2>
<ol class="arabic simple">
<li>stop the existing tracker web and email frontends (preventing changes)</li>
<li>use the roundup-admin tool &quot;export&quot; command to export the contents of
your tracker to disk</li>
<li>copy the tracker home to a new directory</li>
<li>delete the &quot;db&quot; directory from the new directory</li>
<li>enter the new backend name in the tracker home <tt class="docutils literal"><span class="pre">db/backend_name</span></tt> file</li>
<li>use the roundup-admin &quot;import&quot; command to import the previous export with
the new tracker home</li>
<li>test each of the admin tool, web interface and mail gateway using the new
backend</li>
<li>move the old tracker home out of the way (rename to &quot;tracker.old&quot;) and
move the new tracker home into its place</li>
<li>restart web and email frontends</li>
</ol>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id9" id="moving-a-tracker" name="moving-a-tracker">Moving a Tracker</a></h2>
<p>If you're moving the tracker to a similar machine, you should:</p>
<ol class="arabic simple">
<li>install Roundup on the new machine and test that it works there,</li>
<li>stop the existing tracker web and email frontends (preventing changes),</li>
<li>copy the tracker home directory over to the new machine, and</li>
<li>start the tracker web and email frontends on the new machine.</li>
</ol>
<p>Most of the backends are actually portable across platforms (ie. from Unix to
Windows to Mac). If this isn't the case (ie. the tracker doesn't work when
moved using the above steps) then you'll need to:</p>
<ol class="arabic simple">
<li>install Roundup on the new machine and test that it works there,</li>
<li>stop the existing tracker web and email frontends (preventing changes),</li>
<li>use the roundup-admin tool &quot;export&quot; command to export the contents of
the existing tracker,</li>
<li>copy the export to the new machine,</li>
<li>use the roundup-admin &quot;import&quot; command to import the tracker on the new
machine, and</li>
<li>start the tracker web and email frontends on the new machine.</li>
</ol>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id10" id="migrating-from-other-software" name="migrating-from-other-software">Migrating From Other Software</a></h2>
<p>You have a couple of choices. You can either use a CSV import into Roundup,
or you can write a simple Python script which uses the Roundup API
directly. The latter is almost always simpler -- see the &quot;scripts&quot;
directory in the Roundup source for some example uses of the API.</p>
<p>&quot;roundup-admin import&quot; will import data into your tracker from a
directory containing files with the following format:</p>
<ul>
<li><p class="first">one colon-separated-values file per Class with columns for each property,
named &lt;classname&gt;.csv</p>
</li>
<li><p class="first">one colon-separated-values file per Class with journal information,
named &lt;classname&gt;-journals.csv (this is required, even if it's empty)</p>
</li>
<li><p class="first">if the Class is a FileClass, you may have the &quot;content&quot; property
stored in separate files from the csv files. This goes in a directory
structure:</p>
<pre class="literal-block">
&lt;classname&gt;-files/&lt;N&gt;/&lt;designator&gt;
</pre>
<p>where <tt class="docutils literal"><span class="pre">&lt;designator&gt;</span></tt> is the item's <tt class="docutils literal"><span class="pre">&lt;classname&gt;&lt;id&gt;</span></tt> combination.
The <tt class="docutils literal"><span class="pre">&lt;N&gt;</span></tt> value is <tt class="docutils literal"><span class="pre">int(&lt;id&gt;</span> <span class="pre">/</span> <span class="pre">1000)</span></tt>.</p>
</li>
</ul>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id11" id="adding-a-user-from-the-command-line" name="adding-a-user-from-the-command-line">Adding A User From The Command-Line</a></h2>
<p>The <tt class="docutils literal"><span class="pre">roundup-admin</span></tt> program can create any data you wish to in the
database. To create a new user, use:</p>
<pre class="literal-block">
roundup-admin create user
</pre>
<p>To figure out what good values might be for some of the fields (eg. Roles)
you can just display another user:</p>
<pre class="literal-block">
roundup-admin list user
</pre>
<p>(or if you know their username, and it happens to be &quot;richard&quot;):</p>
<pre class="literal-block">
roundup-admin find username=richard
</pre>
<p>then using the user id you get from one of the above commands, you may
display the user's details:</p>
<pre class="literal-block">
roundup-admin display &lt;userid&gt;
</pre>
</div>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id12" id="running-the-servers" name="running-the-servers">Running the Servers</a></h1>
<div class="section">
<h2><a class="toc-backref" href="#id13" id="unix" name="unix">Unix</a></h2>
<p>On Unix systems, use the scripts/server-ctl script to control the
roundup-server server. Copy it somewhere and edit the variables at the top
to reflect your specific installation.</p>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id14" id="windows" name="windows">Windows</a></h2>
<p>On Windows, the roundup-server program runs as a Windows Service, and
therefore may be controlled through the Services control panel. The
roundup-server program may also control the service directly:</p>
<dl class="docutils">
<dt><strong>install the service</strong></dt>
<dd><tt class="docutils literal"><span class="pre">roundup-server</span> <span class="pre">-c</span> <span class="pre">install</span></tt></dd>
<dt><strong>start the service</strong></dt>
<dd><tt class="docutils literal"><span class="pre">roundup-server</span> <span class="pre">-c</span> <span class="pre">start</span></tt></dd>
<dt><strong>stop the service</strong></dt>
<dd><tt class="docutils literal"><span class="pre">roundup-server</span> <span class="pre">-c</span> <span class="pre">stop</span></tt></dd>
</dl>
<p>To bring up the services panel:</p>
<dl class="docutils">
<dt>Windows 2000 and later</dt>
<dd>Start/Control Panel/Administrative Tools/Services</dd>
<dt>Windows NT4</dt>
<dd>Start/Control Panel/Services</dd>
</dl>
<div class="section">
<h3><a class="toc-backref" href="#id15" id="running-the-mail-gateway-script" name="running-the-mail-gateway-script">Running the Mail Gateway Script</a></h3>
<p>The mail gateway script should be scheduled to run regularly on your
Windows server. Normally this will result in a window popping up. The
solution to this is to:</p>
<ol class="arabic simple">
<li>Create a new local account on the Roundup server</li>
<li>Set the scheduled task to run in the context of this user instead
of your normal login</li>
</ol>
<hr class="docutils" />
<p>Back to <a class="reference" href="index.html">Table of Contents</a></p>
</div>
</div>
</div>
</div>
<div class="footer">
<hr class="footer" />
Generated on: 2006-08-09.

</div>
</body>
</html>