blob: b29fcb020f26f1e348d8ca87d8a72d025565608a [file] [log] [blame]
Guido van Rossum132e1891997-05-26 20:15:09 +00001FAQ Wizard
2----------
3
4Author: Guido van Rossum <guido@python.org>
Guido van Rossum36dfbcf1998-04-06 14:25:36 +00005Version: 1.0
6Date: 6 April 1998
Guido van Rossum132e1891997-05-26 20:15:09 +00007
8
9This is a CGI program that maintains a user-editable FAQ. It uses RCS
10to keep track of changes to individual FAQ entries. It is fully
11configurable; everything you might want to change when using this
12program to maintain some other FAQ than the Python FAQ is contained in
13the configuration module, faqconf.py.
14
Guido van Rossumdafce6d1997-06-02 23:10:06 +000015Note that the bulk of the code is not an executable script; it's an
16importable module. The actual script in cgi-bin is minimal.
Guido van Rossum132e1891997-05-26 20:15:09 +000017
18Files:
19
20faqw.py executable script to be edited and installed in cgi-bin
Guido van Rossumb1823ad1997-12-09 16:04:46 +000021faqwiz.py main module, lives in same directory as FAQ entry files
Guido van Rossum132e1891997-05-26 20:15:09 +000022faqconf.py main configuration module
23faqcust.py additional local customization module (optional)
24
Guido van Rossum80e57fb1997-12-21 07:05:32 +000025
26What's New?
27-----------
28
Guido van Rossum36dfbcf1998-04-06 14:25:36 +000029Version 1.0 corrects some minor bugs and uses tab-agnostic
30indentation; it is otherwise unchanged from version 0.9.0.
31
Guido van Rossum80e57fb1997-12-21 07:05:32 +000032Version 0.9.0 uses the re module (Perl style regular expressions) for
33all its regular expression needs, instead of the regex and regsub
34modules (Emacs style). This affects the syntax for regular
35expressions entered by the user as search strings (with "regular
36expression" checked), hence the version number jump.
37
38
Guido van Rossumdafce6d1997-06-02 23:10:06 +000039Setup Information
40-----------------
41
42This assumes you are familiar with Python, with your http server, and
Guido van Rossum685fe831998-04-08 21:37:13 +000043with running CGI scripts under your http server. You need Python 1.5
Guido van Rossumf1ead1a1997-08-28 02:38:01 +000044or better.
45
46Select a place where the Python modules that constitute the FAQ wizard
47will live (the directory where you unpacked it is an obvious choice).
48This will be called the SRCDIR. This directory should not be writable
49by other users of your system (since they would be able to execute
50arbitrary code by invoking the FAQ wizard's CGI script).
Guido van Rossumdafce6d1997-06-02 23:10:06 +000051
52Create a dedicated working directory, preferably one that's not
Guido van Rossumf1ead1a1997-08-28 02:38:01 +000053directly reachable from your http server. This will be called the
54FAQDIR. Create a subdirectory named RCS. Make both the working
55directory and the RCS subdirectory wrld-writable. (This is essential,
56since the FAQ wizard runs as use nobody, and needs to create
57additional files here!)
Guido van Rossumdafce6d1997-06-02 23:10:06 +000058
59Edit faqconf.py to reflect your setup. You only need to edit the top
60part, up till the line of all dashes. The comments should guide you
Guido van Rossum8c5fa911997-08-28 02:38:54 +000061in your edits. (Actually, you can also choose to add your changes to
62faqcust.py and leave faqconf.py alone. This is essential if you are
63maintaining multiple FAQs; see below.)
Guido van Rossumdafce6d1997-06-02 23:10:06 +000064
65Don't forget to edit the SECTION_TITLES variables to reflect the set
66of section titles for your FAQ!
67
68Next, edit faqw.py to reflect the pathname of your Python interpreter
Guido van Rossumf1ead1a1997-08-28 02:38:01 +000069and the values for SRCDIR and FAQDIR that you just chose. Then
70install faqw.py in your cgi-bin directory. Make sure that it is
71world-executable. You should now be able to connect to the FAQ wizard
72by entering the following URL in your web client (subsituting the
73appropriate host and port for "your.web.server", and perhaps
74specifying a different directory for "cgi-bin" if local conventions so
75dictate):
Guido van Rossumdafce6d1997-06-02 23:10:06 +000076
77 http://your.web.server/cgi-bin/faqw.py
78
79If you are unable to get this working, check your server's error_log
80file. The documentation for Python's cgi module in the Python Library
81Reference Manual gives plentyu additional information about installing
82and debugging CGI scripts, including setup debugging. This
83documentation is repeated in the doc string in the cgi module; try
84``import cgi; print cgi.__doc__''.
85
Guido van Rossumf1ead1a1997-08-28 02:38:01 +000086Assuming this works, you should now be able to add the first entry to
Guido van Rossumdafce6d1997-06-02 23:10:06 +000087your FAQ using the FAQ wizard interface. This creates a file
88faq01.001.htp in your working directory and an RCS revision history
89file faq01.001.htp,v in the RCS subdirectory. You can now exercise
90the other FAQ wizard features (search, index, whole FAQ, what's new,
Guido van Rossumf1ead1a1997-08-28 02:38:01 +000091roulette, and so on).
Guido van Rossumd7918fb1997-05-30 12:01:24 +000092
Guido van Rossum80e57fb1997-12-21 07:05:32 +000093
Guido van Rossum8c5fa911997-08-28 02:38:54 +000094Maintaining Multiple FAQs
95-------------------------
96
97If you have multiple FAQs, you need a separate FAQDIR per FAQ, and a
98different customization file per FAQ. The easiest thing to do would
99be to have the faqcust.py for each FAQ live in the FAQDIR for that
100FAQ, but that creates some security concerns, since the FAQDIR must be
101world writable: *if* someone who breaks into your system (or a
102legitimate user) manages to edit the faqcust.py file they can get
103arbitrary code to execute through the FAQ wizard. Therefore, you will
104need a more complex setup.
105
106The best way is probably to have a directory that is only writable by
107you for each FAQ, where you place the copy of faqcust.py for that FAQ,
108and have a world-writable subdirectory DATA for the data. You then
109set FAQDIR to point to the DATA directory and change the faqw.py
110bootstrap script to add FAQDIR/.. to sys.path (in front of SRCDIR, so
111the dummy faqcust.py from SRCDIR is ignored).
112
Guido van Rossum132e1891997-05-26 20:15:09 +0000113--Guido van Rossum (home page: http://www.python.org/~guido/)