changeset 4516:f4e745c7f8e8

merged moin/1.8
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Thu, 29 Jan 2009 09:44:57 +0100
parents b1f78aafc581 (current diff) 04f3cfbf446a (diff)
children 47eee6dfcdec
files MoinMoin/__init__.py MoinMoin/action/fullsearch.py MoinMoin/config/multiconfig.py MoinMoin/i18n/__init__.py MoinMoin/search/builtin.py MoinMoin/security/antispam.py MoinMoin/version.py MoinMoin/wikiutil.py docs/CHANGES docs/INSTALL.html wiki/config/wikiconfig.py
diffstat 22 files changed, 228 insertions(+), 177 deletions(-) [+]
line wrap: on
line diff
--- a/MoinMoin/__init__.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/__init__.py	Thu Jan 29 09:44:57 2009 +0100
@@ -1,9 +1,9 @@
 # -*- coding: iso-8859-1 -*-
 """
-MoinMoin Version 1.9.0
+MoinMoin - a wiki engine in Python
 
 @copyright: 2000-2006 by Juergen Hermann <jh@web.de>,
-            2002-2008 MoinMoin:ThomasWaldmann
+            2002-2009 MoinMoin:ThomasWaldmann
 @license: GNU GPL, see COPYING for details.
 """
 
--- a/MoinMoin/action/fullsearch.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/action/fullsearch.py	Thu Jan 29 09:44:57 2009 +0100
@@ -181,21 +181,22 @@
         sort = 'weight'
 
     # search the pages
-    from MoinMoin.search import searchPages, QueryParser
+    from MoinMoin.search import searchPages, QueryParser, QueryError
     try:
         query = QueryParser(case=case, regex=regex,
                 titlesearch=titlesearch).parse_query(needle)
-        results = searchPages(request, query, sort, mtime, historysearch)
-    except ValueError: # catch errors in the search query
+    except QueryError: # catch errors in the search query
         request.theme.add_msg(_('Your search query {{{"%s"}}} is invalid. Please refer to '
                 'HelpOnSearching for more information.', wiki=True, percent=True) % wikiutil.escape(needle), "error")
         Page(request, pagename).send_page()
         return
 
-    # directly show a single hit
-    # Note: can't work with attachment search
-    # improve if we have one...
-    if len(results.hits) == 1:
+    results = searchPages(request, query, sort, mtime, historysearch)
+
+    # directly show a single hit for title searches
+    # this is the "quick jump" functionality if you don't remember
+    # the pagename exactly, but just some parts of it
+    if titlesearch and len(results.hits) == 1:
         page = results.hits[0]
         if not page.attachment: # we did not find an attachment
             page = Page(request, page.page_name)
@@ -207,7 +208,7 @@
             url = page.url(request, querystr=querydict)
             request.http_redirect(url)
             return
-    elif not results.hits: # no hits?
+    if not results.hits: # no hits?
         f = request.formatter
         querydict = wikiutil.parseQueryString(request.query_string)
         querydict.update({'titlesearch': 0})
--- a/MoinMoin/config/multiconfig.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/config/multiconfig.py	Thu Jan 29 09:44:57 2009 +0100
@@ -503,7 +503,7 @@
 """
 
         decode_names = (
-            'sitename', 'interwikiname', 'logo_string', 'navi_bar',
+            'sitename', 'interwikiname', 'user_homewiki', 'logo_string', 'navi_bar',
             'page_front_page', 'page_category_regex', 'page_dict_regex',
             'page_group_regex', 'page_template_regex', 'page_license_page',
             'page_local_spelling_words', 'acl_rights_default',
@@ -1098,8 +1098,8 @@
       ('jid_unique', True,
        "if True, check Jabber IDs for uniqueness and don't accept duplicates."),
 
-      ('homewiki', 'Self',
-       "interwiki name of the wiki where the user home pages are located (useful if you have ''many'' users). You could even link to nonwiki \"user pages\" if the wiki username is in the target URL."),
+      ('homewiki', u'Self',
+       "interwiki name of the wiki where the user home pages are located [Unicode] - useful if you have ''many'' users. You could even link to nonwiki \"user pages\" if the wiki username is in the target URL."),
 
       ('checkbox_fields',
        [
--- a/MoinMoin/i18n/__init__.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/i18n/__init__.py	Thu Jan 29 09:44:57 2009 +0100
@@ -60,7 +60,10 @@
     request.clock.start('i18n_init')
     if languages is None:
         logging.debug("trying to load translations from cache")
-        meta_cache = caching.CacheEntry(request, 'i18n', 'meta', scope='farm', use_pickle=True)
+        # the scope of the i18n cache needs to be per-wiki, because some translations
+        # have http links (to some help pages) and they must not point to another
+        # wiki in the farm (confusing and maybe not even readable due to ACLs):
+        meta_cache = caching.CacheEntry(request, 'i18n', 'meta', scope='wiki', use_pickle=True)
         i18n_dir = os.path.join(request.cfg.moinmoin_dir, 'i18n')
         if meta_cache.needsUpdate(i18n_dir):
             logging.debug("cache needs update")
@@ -199,7 +202,8 @@
 
     def loadLanguage(self, request, trans_dir="i18n"):
         request.clock.start('loadLanguage')
-        cache = caching.CacheEntry(request, arena='i18n', key=self.language, scope='farm', use_pickle=True)
+        # see comment about per-wiki scope above
+        cache = caching.CacheEntry(request, arena='i18n', key=self.language, scope='wiki', use_pickle=True)
         langfilename = po_filename(request, self.language, self.domain, i18n_dir=trans_dir)
         needsupdate = cache.needsUpdate(langfilename)
         if not needsupdate:
--- a/MoinMoin/search/Xapian.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/Xapian.py	Thu Jan 29 09:44:57 2009 +0100
@@ -282,12 +282,7 @@
         # do all page updates
         pages = self.update_queue.pages()[:amount]
         for name in pages:
-            p = Page(request, name)
-            if request.cfg.xapian_index_history:
-                for rev in p.getRevList():
-                    self._index_page(writer, Page(request, name, rev=rev), mode='update')
-            else:
-                self._index_page(writer, p, mode='update')
+            self._index_page(request, writer, name, mode='update')
             self.update_queue.remove([name])
 
         # do page/attachment removals
@@ -295,7 +290,7 @@
         for item in items:
             _item = item.split('//')
             p = Page(request, _item[0])
-            self._remove_item(writer, p, _item[1])
+            self._remove_item(request, writer, p, _item[1])
             self.remove_queue.remove([item])
 
         writer.close()
@@ -352,7 +347,7 @@
                 xwname = xapdoc.SortKey('wikiname', request.cfg.interwikiname or u"Self")
                 xpname = xapdoc.SortKey('pagename', fs_rootpage)
                 xattachment = xapdoc.SortKey('attachment', filename) # XXX we should treat files like real pages, not attachments
-                xmtime = xapdoc.SortKey('mtime', mtime)
+                xmtime = xapdoc.SortKey('mtime', str(mtime))
                 xrev = xapdoc.SortKey('revision', '0')
                 title = " ".join(os.path.join(fs_rootpage, filename).split("/"))
                 xtitle = xapdoc.Keyword('title', title)
@@ -432,15 +427,91 @@
         if wikiutil.isSystemPage(self.request, page.page_name):
             yield 'system'
 
-    def _index_page(self, writer, page, mode='update'):
+    def _index_page(self, request, writer, pagename, mode='update'):
         """ Index a page - assumes that the write lock is acquired
 
         @arg writer: the index writer object
+        @arg pagename: a page name
+        @arg mode: 'add' = just add, no checks
+                   'update' = check if already in index and update if needed (mtime)
+        """
+        p = Page(request, pagename)
+        if request.cfg.xapian_index_history:
+            for rev in p.getRevList():
+                self._index_page_rev(request, writer, Page(request, pagename, rev=rev), mode=mode)
+        else:
+            self._index_page_rev(request, writer, p, mode=mode)
+
+        from MoinMoin.action import AttachFile
+        wikiname = request.cfg.interwikiname or u"Self"
+        # XXX: Hack until we get proper metadata
+        language, stem_language = self._get_languages(p)
+        domains = tuple(self._get_domains(p))
+        updated = False
+
+        attachments = AttachFile._get_files(request, pagename)
+        for att in attachments:
+            filename = AttachFile.getFilename(request, pagename, att)
+            att_itemid = "%s:%s//%s" % (wikiname, pagename, att)
+            mtime = wikiutil.timestamp2version(os.path.getmtime(filename))
+            if mode == 'update':
+                query = xapidx.RawQuery(xapdoc.makePairForWrite('itemid', att_itemid))
+                enq, mset, docs = writer.search(query, valuesWanted=['pagename', 'attachment', 'mtime', ])
+                logging.debug("##%r %r" % (filename, docs))
+                if docs:
+                    doc = docs[0] # there should be only one
+                    uid = doc['uid']
+                    docmtime = long(doc['values']['mtime'])
+                    updated = mtime > docmtime
+                    logging.debug("uid %r: mtime %r > docmtime %r == updated %r" % (uid, mtime, docmtime, updated))
+                else:
+                    uid = None
+                    updated = True
+            elif mode == 'add':
+                updated = True
+            logging.debug("%s %s %r" % (pagename, att, updated))
+            if updated:
+                xatt_itemid = xapdoc.Keyword('itemid', att_itemid)
+                xpname = xapdoc.SortKey('pagename', pagename)
+                xwname = xapdoc.SortKey('wikiname', request.cfg.interwikiname or u"Self")
+                xattachment = xapdoc.SortKey('attachment', att) # this is an attachment, store its filename
+                xmtime = xapdoc.SortKey('mtime', str(mtime))
+                xrev = xapdoc.SortKey('revision', '0')
+                xtitle = xapdoc.Keyword('title', '%s/%s' % (pagename, att))
+                xlanguage = xapdoc.Keyword('lang', language)
+                xstem_language = xapdoc.Keyword('stem_lang', stem_language)
+                mimetype, att_content = self.contentfilter(filename)
+                xmimetypes = [xapdoc.Keyword('mimetype', mt) for mt in [mimetype, ] + mimetype.split('/')]
+                xcontent = xapdoc.TextField('content', att_content)
+                xtitle_txt = xapdoc.TextField('title', '%s/%s' % (pagename, att), True)
+                xfulltitle = xapdoc.Keyword('fulltitle', pagename)
+                xdomains = [xapdoc.Keyword('domain', domain) for domain in domains]
+                doc = xapdoc.Document(textFields=(xcontent, xtitle_txt),
+                                      keywords=xdomains + xmimetypes + [xatt_itemid,
+                                          xtitle, xlanguage, xstem_language,
+                                          xfulltitle, ],
+                                      sortFields=(xpname, xattachment, xmtime,
+                                          xwname, xrev, ),
+                                     )
+                doc.analyzerFactory = getWikiAnalyzerFactory(request, stem_language)
+                if mode == 'update':
+                    logging.debug("%s (replace %r)" % (pagename, uid))
+                    doc.uid = uid
+                    id = writer.index(doc)
+                elif mode == 'add':
+                    logging.debug("%s (add)" % (pagename, ))
+                    id = writer.index(doc)
+        #writer.flush()
+
+    def _index_page_rev(self, request, writer, page, mode='update'):
+        """ Index a page revision - assumes that the write lock is acquired
+
+        @arg writer: the index writer object
         @arg page: a page object
         @arg mode: 'add' = just add, no checks
                    'update' = check if already in index and update if needed (mtime)
         """
-        request = page.request
+        request.page = page
         wikiname = request.cfg.interwikiname or u"Self"
         pagename = page.page_name
         mtime = page.mtime_usecs()
@@ -511,67 +582,8 @@
                 logging.debug("%s (add)" % (pagename, ))
                 id = writer.index(doc)
 
-        from MoinMoin.action import AttachFile
 
-        attachments = AttachFile._get_files(request, pagename)
-        for att in attachments:
-            filename = AttachFile.getFilename(request, pagename, att)
-            att_itemid = "%s:%s//%s" % (wikiname, pagename, att)
-            mtime = wikiutil.timestamp2version(os.path.getmtime(filename))
-            if mode == 'update':
-                query = xapidx.RawQuery(xapdoc.makePairForWrite('itemid', att_itemid))
-                enq, mset, docs = writer.search(query, valuesWanted=['pagename', 'attachment', 'mtime', ])
-                logging.debug("##%r %r" % (filename, docs))
-                if docs:
-                    doc = docs[0] # there should be only one
-                    uid = doc['uid']
-                    docmtime = long(doc['values']['mtime'])
-                    updated = mtime > docmtime
-                    logging.debug("uid %r: mtime %r > docmtime %r == updated %r" % (uid, mtime, docmtime, updated))
-                else:
-                    uid = None
-                    updated = True
-            elif mode == 'add':
-                updated = True
-            logging.debug("%s %s %r" % (pagename, att, updated))
-            if updated:
-                xatt_itemid = xapdoc.Keyword('itemid', att_itemid)
-                xpname = xapdoc.SortKey('pagename', pagename)
-                xwname = xapdoc.SortKey('wikiname', request.cfg.interwikiname or u"Self")
-                xattachment = xapdoc.SortKey('attachment', att) # this is an attachment, store its filename
-                xmtime = xapdoc.SortKey('mtime', mtime)
-                xrev = xapdoc.SortKey('revision', '0')
-                xtitle = xapdoc.Keyword('title', '%s/%s' % (pagename, att))
-                xlanguage = xapdoc.Keyword('lang', language)
-                xstem_language = xapdoc.Keyword('stem_lang', stem_language)
-                mimetype, att_content = self.contentfilter(filename)
-                xmimetypes = [xapdoc.Keyword('mimetype', mt) for mt in [mimetype, ] + mimetype.split('/')]
-                xcontent = xapdoc.TextField('content', att_content)
-                xtitle_txt = xapdoc.TextField('title',
-                        '%s/%s' % (pagename, att), True)
-                xfulltitle = xapdoc.Keyword('fulltitle', pagename)
-                xdomains = [xapdoc.Keyword('domain', domain)
-                        for domain in domains]
-                doc = xapdoc.Document(textFields=(xcontent, xtitle_txt),
-                                      keywords=xdomains + xmimetypes + [xatt_itemid,
-                                          xtitle, xlanguage, xstem_language,
-                                          xfulltitle, ],
-                                      sortFields=(xpname, xattachment, xmtime,
-                                          xwname, xrev, ),
-                                     )
-                doc.analyzerFactory = getWikiAnalyzerFactory(request,
-                        stem_language)
-                if mode == 'update':
-                    logging.debug("%s (replace %r)" % (pagename, uid))
-                    doc.uid = uid
-                    id = writer.index(doc)
-                elif mode == 'add':
-                    logging.debug("%s (add)" % (pagename, ))
-                    id = writer.index(doc)
-        #writer.flush()
-
-    def _remove_item(self, writer, page, attachment=None):
-        request = page.request
+    def _remove_item(self, request, writer, page, attachment=None):
         wikiname = request.cfg.interwikiname or u'Self'
         pagename = page.page_name
 
@@ -627,15 +639,7 @@
             pages = request.rootpage.getPageList(user='', exists=1)
             logging.debug("indexing all (%d) pages..." % len(pages))
             for pagename in pages:
-                p = Page(request, pagename)
-                request.page = p
-                if request.cfg.xapian_index_history:
-                    for rev in p.getRevList():
-                        self._index_page(writer,
-                                Page(request, pagename, rev=rev),
-                                mode)
-                else:
-                    self._index_page(writer, p, mode)
+                self._index_page(request, writer, pagename, mode=mode)
             if files:
                 logging.debug("indexing all files...")
                 for fname in files:
--- a/MoinMoin/search/__init__.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/__init__.py	Thu Jan 29 09:44:57 2009 +0100
@@ -13,7 +13,7 @@
 from MoinMoin import log
 logging = log.getLogger(__name__)
 
-from MoinMoin.search.queryparser import QueryParser
+from MoinMoin.search.queryparser import QueryParser, QueryError
 from MoinMoin.search.builtin import Search
 
 def searchPages(request, query, sort='weight', mtime=None, historysearch=None, **kw):
--- a/MoinMoin/search/_tests/test_search.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/_tests/test_search.py	Thu Jan 29 09:44:57 2009 +0100
@@ -9,6 +9,7 @@
 
 import py
 
+from MoinMoin.search import QueryError
 from MoinMoin.search.queryparser import QueryParser
 from MoinMoin import search
 
@@ -61,7 +62,7 @@
         """ search: test the query parser """
         parser = QueryParser()
         def _test(q):
-            py.test.raises(ValueError, parser.parse_query, q)
+            py.test.raises(QueryError, parser.parse_query, q)
         for query in ['""', '(', ')', '(a or b']:
             yield _test, query
 
--- a/MoinMoin/search/builtin.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/builtin.py	Thu Jan 29 09:44:57 2009 +0100
@@ -279,7 +279,7 @@
             return
 
         from threading import Thread
-        indexThread = Thread(target=self._index_pages, args=(files, mode))
+        indexThread = Thread(target=self._index_pages, args=(self.request, files, mode))
         indexThread.setDaemon(True)
 
         # Join the index thread after current request finish, prevent
@@ -403,12 +403,14 @@
         """
         from MoinMoin.web.contexts import ScriptContext
         from MoinMoin.security import Permissions
-        request = ScriptContext(request.url)
+        from MoinMoin.logfile import editlog
+        r = ScriptContext(request.url)
         class SecurityPolicy(Permissions):
             def read(self, *args, **kw):
                 return True
-        request.user.may = SecurityPolicy(request.user)
-        return request
+        r.user.may = SecurityPolicy(r.user)
+        r.editlog = editlog.EditLog(r)
+        return r
 
     def _unsign(self):
         """ Remove sig file - assume write lock acquired """
@@ -636,12 +638,12 @@
             wikiname = valuedict['wikiname']
             pagename = valuedict['pagename']
             attachment = valuedict['attachment']
-            logging.debug("_getHits processing %r %r %r" % (wikiname, pagename, attachment))
 
             if 'revision' in valuedict and valuedict['revision']:
                 revision = int(valuedict['revision'])
             else:
                 revision = 0
+            logging.debug("_getHits processing %r %r %d %r" % (wikiname, pagename, revision, attachment))
 
             if wikiname in (self.request.cfg.interwikiname, 'Self'): # THIS wiki
                 page = Page(self.request, pagename, rev=revision)
@@ -650,14 +652,16 @@
                     # revlist can be empty if page was nuked/renamed since it was included in xapian index
                     if not revlist or revlist[0] != revision:
                         # nothing there at all or not the current revision
+                        logging.debug("no history search, skipping non-current revision...")
                         continue
                 if attachment:
+                    # revision currently is 0 ever
                     if pagename == fs_rootpage: # not really an attachment
                         page = Page(self.request, "%s/%s" % (fs_rootpage, attachment))
-                        hits.append((wikiname, page, None, None))
+                        hits.append((wikiname, page, None, None, revision))
                     else:
                         matches = matchSearchFunction(page=None, uid=uid)
-                        hits.append((wikiname, page, attachment, matches))
+                        hits.append((wikiname, page, attachment, matches, revision))
                 else:
                     matches = matchSearchFunction(page=page, uid=uid)
                     logging.debug("matchSearchFunction %r returned %r" % (matchSearchFunction, matches))
@@ -667,10 +671,11 @@
                                 revisionCache[pagename][0] < revision:
                             hits.remove(revisionCache[pagename][1])
                             del revisionCache[pagename]
-                        hits.append((wikiname, page, attachment, matches))
+                        hits.append((wikiname, page, attachment, matches, revision))
                         revisionCache[pagename] = (revision, hits[-1])
             else: # other wiki
                 hits.append((wikiname, pagename, attachment, None, revision))
+        logging.debug("_getHits returning %r." % hits)
         return hits
 
     def _getPageList(self):
@@ -697,8 +702,8 @@
         userMayRead = self.request.user.may.read
         fs_rootpage = self.fs_rootpage + "/"
         thiswiki = (self.request.cfg.interwikiname, 'Self')
-        filtered = [(wikiname, page, attachment, match)
-                for wikiname, page, attachment, match in hits
+        filtered = [(wikiname, page, attachment, match, rev)
+                for wikiname, page, attachment, match, rev in hits
                     if (not wikiname in thiswiki or
                        page.exists() and userMayRead(page.page_name) or
                        page.page_name.startswith(fs_rootpage)) and
--- a/MoinMoin/search/queryparser.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/queryparser.py	Thu Jan 29 09:44:57 2009 +0100
@@ -24,6 +24,10 @@
 except ImportError:
     pass
 
+class QueryError(ValueError):
+    """ error raised for problems when parsing the query """
+
+
 #############################################################################
 ### query objects
 #############################################################################
@@ -961,7 +965,7 @@
                             orexpr = OrExpression(terms)
                         terms = AndExpression(orexpr)
                     else:
-                        raise ValueError('Nothing to OR')
+                        raise QueryError('Nothing to OR')
                     remaining = self._analyse_items(items)
                     if remaining.__class__ == OrExpression:
                         for sub in remaining.subterms():
@@ -977,7 +981,7 @@
                     # being parsed rather than rejecting an empty string
                     # before parsing...
                     if not item:
-                        raise ValueError("Term too short")
+                        raise QueryError("Term too short")
                     regex = self.regex
                     case = self.case
                     if self.titlesearch:
@@ -997,7 +1001,7 @@
                 while len(item) > 1:
                     m = item[0]
                     if m is None:
-                        raise ValueError("Invalid search prefix")
+                        raise QueryError("Invalid search prefix")
                     elif m == M:
                         negate = True
                     elif "title".startswith(m):
@@ -1017,7 +1021,7 @@
                     elif "domain".startswith(m):
                         domain = True
                     else:
-                        raise ValueError("Invalid search prefix")
+                        raise QueryError("Invalid search prefix")
                     item = item[1:]
 
                 text = item[0]
@@ -1057,9 +1061,9 @@
                                                         multikey=True,
                                                         brackets=('()', ),
                                                         quotes='\'"')
-            logging.debug("parse_quoted_separated items: %r" % items)
         except wikiutil.BracketError, err:
-            raise ValueError(str(err))
+            raise QueryError(str(err))
+        logging.debug("parse_quoted_separated items: %r" % items)
         query = self._analyse_items(items)
         logging.debug("analyse_items query: %r" % query)
         return query
--- a/MoinMoin/search/results.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/search/results.py	Thu Jan 29 09:44:57 2009 +0100
@@ -95,10 +95,11 @@
 class FoundPage:
     """ Represents a page in a search result """
 
-    def __init__(self, page_name, matches=None, page=None):
+    def __init__(self, page_name, matches=None, page=None, rev=0):
         self.page_name = page_name
         self.attachment = '' # this is not an attachment
         self.page = page
+        self.rev = rev
         if matches is None:
             matches = []
         self._matches = matches
@@ -184,9 +185,10 @@
 class FoundAttachment(FoundPage):
     """ Represents an attachment in search results """
 
-    def __init__(self, page_name, attachment, matches=None, page=None):
+    def __init__(self, page_name, attachment, matches=None, page=None, rev=0):
         self.page_name = page_name
         self.attachment = attachment
+        self.rev = rev
         self.page = page
         if matches is None:
             matches = []
@@ -199,9 +201,10 @@
 class FoundRemote(FoundPage):
     """ Represents an attachment in search results """
 
-    def __init__(self, wikiname, page_name, attachment, matches=None, page=None):
+    def __init__(self, wikiname, page_name, attachment, matches=None, page=None, rev=0):
         self.wikiname = wikiname
         self.page_name = page_name
+        self.rev = rev
         self.attachment = attachment
         self.page = page
         if matches is None:
@@ -330,15 +333,16 @@
                 displayHits = self.hits
 
             for page in displayHits:
+                # TODO handle interwiki search hits
                 if page.attachment:
                     querydict = {
                         'action': 'AttachFile',
                         'do': 'view',
                         'target': page.attachment,
                     }
-                elif page.page.rev and page.page.rev != page.page.getRevList()[0]:
+                elif page.rev and page.rev != page.page.getRevList()[0]:
                     querydict = {
-                        'rev': page.page.rev,
+                        'rev': page.rev,
                     }
                 else:
                     querydict = None
@@ -409,6 +413,7 @@
                 displayHits = self.hits
 
             for page in displayHits:
+                # TODO handle interwiki search hits
                 matchInfo = ''
                 if info:
                     matchInfo = self.formatInfo(f, page)
@@ -424,9 +429,9 @@
                     querydict = None
                 else:
                     fmt_context = self.formatContext(page, context, maxlines)
-                    if page.page.rev and page.page.rev != page.page.getRevList()[0]:
+                    if page.rev and page.rev != page.page.getRevList()[0]:
                         querydict = {
-                            'rev': page.page.rev,
+                            'rev': page.rev,
                         }
                     else:
                         querydict = None
@@ -819,16 +824,15 @@
     @param estimated_hits: if true, use this estimated hit count
     """
     result_hits = []
-    for wikiname, page, attachment, match in hits:
+    for wikiname, page, attachment, match, rev in hits:
         if wikiname in (request.cfg.interwikiname, 'Self'): # a local match
             if attachment:
-                result_hits.append(FoundAttachment(page.page_name,
-                    attachment, page=page, matches=match))
+                result_hits.append(FoundAttachment(page.page_name, attachment, matches=match, page=page, rev=rev))
             else:
-                result_hits.append(FoundPage(page.page_name, match, page))
+                result_hits.append(FoundPage(page.page_name, matches=match, page=page, rev=rev))
         else:
-            result_hits.append(FoundRemote(wikiname, page.page_name,
-                attachment, match, page))
+            page_name = page # for remote wikis, we have the page_name, not the page obj
+            result_hits.append(FoundRemote(wikiname, page_name, attachment, matches=match, rev=rev))
     elapsed = time.time() - start
     count = request.rootpage.getPageCount()
     return SearchResults(query, result_hits, count, elapsed, sort,
--- a/MoinMoin/security/antispam.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/security/antispam.py	Thu Jan 29 09:44:57 2009 +0100
@@ -184,7 +184,7 @@
                         # Log error and raise SaveError, PageEditor should handle this.
                         _ = editor.request.getText
                         msg = _('Sorry, can not save page because "%(content)s" is not allowed in this wiki.') % {
-                                'content': match.group()
+                                  'content': wikiutil.escape(match.group())
                               }
                         logging.info(msg)
                         raise editor.SaveError(msg)
--- a/MoinMoin/version.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/version.py	Thu Jan 29 09:44:57 2009 +0100
@@ -4,7 +4,7 @@
     MoinMoin - Version Information
 
     @copyright: 2000-2006 Juergen Hermann <jh@web.de>,
-                2003-2008 MoinMoin:ThomasWaldmann
+                2003-2009 MoinMoin:ThomasWaldmann
     @license: GNU GPL, see COPYING for details.
 """
 import sys
--- a/MoinMoin/wikiutil.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/MoinMoin/wikiutil.py	Thu Jan 29 09:44:57 2009 +0100
@@ -837,7 +837,7 @@
 
     homewiki = request.cfg.user_homewiki
     if homewiki == request.cfg.interwikiname:
-        homewiki = 'Self'
+        homewiki = u'Self'
 
     return homewiki, username
 
--- a/README	Thu Jan 29 09:34:48 2009 +0100
+++ b/README	Thu Jan 29 09:44:57 2009 +0100
@@ -2,7 +2,7 @@
 ==================================
 
 Copyright (c) 2000-2006 by Juergen Hermann <jh@web.de>
-Copyright (c) 2006-2008 The MoinMoin development team, see
+Copyright (c) 2006-2009 The MoinMoin development team, see
                         http://moinmo.in/MoinCoreTeamGroup
 
 All rights reserved, see docs/licenses/COPYING for details.
--- a/docs/CHANGES	Thu Jan 29 09:34:48 2009 +0100
+++ b/docs/CHANGES	Thu Jan 29 09:44:57 2009 +0100
@@ -47,7 +47,24 @@
 
 Version 1.8.current:
   Bug fixes:
-    * Fix update xapian index by trivial changes (MoinMoinBugs/TrivialChangesDoesNotUpdateTheXapianIndex)
+    * Fix AttachFile XSS issues.
+    * Fix anchor parsing for interwiki links and #redirect processing
+      instruction.
+    * user.apply_recovery_token: key must be of type string (for Python 2.6).
+    * Fix MoinMoinBugs/GuiEditorBreaksIndentedTable.
+    * Fix autofilter javascript breakage caused by including a databrowser
+      widget.
+    * Made cfg.interwikiname a unicode object (str only worked for ascii).
+    * Fix Xapian search index updating for trivial changes.
+    * Make logging handlers defined in logging.handlers work (e.g.
+      class=handlers.RotatingFileHandler)
+
+  Other changes:
+    * Added setting for enhanced privacy: cfg.log_remote_addr (default: True),
+      it controls whether moin logs the remote's IP/hostname to edit-log and
+      event-log. Use log_remote_addr = False to enhance privacy.
+    * Streamline attachment_drawing formatter behaviour.
+
 
 
 Version 1.8.1:
@@ -418,6 +435,12 @@
       groups. \S+ means the category key can be anything non-blank.
       If you like to simultaneously support multiple languages, use something
       like this: ur'(?P<all>(Kategorie|Category)(?P<key>\S+))'
+      HINT: after changing your configuration, please rebuild the cache:
+        * stop moin
+        * moin ... maint cleancache
+        * start moin
+      If you don't do this, your groups / dicts will stop working (and also
+      your ACLs that use those groups). You better do a test whether it works.
 
     * Xapian search / indexing / stemming:
       * Use text/<format> as mimetype for pages.
--- a/docs/INSTALL.html	Thu Jan 29 09:34:48 2009 +0100
+++ b/docs/INSTALL.html	Thu Jan 29 09:44:57 2009 +0100
@@ -78,46 +78,46 @@
 ImportError: No module named MoinMoin
 &gt;&gt;&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-155"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-156"></span><p class="line862">then you have to tune your installation. Try modifying <tt class="backtick">sys.path</tt>, as described above. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-157"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-158"></span><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-BasicInstallation.Whathasbeeninstalled">What has been installed</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-159"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-160"></span><p class="line862">So, you have a ready-to-work Moin<tt class="backtick"></tt>Moin installation now. Congratulations! Before you go on to configuring it, take a look at the various files and directories that have been installed. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-161"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-162"></span><p class="line867"><img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> It is important that you understand the different locations used in a Moin<tt class="backtick"></tt>Moin setup, so read this carefully. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-163"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-164"></span><p class="line862">In the following descriptions, <tt class="backtick">PREFIX</tt> is what you used with the <tt class="backtick">setup.py</tt> command, or a default location if you didn't use the <tt class="backtick">--prefix</tt> option. (Typical default values on Linux are <tt class="backtick">/usr</tt> and <tt class="backtick">/usr/local</tt>.) <tt class="backtick">X.Y</tt> is the version of Python. Typically, this is <tt class="backtick">2.3</tt>, <tt class="backtick">2.4</tt> or <tt class="backtick">2.5</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-165"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-166"></span><p class="line862">Look into <tt class="backtick">install.log</tt> to find out about following important locations: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-167"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-168"></span><ul><li><p class="line891"><strong><tt class="backtick">MoinMoin</tt> directory</strong>, usually <tt class="backtick">PREFIX/lib/pythonX.Y/site-packages/MoinMoin</tt> -- this is where the Moin<tt class="backtick"></tt>Moin <strong>source code</strong> is located <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-169"></span></li><li><p class="line891"><strong><tt class="backtick">share</tt> directory</strong>, usually <tt class="backtick">PREFIX/share/moin</tt> - this is where the <em>templates</em> are located <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-170"></span><ul><li><p class="line891"><strong><tt class="backtick">data</tt></strong> directory (wiki pages, users, etc.) - only Moin<tt class="backtick"></tt>Moin should access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-171"></span></li><li><p class="line891"><strong><tt class="backtick">underlay</tt></strong> directory (wiki pages) - only Moin<tt class="backtick"></tt>Moin should access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-172"></span></li><li><p class="line891"><strong><tt class="backtick">htdocs</tt></strong> directory with html support files (images for the various themes, etc.) - the web server will need to access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-173"></span></li><li><p class="line891"><strong><tt class="backtick">server</tt></strong> - Moin<tt class="backtick"></tt>Moin example startup files (like <tt class="backtick">moin.cgi</tt> for CGI, and other files for other startup methods) <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-174"></span></li><li><p class="line891"><strong><tt class="backtick">config</tt></strong> - Moin<tt class="backtick"></tt>Moin example configuration files (like <tt class="backtick">wikiconfig.py</tt>) <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-175"></span></li></ul></li><li><p class="line891"><strong><tt class="backtick">bin</tt></strong> directory with some scripts that help you use the Moin<tt class="backtick"></tt>Moin shell commands <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-176"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-177"></span></li></ul><p class="line862">We talk of <em>templates</em> in the <tt class="backtick">share</tt> directory because you usually will not use those files at that location, but copy them elsewhere when you need them. This way, you can set-up several wikis without problems, and easily upgrade to new Moin<tt class="backtick"></tt>Moin versions. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-178"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.bottom"></span></div> <span class="anchor" id="line-48"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-49"></span><span class="anchor" id="wikiinstance-creation"></span> <span class="anchor" id="line-50"></span><div dir="ltr" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.top"></span>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-8"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-9"></span><p class="line862">After you have downloaded and installed Moin<tt class="backtick"></tt>Moin, you will want to "have a wiki". As explained at the bottom of <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>, you have to copy several directories and files. This way, you can have as many wikis as you want, and you can easily upgrade Moin<tt class="backtick"></tt>Moin: only the original files will be overwritten, not your copies. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-10"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-11"></span><p class="line862">Every time you copy those files (and modify the configuration of your server accordingly), you create what is called a <em>wiki instance</em>. Each wiki instance is independent from the others, with a different configuration, different pages, different users, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-12"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-13"></span><p class="line874">Some of the steps you need to take depend on which web server and which operating system you use. They are described on dedicated pages, which you should read (at least the beginning) before reading this one. Some other steps are common to every webserver and operating system (copying files around, setting permissions), and this is what is described here. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-14"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-15"></span><p class="line862">Linux users can use <a class="attachment" href="http://master18.moinmo.in/HelpOnInstalling/WikiInstanceCreation?action=AttachFile&amp;do=view&amp;target=createinstance.sh" title="attachment:createinstance.sh">createinstance.sh</a> (a bash script that creates the instance) instead of doing all steps manually: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-16"></span><ol type="1"><li>If anything is unclear, just read the sections below for more hints. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-17"></span></li><li>Have a look into the script before running it, if all settings are correct for your setup: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-18"></span><ul><li>USER and GROUP should be the user and group used by your web-server for running moin. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-19"></span></li><li><p class="line862">SHARE is where the shared files were copied to, see install.log from the <tt class="backtick">setup.py&nbsp;install</tt> step <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-20"></span></li></ul></li><li>The script takes a single parameter: the location of your wiki instance (see "Choose a location" section below): <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-21"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-22"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-23"></span><pre># ./createinstance.sh /path/to/mywiki</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-24"></span></li><li>Now continue in section "Tune configuration" <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-25"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-26"></span></li></ol><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-159"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-160"></span><p class="line862">So, you have a ready-to-work Moin<tt class="backtick"></tt>Moin installation now. Congratulations! Before you go on to configuring it, take a look at the various files and directories that have been installed. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-161"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-162"></span><p class="line867"><img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> It is important that you understand the different locations used in a Moin<tt class="backtick"></tt>Moin setup, so read this carefully. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-163"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-164"></span><p class="line862">In the following descriptions, <tt class="backtick">PREFIX</tt> is what you used with the <tt class="backtick">setup.py</tt> command, or a default location if you didn't use the <tt class="backtick">--prefix</tt> option. (Typical default values on Linux are <tt class="backtick">/usr</tt> and <tt class="backtick">/usr/local</tt>.) <tt class="backtick">X.Y</tt> is the version of Python. Typically, this is <tt class="backtick">2.3</tt>, <tt class="backtick">2.4</tt> or <tt class="backtick">2.5</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-165"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-166"></span><p class="line862">Look into <tt class="backtick">install.log</tt> to find out about following important locations: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-167"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-168"></span><ul><li><p class="line891"><strong><tt class="backtick">MoinMoin</tt> directory</strong>, usually <tt class="backtick">PREFIX/lib/pythonX.Y/site-packages/MoinMoin</tt> -- this is where the Moin<tt class="backtick"></tt>Moin <strong>source code</strong> is located <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-169"></span></li><li><p class="line891"><strong><tt class="backtick">share</tt> directory</strong>, usually <tt class="backtick">PREFIX/share/moin</tt> - this is where the <em>templates</em> are located <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-170"></span><ul><li><p class="line891"><strong><tt class="backtick">data</tt></strong> directory (wiki pages, users, etc.) - only Moin<tt class="backtick"></tt>Moin should access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-171"></span></li><li><p class="line891"><strong><tt class="backtick">underlay</tt></strong> directory (wiki pages) - only Moin<tt class="backtick"></tt>Moin should access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-172"></span></li><li><p class="line891"><strong><tt class="backtick">htdocs</tt></strong> directory with html support files (images for the various themes, etc.) - the web server will need to access this <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-173"></span></li><li><p class="line891"><strong><tt class="backtick">server</tt></strong> - Moin<tt class="backtick"></tt>Moin example startup files (like <tt class="backtick">moin.cgi</tt> for CGI, and other files for other startup methods) <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-174"></span></li><li><p class="line891"><strong><tt class="backtick">config</tt></strong> - Moin<tt class="backtick"></tt>Moin example configuration files (like <tt class="backtick">wikiconfig.py</tt>) <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-175"></span></li></ul></li><li><p class="line891"><strong><tt class="backtick">bin</tt></strong> directory with some scripts that help you use the Moin<tt class="backtick"></tt>Moin shell commands <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-176"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-177"></span></li></ul><p class="line862">We talk of <em>templates</em> in the <tt class="backtick">share</tt> directory because you usually will not use those files at that location, but copy them elsewhere when you need them. This way, you can set-up several wikis without problems, and easily upgrade to new Moin<tt class="backtick"></tt>Moin versions. Please see <a class="nonexistent" href="http://master18.moinmo.in/WikiInstanceCreation">WikiInstanceCreation</a> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-178"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.bottom"></span></div> <span class="anchor" id="line-48"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-49"></span><span class="anchor" id="wikiinstance-creation"></span> <span class="anchor" id="line-50"></span><div dir="ltr" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.top"></span>
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-8"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-9"></span><p class="line862">After you have downloaded and installed Moin<tt class="backtick"></tt>Moin, you will want to "have a wiki". As explained at the bottom of <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>, you have to copy several directories and files. This way, you can have as many wikis as you want, and you can easily upgrade Moin<tt class="backtick"></tt>Moin: only the original files will be overwritten, not your copies. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-10"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-11"></span><p class="line862">Every time you copy those files (and modify the configuration of your server accordingly), you create what is called a <em>wiki instance</em>. Each wiki instance is independent from the others, with a different configuration, different pages, different users, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-12"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-13"></span><p class="line874">Some of the steps you need to take depend on which web server and which operating system you use. They are described on dedicated pages, which you should read (at least the beginning) before reading this one. Some other steps are common to every webserver and operating system (copying files around, setting permissions), and this is what is described here. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-14"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-15"></span><p class="line862">Linux users can <a class="attachment" href="http://master18.moinmo.in/HelpOnInstalling/WikiInstanceCreation?action=AttachFile&amp;do=view&amp;target=createinstance.sh" title="attachment:createinstance.sh">download and use createinstance.sh</a> (a bash script that creates the instance) instead of doing all steps manually: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-16"></span><ol type="1"><li>If anything is unclear, just read the sections below for more hints. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-17"></span></li><li>Have a look into the script before running it, if all settings are correct for your setup: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-18"></span><ul><li><p class="line862">If your system does not have <tt class="backtick">/bin/bash</tt>. try <tt class="backtick">/bin/sh</tt> (or whatever your shell is called) - see the first line in the script. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-19"></span></li><li>USER and GROUP should be the user and group used by your web-server for running moin. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-20"></span></li><li><p class="line862">SHARE is where the shared files were copied to, see install.log from the <tt class="backtick">setup.py&nbsp;install</tt> step <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-21"></span></li></ul></li><li><p class="line862">Make the script executable (e.g. <tt class="backtick">chmod&nbsp;+x&nbsp;createinstance.sh</tt>). <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-22"></span></li><li>The script takes a single parameter: the location of your wiki instance (see "Choose a location" section below): <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-23"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-24"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-25"></span><pre># ./createinstance.sh /path/to/mywiki</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-26"></span></li><li>Now continue in section "Tune configuration" <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-27"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-28"></span></li></ol><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Readthisfirst">Read this first</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-27"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-28"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-29"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-30"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Securitywarnings">Security warnings</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-29"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-30"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: make sure that your <tt class="backtick">data</tt> directory and your configuration files are not accessible through your web server. Do not put your wiki directory in <tt class="backtick">public_html</tt>, <tt class="backtick">Sites</tt> or any other directory your web server can access. The web server only needs to access the file in the <tt class="backtick">htdocs</tt> directory and the <tt class="backtick">moin.cgi</tt> script! (Or whatever script your server uses to start Moin<tt class="backtick"></tt>Moin.)</strong> </td>
-</tr>
-</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-31"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-32"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: make sure that the <tt class="backtick">data</tt> directory and its subdirectories are not readable and not writeable by users other than the web server user. If you need to give worldwide read-write permissions to get it working, be aware that you are doing a very unsecure setup, that can be compromised by any other user or program on your computer.</strong> </td>
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-31"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-32"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: make sure that your <tt class="backtick">data</tt> directory and your configuration files are not accessible through your web server. Do not put your wiki directory in <tt class="backtick">public_html</tt>, <tt class="backtick">Sites</tt> or any other directory your web server can access. The web server only needs to access the file in the <tt class="backtick">htdocs</tt> directory and the <tt class="backtick">moin.cgi</tt> script! (Or whatever script your server uses to start Moin<tt class="backtick"></tt>Moin.)</strong> </td>
 </tr>
-</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-33"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-34"></span><p class="line867">
+</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-33"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-34"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: make sure that the <tt class="backtick">data</tt> directory and its subdirectories are not readable and not writeable by users other than the web server user. If you need to give worldwide read-write permissions to get it working, be aware that you are doing a very unsecure setup, that can be compromised by any other user or program on your computer.</strong> </td>
+</tr>
+</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-35"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-36"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.NotetoWindowsusers">Note to Windows users</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-35"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-36"></span><p class="line874">All the commands below are Linux commands. The text descriptions that introduce them should be enough to help you understand what you need to do. Use the Windows Explorer, or the appropriate text-mode commands. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-37"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-38"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-37"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-38"></span><p class="line874">All the commands below are Linux commands. The text descriptions that introduce them should be enough to help you understand what you need to do. Use the Windows Explorer, or the appropriate text-mode commands. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-39"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-40"></span><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Chooseawikiname">Choose a wiki name</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-39"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-40"></span><p class="line874">Choose a unique name for the new wiki instance you want to create. It should be a short word, something that reflects what you intend to use the wiki for, like the name of your organization, of your team, of the project you are working on, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-41"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-42"></span><p class="line862">The name "<tt class="backtick">mywiki</tt>" is used as an example in the various commands below. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-43"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-44"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-41"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-42"></span><p class="line874">Choose a unique name for the new wiki instance you want to create. It should be a short word, something that reflects what you intend to use the wiki for, like the name of your organization, of your team, of the project you are working on, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-43"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-44"></span><p class="line862">The name "<tt class="backtick">mywiki</tt>" is used as an example in the various commands below. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-45"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-46"></span><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Choosealocation">Choose a location</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-45"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-46"></span><p class="line874">Choose a directory on your disk, it will contain all the files needed for your wiki instance. At the beginning, your wiki instance will use approximately 10 MB of disk space. Then of course, it will grow depending on the way your wiki is used. A personal wiki, even with many pages, might only use 30 MB or 40 MB of disk space. A popular wiki, or a wiki with many files attached to the pages, might use much more, of course. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-47"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-48"></span><p class="line862">If you are the administrator (or root) of the server, you can use anything you like or that makes sense to you, for example <tt class="backtick">/usr/local/var/moin</tt>, <tt class="backtick">/mnt/wikis</tt>, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-50"></span><p class="line862">If you are a simple user, you will probably only be allowed to write in your personal, "home" directory. Choose a subdirectory that makes sense to you, for example the <tt class="backtick">share/moin</tt> subdirectory. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-52"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-47"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-48"></span><p class="line874">Choose a directory on your disk, it will contain all the files needed for your wiki instance. At the beginning, your wiki instance will use approximately 10 MB of disk space. Then of course, it will grow depending on the way your wiki is used. A personal wiki, even with many pages, might only use 30 MB or 40 MB of disk space. A popular wiki, or a wiki with many files attached to the pages, might use much more, of course. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-50"></span><p class="line862">If you are the administrator (or root) of the server, you can use anything you like or that makes sense to you, for example <tt class="backtick">/usr/local/var/moin</tt>, <tt class="backtick">/mnt/wikis</tt>, etc. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-52"></span><p class="line862">If you are a simple user, you will probably only be allowed to write in your personal, "home" directory. Choose a subdirectory that makes sense to you, for example the <tt class="backtick">share/moin</tt> subdirectory. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-53"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-54"></span><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Collectsomeimportantinformation">Collect some important information</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-53"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-54"></span><p class="line874">This is where the instructions differ according to the web server and operating system you use, and whether you are the administrator or a simple user. See the appropriate pages for your web server and operating system combination. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-55"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-56"></span><p class="line862">On Linux, the <tt class="backtick">export</tt> command will be used to remember the collected information. Windows users should write it down carefully (maybe cutting-and-pasting in a Notepad window), or store it in environment variables if they use the command prompt. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-57"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-58"></span><ul><li><p class="line891"><tt class="backtick">PREFIX</tt> is the prefix you used during the <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-59"></span></li><li><p class="line891"><tt class="backtick">SHARE</tt> is the name of the <tt class="backtick">share</tt> directory, as discussed at the bottom of <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-60"></span></li><li><p class="line891"><tt class="backtick">WIKILOCATION</tt> is the name of the directory that will contain your wiki instance <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-61"></span></li><li><p class="line891"><tt class="backtick">INSTANCE</tt> is the directory containing the wiki instance. It cannot be an existing directory readable through Apache, otherwise it will fail. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-62"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-63"></span></li></ul><p class="line874">If you are an administrator, you also need to collect the following: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-64"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-65"></span><ul><li><p class="line891"><tt class="backtick">USER</tt> is the user name of the web server <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-66"></span></li><li><p class="line891"><tt class="backtick">GROUP</tt> is the name of the group to which the web server belongs <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-67"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-68"></span></li></ul><p class="line874">Now, Linux folks, let's store these settings in memory: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-69"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-70"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-72"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-74"></span><pre>&gt; export PREFIX=/usr                # this might be something else
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-55"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-56"></span><p class="line874">This is where the instructions differ according to the web server and operating system you use, and whether you are the administrator or a simple user. See the appropriate pages for your web server and operating system combination. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-57"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-58"></span><p class="line862">On Linux, the <tt class="backtick">export</tt> command will be used to remember the collected information. Windows users should write it down carefully (maybe cutting-and-pasting in a Notepad window), or store it in environment variables if they use the command prompt. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-59"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-60"></span><ul><li><p class="line891"><tt class="backtick">PREFIX</tt> is the prefix you used during the <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-61"></span></li><li><p class="line891"><tt class="backtick">SHARE</tt> is the name of the <tt class="backtick">share</tt> directory, as discussed at the bottom of <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-62"></span></li><li><p class="line891"><tt class="backtick">WIKILOCATION</tt> is the name of the directory that will contain your wiki instance <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-63"></span></li><li><p class="line891"><tt class="backtick">INSTANCE</tt> is the directory containing the wiki instance. It cannot be an existing directory readable through Apache, otherwise it will fail. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-64"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-65"></span></li></ul><p class="line874">If you are an administrator, you also need to collect the following: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-66"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-67"></span><ul><li><p class="line891"><tt class="backtick">USER</tt> is the user name of the web server <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-68"></span></li><li><p class="line891"><tt class="backtick">GROUP</tt> is the name of the group to which the web server belongs <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-69"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-70"></span></li></ul><p class="line874">Now, Linux folks, let's store these settings in memory: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-72"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-74"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-76"></span><pre>&gt; export PREFIX=/usr                # this might be something else
 &gt; export SHARE=$PREFIX/share/moin   # this should be correct for most people
 &gt; export WIKILOCATION=$SHARE        # this is just an example
-&gt; export INSTANCE=mywiki            # this is just an example</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-76"></span><p class="line874">Administrators also need the following two lines: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-78"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-79"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-80"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-81"></span><pre>&gt; export USER=www-data              # this is just an example
-&gt; export GROUP=www-data             # this is just an example</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-82"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-83"></span><p class="line867">
+&gt; export INSTANCE=mywiki            # this is just an example</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-78"></span><p class="line874">Administrators also need the following two lines: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-79"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-80"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-81"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-82"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-83"></span><pre>&gt; export USER=www-data              # this is just an example
+&gt; export GROUP=www-data             # this is just an example</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-84"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-85"></span><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Copythefiles">Copy the files</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-84"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-85"></span><p class="line862">To create your new instance, you first need to create a directory named like your instance, inside the <tt class="backtick">WIKILOCATION</tt>. Then you need to copy the <tt class="backtick">data</tt> and <tt class="backtick">underlay</tt> directories from your <tt class="backtick">SHARE</tt> directory into your instance directory. Finally, you need to copy the <tt class="backtick">wikiconfig.py</tt> file from the <tt class="backtick">config</tt> directory into the instance directory. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-86"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-87"></span><p class="line874">Linux folks need to just type these commands: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-89"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-91"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-92"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-94"></span><pre>&gt; cd $WIKILOCATION
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-86"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-87"></span><p class="line862">To create your new instance, you first need to create a directory named like your instance, inside the <tt class="backtick">WIKILOCATION</tt>. Then you need to copy the <tt class="backtick">data</tt> and <tt class="backtick">underlay</tt> directories from your <tt class="backtick">SHARE</tt> directory into your instance directory. Finally, you need to copy the <tt class="backtick">wikiconfig.py</tt> file from the <tt class="backtick">config</tt> directory into the instance directory. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-89"></span><p class="line874">Linux folks need to just type these commands: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-91"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-92"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-94"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-95"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-96"></span><pre>&gt; cd $WIKILOCATION
 &gt; mkdir $INSTANCE                   # make a directory for this instance
 &gt; cp -R $SHARE/data $INSTANCE       # copy template data directory
 &gt; cp -R $SHARE/underlay $INSTANCE   # copy underlay data directory
-&gt; cp $SHARE/config/wikiconfig.py $INSTANCE   # copy wiki configuration sample file</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-95"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-96"></span><ul><li style="list-style-type:none"><p class="line891"><img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> Note that you just need to keep one underlay directory on your system if you are running multiple wikis (e.g. in a farm.) <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-97"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-98"></span></li></ul><p class="line867">
+&gt; cp $SHARE/config/wikiconfig.py $INSTANCE   # copy wiki configuration sample file</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-97"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-98"></span><ul><li style="list-style-type:none"><p class="line891"><img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> Note that you just need to keep one underlay directory on your system if you are running multiple wikis (e.g. in a farm.) <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-100"></span></li></ul><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Setpermissions">Set permissions</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-100"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-102"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Administrators">Administrators</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-102"></span><p class="line874">Administrators need to restrict the permissions of the files, so that only the web server (and the administrator of course) can read and write them. For maximum security, no other user on the machine should be able to read or write anything in the wiki instance directory. Don't forget that this directory contains sensitive information, notably the (encrypted) passwords of the wiki users. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-103"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-104"></span><p class="line874">On Linux, the following commands should be enough: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-105"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-106"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-107"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-108"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-109"></span><pre>&gt; chown -R $USER.$GROUP $INSTANCE   # check that USER and GROUP are correct
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-103"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-104"></span><p class="line874">Administrators need to restrict the permissions of the files, so that only the web server (and the administrator of course) can read and write them. For maximum security, no other user on the machine should be able to read or write anything in the wiki instance directory. Don't forget that this directory contains sensitive information, notably the (encrypted) passwords of the wiki users. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-105"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-106"></span><p class="line874">On Linux, the following commands should be enough: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-107"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-108"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-109"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-110"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-111"></span><pre>&gt; chown -R $USER.$GROUP $INSTANCE   # check that USER and GROUP are correct
 &gt; chmod -R ug+rwX $INSTANCE         # USER.GROUP may read and write
-&gt; chmod -R o-rwx $INSTANCE          # everybody else is rejected</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-110"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-111"></span><p class="line867">
+&gt; chmod -R o-rwx $INSTANCE          # everybody else is rejected</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-113"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Normalusers">Normal users</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-113"></span><p class="line862">Normal users, on the contrary, need to broaden the permissions of the files, so that the web server can read and write them. On recent Windows versions, and on some versions of Linux and other systems, <em>access control lists</em> can be used to that effect. They are, however, powerful and complicated, much beyond the scope of this document. Ask a knowledgeable person about them. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-114"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-115"></span><p class="line862">Without them, normal users have to allow <em>everybody</em> to access the instance directory. This is the only way the web server can enter it and do its work. This is, of course, <strong>VERY INSECURE</strong>, since any other user and program on the server can read the directory. You should <strong>not</strong> use such a setup for a wiki open to the public. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-116"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-117"></span><p class="line874">On Linux, the following commands will open the instance directory to the whole world: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-118"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-119"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-120"></span><pre>&gt; chmod -R a+rwX $INSTANCE</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-121"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-122"></span><p class="line867"><strong>Note:</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-123"></span><ul><li><p class="line862">it is also possible to put the web server and the normal user in the same <em>group</em>, and then only open the instance directory to the members of that group. This is a bit more secure (depending on who else is in the group), but you need the cooperation of the server administrator; he is the one setting up groups. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-124"></span></li><li><p class="line862">the best other possibility is that the server administrator sets up <tt class="backtick">suexec</tt> to execute CGI scripts in user directories under the user id of that user. You don't need to give world permissions that way, so it is a quite secure setup, but you also need cooperation of the administrator. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-125"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-126"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-127"></span></li></ul><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-114"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-115"></span><p class="line862">Normal users, on the contrary, need to broaden the permissions of the files, so that the web server can read and write them. On recent Windows versions, and on some versions of Linux and other systems, <em>access control lists</em> can be used to that effect. They are, however, powerful and complicated, much beyond the scope of this document. Ask a knowledgeable person about them. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-116"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-117"></span><p class="line862">Without them, normal users have to allow <em>everybody</em> to access the instance directory. This is the only way the web server can enter it and do its work. This is, of course, <strong>VERY INSECURE</strong>, since any other user and program on the server can read the directory. You should <strong>not</strong> use such a setup for a wiki open to the public. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-118"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-119"></span><p class="line874">On Linux, the following commands will open the instance directory to the whole world: <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-120"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-121"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-122"></span><pre>&gt; chmod -R a+rwX $INSTANCE</pre><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-123"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-124"></span><p class="line867"><strong>Note:</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-125"></span><ul><li><p class="line862">it is also possible to put the web server and the normal user in the same <em>group</em>, and then only open the instance directory to the members of that group. This is a bit more secure (depending on who else is in the group), but you need the cooperation of the server administrator; he is the one setting up groups. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-126"></span></li><li><p class="line862">the best other possibility is that the server administrator sets up <tt class="backtick">suexec</tt> to execute CGI scripts in user directories under the user id of that user. You don't need to give world permissions that way, so it is a quite secure setup, but you also need cooperation of the administrator. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-127"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-128"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-129"></span></li></ul><p class="line867">
 <h1 id="HelpOnInstalling.2BAC8-WikiInstanceCreation.Tuneconfiguration">Tune configuration</h1>
-<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-128"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-129"></span><p class="line874">Now, you need to tune the configuration of your web server and of your wiki instance. Look at the appropriate help page for your web server, then come back here to tune the settings of your wiki instance. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-130"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-131"></span><p class="line862">Edit <tt class="backtick">wikiconfig.py</tt>. The default settings should work fine in most cases, but there are some things that you will probably want to change, like the name and logo of your wiki! <img alt=":)" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/smile.png" title=":)" width="16" /> Read the comments inside <tt class="backtick">wikiconfig.py</tt>, they will guide you through this process. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-132"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-133"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: don't forget to restart your web server in order to apply changes in <tt class="backtick">wikiconfig.py</tt></strong> </td>
+<span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-130"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-131"></span><p class="line874">Now, you need to tune the configuration of your web server and of your wiki instance. Look at the appropriate help page for your web server, then come back here to tune the settings of your wiki instance. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-132"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-133"></span><p class="line862">Edit <tt class="backtick">wikiconfig.py</tt>. The default settings should work fine in most cases, but there are some things that you will probably want to change, like the name and logo of your wiki! <img alt=":)" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/smile.png" title=":)" width="16" /> Read the comments inside <tt class="backtick">wikiconfig.py</tt>, they will guide you through this process. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-134"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-135"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/alert.png" title="/!\" width="16" /> <strong>Warning: don't forget to restart your web server in order to apply changes in <tt class="backtick">wikiconfig.py</tt></strong> </td>
 </tr>
-</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-134"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-135"></span><p class="line867"><a href="http://master18.moinmo.in/HelpOnConfiguration">HelpOnConfiguration</a> contains all the details about all the options, in case the comments in <tt class="backtick">wikiconfig.py</tt> are not enough. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-136"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.bottom"></span></div> <span class="anchor" id="line-51"></span><hr class="hr1" /><p class="line874"> <span class="anchor" id="line-52"></span><span class="anchor" id="linuxapache-install"></span> <span class="anchor" id="line-53"></span>
+</tbody></table></div><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-136"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-137"></span><p class="line867"><a href="http://master18.moinmo.in/HelpOnConfiguration">HelpOnConfiguration</a> contains all the details about all the options, in case the comments in <tt class="backtick">wikiconfig.py</tt> are not enough. <span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-138"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.bottom"></span></div> <span class="anchor" id="line-51"></span><hr class="hr1" /><p class="line874"> <span class="anchor" id="line-52"></span><span class="anchor" id="linuxapache-install"></span> <span class="anchor" id="line-53"></span>
 <h1>Linux Installation using Apache</h1>
 <div dir="ltr" id="HelpOnInstalling.2BAC8-ApacheOnLinux.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.top"></span>
 <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-9"></span><p class="line862">This page describes the particular steps that need to be taken to create a wiki instance using <a href="http://master18.moinmo.in/MoinMoin">MoinMoin</a> on Linux with the Apache web server. <strong>You should have already performed the <a href="http://master18.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>. </strong>Installations on other Unices like FreeBSD are very similar. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-10"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-11"></span><p class="line874">On this page two installation scenarios are discussed: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-12"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-13"></span><ol type="1"><li><p class="line862">You have <strong>Administrator Rights </strong>(you are user 'root' or may use sudo)  for a server and are able to install and modify files almost anywhere on the machine, and notably able to modifiy the Apache configuration. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-14"></span></li><li><p class="line862">You are a <strong>Simple User,</strong> only able to write files into your home directory, and unable to alter the master Apache configuration file. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-15"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-16"></span></li></ol><p class="line874">The following options are not mentioned here: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-17"></span><ul><li><p class="line862">using <strong>suEXEC</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-18"></span></li><li><p class="line862">using <strong>FastCGI </strong> (see <a href="http://master18.moinmo.in/HelpOnInstalling/FastCgi">../FastCgi</a>) <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-19"></span></li><li><p class="line862">using <strong>mod_python</strong> (see <a href="http://master18.moinmo.in/HelpOnInstalling/ApacheWithModPython">../ApacheWithModPython</a>) <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-20"></span></li><li><p class="line862">setting up a <strong>Root Wiki</strong> (see <a href="http://master18.moinmo.in/HelpOnConfiguration/ApacheVoodoo">HelpOnConfiguration/ApacheVoodoo</a>) <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-21"></span></li><li><p class="line862">For more advanced configurations and some tricks see also <a href="http://master18.moinmo.in/HelpMiscellaneous">HelpMiscellaneous</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-22"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-23"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-24"></span></li></ul><p class="line867"><strong>Table of contents</strong> <div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li>
@@ -665,7 +665,7 @@
 </tr>
 <tr>  <td><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-20"></span><p class="line891"><strong>C:\Python</strong> </td>
   <td><p class="line862">Python </td>
-  <td><p class="line862">C:\Python24 </td>
+  <td><p class="line862">C:\Python25 </td>
 </tr>
 <tr>  <td><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-21"></span><p class="line891"><strong>C:\Moin</strong> </td>
   <td><p class="line862">wiki instances </td>
@@ -675,18 +675,18 @@
 <h2 id="HelpOnInstalling.2BAC8-ApacheOnWin32.Installation">Installation</h2>
 <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-25"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.InstallingApache">Installing Apache</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-26"></span><ol type="1"><li><p class="line862">Download &amp; Install Apache 2.0.xx or greater <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-27"></span><ol type="i"><li><p class="line862">Apache2 was re-written with better support for non-unix systems, therefore the 2.0.xx series is <em>strongly</em> recommended for Windows users over Apache 1.3.xx. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-28"></span></li><li><p class="line862">Go to <a class="http" href="http://httpd.apache.org">http://httpd.apache.org</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-29"></span></li><li><p class="line862">download the <strong>Win32 Binary (MSI Installer)</strong> for the latest version of Apache 2. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-30"></span></li><li>Read the Apache documentation to determine the correct installation procedure for your situation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-31"></span></li><li>Test your Apache installation to make sure it runs correctly before proceeding (questions and problems with the Apache installation should be resolved through the resources provided by the Apache organization). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-32"></span></li></ol></li></ol><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-26"></span><ol type="1"><li><p class="line862">Download &amp; Install Apache 2.0.xx or greater <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-27"></span><ol type="i"><li><p class="line891"><em><strong>Note about versions:</strong></em> Apache2 was re-written with better support for non-unix systems (such as Windows), therefore the 2.xx series is <em>strongly</em> recommended for Windows users over Apache 1.3.xx. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-28"></span></li><li><p class="line862">Go to <a class="http" href="http://httpd.apache.org">http://httpd.apache.org</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-29"></span></li><li><p class="line862">download the <strong>Win32 Binary (MSI Installer)</strong> for the latest version of Apache 2. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-30"></span></li><li>Read the Apache documentation to determine the correct installation procedure for your situation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-31"></span></li><li>Test your Apache installation to make sure it runs correctly before proceeding (questions and problems with the Apache installation should be resolved through the resources provided by the Apache organization). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-32"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-33"></span></li></ol></li></ol><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.InstallingPython">Installing Python</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-33"></span><p class="line874">There are currently two different distributions of Python available for Windows. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-34"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-35"></span><ol type="1"><li><p class="line862">The normal Python distribution is available from <a class="http" href="http://www.python.org">http://www.python.org</a>. This is distributed as a windows executable (.exe) file. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-36"></span></li><li><p class="line862">An alternative distribution called <strong>ActivePython</strong> is available from <a class="http" href="http://www.activestate.com/">http://www.activestate.com/</a>. This distribution uses the MSI Installer and contains some tools specific to the Windows operating system and a popular Windows IDE called Pythonwin, which may be useful <span class="u"><em>if</em></span> you also plan to develop in Python.  ActivePython is available for free; an email address is requested (but not required) before downloading. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-37"></span></li></ol><p class="line867">MoinMoin will work with either distribution, but requires Python release 2.3 or later.  Download and install the distribution of your choice.  Questions and problems dealing with the Python installation process should be resolved through the use of resources provided by Python.org or ActiveState.  Be sure your Python installation is correct before proceeding. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-38"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-39"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-34"></span><p class="line874">There are currently two different distributions of Python available for Windows. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-35"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-36"></span><ol type="1"><li><p class="line862">Download &amp; Install Python for Windows.  <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-37"></span><ol type="i"><li><p class="line862">Go to <a class="http" href="http://www.python.org">http://www.python.org</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-38"></span></li><li><p class="line891"><em><strong>Note about versions:</strong></em> Moin is well tested on Python version 2.5.x, and therefore recommended. Python 2.6.x should work fine, however is less tested. Moin currently does <span class="u">not</span> work with Python 3.0. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-39"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-40"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-41"></span></li></ol></li></ol><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.InstallingMoinMoin">Installing MoinMoin</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-40"></span><ol type="1"><li><p class="line891"><strong>Download MoinMoin</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-41"></span><ul><li><p class="line862">The most current version is here: <a class="interwiki" href="http://moinmo.in/MoinMoinDownload" title="MoinMoin">MoinMoinDownload</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-42"></span></li></ul></li><li><p class="line891"><strong>Expand the archive</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-43"></span><ul><li><p class="line891"><span class="u"><em>Note:</em></span> users of older versions of <a class="http" href="http://www.winzip.com">WinZip</a> report problem expanding .tar.gz files. Either upgrade or use the free <a class="http" href="http://7-zip.org/">7-Zip</a> utility. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-44"></span></li><li><p class="line862">Expand the archive into <tt>C:\TEMP</tt> or an alternative location. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-45"></span></li><li><p class="line862">You should then have a folder such as <tt>C:\TEMP\moin-x.x</tt> where "x.x" is the current release number. This folder will contain a <tt>setup.py</tt> file in addition to several other files and subfolders. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-46"></span></li></ul></li><li><p class="line891"><strong>Run Setup.py from the commandline</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-47"></span><ul><li><p class="line862">Open an DOS window (start &gt; Run... &gt; type <tt>cmd</tt>) and enter the commands:<br>
- <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-48"></span></li></ul><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-50"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-52"></span><pre>C:
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-42"></span><ol type="1"><li><p class="line891"><strong>Download MoinMoin</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-43"></span><ul><li><p class="line862">The most current version is here: <a class="interwiki" href="http://moinmo.in/MoinMoinDownload" title="MoinMoin">MoinMoinDownload</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-44"></span></li></ul></li><li><p class="line891"><strong>Expand the archive</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-45"></span><ul><li><p class="line891"><span class="u"><em>Note:</em></span> users of older versions of <a class="http" href="http://www.winzip.com">WinZip</a> report problem expanding .tar.gz files. Either upgrade or switch to the free <a class="http" href="http://7-zip.org/">7-Zip</a> utility. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-46"></span></li><li><p class="line862">Expand the archive into <tt>C:\TEMP</tt> or an alternative location. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-47"></span></li><li><p class="line862">You should then have a folder such as <tt>C:\TEMP\moin-x.x</tt> where "x.x" is the current release number. This folder will contain a <tt>setup.py</tt> file in addition to several other files and subfolders. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-48"></span></li></ul></li><li><p class="line891"><strong>Run Setup.py from the commandline</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-49"></span><ul><li><p class="line862">Open an DOS window (start &gt; Run... &gt; type <tt>cmd</tt>) and enter the commands:<br>
+ <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-50"></span></li></ul><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-52"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-53"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-54"></span><pre>C:
 cd \TEMP\moin-x.x
-C:\Python\python setup.py install --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-53"></span></li></ol><p class="line862">The above commands will add MoinMoin to your <tt>C:\Python</tt> installation and create an <tt>install.log</tt> file in <tt>C:\temp\moin-x.x</tt> listing all the copied files. You can use Windows Explorer to examine the newly created folders within <tt>C:\Python</tt>. You should find a <tt>C:\Python\share\moin</tt> folder and a <tt>C:\Python\Lib\site-packages\MoinMoin</tt> folder. The <tt>MoinMoin</tt> folder contains many Python scripts and several subfolders. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-54"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-55"></span><p class="line874">You are now ready to create a wiki instance. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-56"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-57"></span><p class="line867">
+C:\Python\python setup.py install --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-55"></span></li></ol><p class="line862">The above commands will add MoinMoin to your <tt>C:\Python</tt> installation and create an <tt>install.log</tt> file in <tt>C:\temp\moin-x.x</tt> listing all the copied files. You can use Windows Explorer to examine the newly created folders within <tt>C:\Python</tt>. You should find a <tt>C:\Python\share\moin</tt> folder and a <tt>C:\Python\Lib\site-packages\MoinMoin</tt> folder. The <tt>MoinMoin</tt> folder contains many Python scripts and several subfolders. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-56"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-57"></span><p class="line874">You are now ready to create a wiki instance. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-58"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-59"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-ApacheOnWin32.Configuration">Configuration</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-58"></span><p class="line862">It is a good practice to try to keep all of your personal or site specific data under a few root folders. This way you can easily backup your important data on a regular basis without having to waste time either backing up static files or picking out dozens of important folders scattered throughout your folder structure.  You should avoid placing your wiki data under the <tt>C:\Python</tt> folder so that you can later upgrade Python or MoinMoin without accidentally overwriting or deleting your wiki data.  For the same reason, you probably don't want to place your wiki data within the <tt>C:\Apache</tt> folder. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-59"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-60"></span><p class="line862">Choose a location appropriate for you; the following instructions assume you will be creating one or more wiki instances in <tt>C:\Moin\</tt> and the first wiki instance will be named <tt>mywiki</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-61"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-62"></span><p class="line862">You may replace the name <tt>mywiki</tt> with almost any name you wish, but do not use <tt>wiki</tt> because that is used by Moin<tt class="backtick"></tt>Moin for loading standard images and style sheets. Although this can be changed later, the name you choose for <tt>mywiki</tt> will become part of the url used to access your site, e.g. <tt>http://server.myorganization.org/mywiki/FrontPage</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-63"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-64"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-60"></span><p class="line862">It is a good practice to try to keep all of your personal or site specific data under a few root folders. This way you can easily backup your important data on a regular basis without having to waste time either backing up static files or picking out dozens of important folders scattered throughout your folder structure.  You should avoid placing your wiki data under the <tt>C:\Python</tt> folder so that you can later upgrade Python or MoinMoin without accidentally overwriting or deleting your wiki data.  For the same reason, you probably don't want to place your wiki data within the <tt>C:\Apache</tt> folder. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-61"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-62"></span><p class="line862">Choose a location appropriate for you; the following instructions assume you will be creating one or more wiki instances in <tt>C:\Moin\</tt> and the first wiki instance will be named <tt>mywiki</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-63"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-64"></span><p class="line862">You may replace the name <tt>mywiki</tt> with almost any name you wish, but do not use <tt>wiki</tt> because that is used by Moin<tt class="backtick"></tt>Moin for loading standard images and style sheets. Although this can be changed later, the name you choose for <tt>mywiki</tt> will become part of the url used to access your site, e.g. <tt>http://server.myorganization.org/mywiki/FrontPage</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-65"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-66"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.CreatingaWikiInstance">Creating a Wiki Instance</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-65"></span><p class="line862">Start an DOS window and enter the commands below. This will create a clone of the MoinMoin wiki in the mywiki folder. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-66"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-67"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-68"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-69"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-70"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-72"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-74"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-76"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-78"></span><pre>cd C:\
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-67"></span><p class="line862">Start an DOS window and enter the commands below. This will create a clone of the MoinMoin wiki in the mywiki folder. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-68"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-69"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-70"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-72"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-74"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-76"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-78"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-79"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-80"></span><pre>cd C:\
 md Moin
 md Moin\mywiki
 md Moin\mywiki\data
@@ -695,27 +695,27 @@
 xcopy data        C:\Moin\mywiki\data /E
 xcopy underlay    C:\Moin\mywiki\underlay /E
 copy  config\*.* C:\Moin\mywiki\*.*
-copy  server\*.* C:\Moin\mywiki\*.*</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-79"></span><p class="line874">If your server is going to run multiple wikis, you need to create additional clones. Do the same commands again, but use mywiki2 instead of mywiki. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-80"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-81"></span><p class="line867">
+copy  server\*.* C:\Moin\mywiki\*.*</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-81"></span><p class="line874">If your server is going to run multiple wikis, you need to create additional clones. Do the same commands again, but use mywiki2 instead of mywiki. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-82"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-83"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.Configuringwikiconfig.py">Configuring wikiconfig.py</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-82"></span><p class="line862">Edit <tt>C:\Moin\mywiki\wikiconfig.py</tt> and at least change <tt>sitename</tt> to the name of your wiki: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-83"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-84"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-85"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-86"></span><pre>    sitename = 'My Wiki'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-87"></span><p class="line862">Additionally, set <tt>data_dir</tt> and <tt>data_underlay_dir</tt> to the absolute paths of the particular directories. Like here: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-89"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-91"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-92"></span><pre>    data_dir = r'C:\Moin\mywiki\data'
-    data_underlay_dir = r'C:\Moin\mywiki\underlay'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-93"></span><p class="line862">For a public installation, you'll normally want to forbid some of the more dangerous actions. Add a line like this to <tt>wikiconfig.py</tt>: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-94"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-95"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-96"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-97"></span><pre>    actions_excluded = ['AttachFile', 'DeletePage', 'RenamePage', ]</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-98"></span><p class="line862">If you will <em><strong>not</strong></em> be running a Wiki farm (if you're not sure what this means, then you probably won't be), make sure to delete the <tt>farmconfig.py</tt> file from the <tt>C:\Moin\mywiki</tt> directory, or else <tt>moin.cgi</tt> will most likely give off various errors (including one about not being able to find a configuration file) and will ultimately fail to start up properly. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-100"></span><p class="line862">Additional configuration details can be found in <a href="http://master18.moinmo.in/HelpOnConfiguration">HelpOnConfiguration</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-102"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-84"></span><p class="line862">Edit <tt>C:\Moin\mywiki\wikiconfig.py</tt> and at least change <tt>sitename</tt> to the name of your wiki: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-85"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-86"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-87"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-88"></span><pre>    sitename = 'My Wiki'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-89"></span><p class="line862">Additionally, set <tt>data_dir</tt> and <tt>data_underlay_dir</tt> to the absolute paths of the particular directories. Like here: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-91"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-92"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-94"></span><pre>    data_dir = r'C:\Moin\mywiki\data'
+    data_underlay_dir = r'C:\Moin\mywiki\underlay'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-95"></span><p class="line862">For a public installation, you'll normally want to forbid some of the more dangerous actions. Add a line like this to <tt>wikiconfig.py</tt>: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-96"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-97"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-98"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-99"></span><pre>    actions_excluded = ['AttachFile', 'DeletePage', 'RenamePage', ]</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-100"></span><p class="line862">If you will <em><strong>not</strong></em> be running a Wiki farm (if you're not sure what this means, then you probably won't be), make sure to delete the <tt>farmconfig.py</tt> file from the <tt>C:\Moin\mywiki</tt> directory, or else <tt>moin.cgi</tt> will most likely give off various errors (including one about not being able to find a configuration file) and will ultimately fail to start up properly. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-102"></span><p class="line862">Additional configuration details can be found in <a href="http://master18.moinmo.in/HelpOnConfiguration">HelpOnConfiguration</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-103"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-104"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.Configuringmoin.cgi">Configuring moin.cgi</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-103"></span><p class="line862">Use your editor to edit the file <tt>C:\Moin\mywiki\moin.cgi</tt>.  Change the first line (the shebang statement) to point to your local Python executable program. Note the forward slashes -- Apache uses the Unix convention for folder separators. This tells Apache the <tt>moin.cgi</tt> file is an executable script that will be interpreted by a program to be loaded from <tt>C:/Python/python</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-104"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-105"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-106"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-107"></span><pre> #! C:/Python/python</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-108"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-105"></span><p class="line862">Use your editor to edit the file <tt>C:\Moin\mywiki\moin.cgi</tt>.  Change the first line (the shebang statement) to point to your local Python executable program. Note the forward slashes -- Apache uses the Unix convention for folder separators. This tells Apache the <tt>moin.cgi</tt> file is an executable script that will be interpreted by a program to be loaded from <tt>C:/Python/python</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-106"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-107"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-108"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-109"></span><pre> #! C:/Python25/python</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-110"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.ConfiguringApachehttpd.conf">Configuring Apache httpd.conf</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-109"></span><p class="line862">The next step is to tell Apache that is has more work to do. Use your editor to append the following lines to <tt>C:\Apache\conf\httpd.conf</tt>. Note the presence and absence of trailing slashes, it is important to enter the lines exactly as shown below. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-110"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-111"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-113"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-114"></span><pre>Alias       /moin_static160/ "C:/Python/share/moin/htdocs/"
-ScriptAlias /mywiki          "C:/Moin/mywiki/moin.cgi"</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-115"></span><p class="line862">The <strong>Alias</strong> line above instructs Apache to serve images, style sheets, etc. from the specified folders and subfolders. The <strong>Script<tt class="backtick"></tt>Alias</strong> line is needed once for each wiki instance, so if you have multiple wikis, repeat the statement using mywiki2, mywiki3, etc. The Script<tt class="backtick"></tt>Alias statement instructs Apache to execute scripts from the specified folder. See the Apache docs for a complete explanation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-116"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-117"></span><p class="line862">Test your changes by restarting your Apache server and try to access your newborn wiki with the URL <tt>http://127.0.0.1/mywiki</tt>. You should see the Front<tt class="backtick"></tt>Page, try to edit and save it, and if that works, verify your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-118"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-119"></span><p class="line862">And now, it is up to you and your user community to transform your wiki into an informative and useful tool. You will probably want to retain most of the Help<tt class="backtick"></tt>On~ pages dealing with editing, delete those pages with irrelevant information (like this page, don't let your users or boss know how easy it was to install Moin<tt class="backtick"></tt>Moin <img alt=";-)" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/smile4.png" title=";-)" width="16" /> ), and rewrite the Front<tt class="backtick"></tt>Page to introduce your wiki topic. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-120"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-121"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-111"></span><p class="line862">The next step is to tell Apache that is has more work to do. Use your editor to append the following lines to <tt>C:\Apache\conf\httpd.conf</tt>. Note the presence and absence of trailing slashes, it is important to enter the lines exactly as shown below. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-113"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-114"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-115"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-116"></span><pre>Alias       /moin_static160/ "C:/Python/share/moin/htdocs/"
+ScriptAlias /mywiki          "C:/Moin/mywiki/moin.cgi"</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-117"></span><p class="line862">The <strong>Alias</strong> line above instructs Apache to serve images, style sheets, etc. from the specified folders and subfolders. The <strong>Script<tt class="backtick"></tt>Alias</strong> line is needed once for each wiki instance, so if you have multiple wikis, repeat the statement using mywiki2, mywiki3, etc. The Script<tt class="backtick"></tt>Alias statement instructs Apache to execute scripts from the specified folder. See the Apache docs for a complete explanation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-118"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-119"></span><p class="line862">Test your changes by restarting your Apache server and try to access your newborn wiki with the URL <tt>http://127.0.0.1/mywiki</tt>. You should see the Front<tt class="backtick"></tt>Page, try to edit and save it, and if that works, verify your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-120"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-121"></span><p class="line862">And now, it is up to you and your user community to transform your wiki into an informative and useful tool. You will probably want to retain most of the Help<tt class="backtick"></tt>On~ pages dealing with editing, delete those pages with irrelevant information (like this page, don't let your users or boss know how easy it was to install Moin<tt class="backtick"></tt>Moin <img alt=";-)" height="16" src="http://static.moinmo.in/moin_static180/modernized/img/smile4.png" title=";-)" width="16" /> ), and rewrite the Front<tt class="backtick"></tt>Page to introduce your wiki topic. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-122"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-123"></span><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-ApacheOnWin32.Troubleshooting">Troubleshooting</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-122"></span><p class="line862">The first place to look for clues when the unexpected happens is to try changing your url to: <tt>http://127.0.0.1/mywiki?action=test</tt>. If Apache can find and execute the module <tt>C:/Moin/mywiki/moin.cgi</tt>, a page of diagnostics titled <strong>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</strong> will be displayed. Check the output for error messages. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-123"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-124"></span><p class="line862">The second place to look for is <tt>C:\Apache\logs\error.log</tt>. The following are common errors grouped by the message displayed by your browser: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-125"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-126"></span><ul><li><p class="line891"><strong>Internal Server Error</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-127"></span><ul><li><p class="line862">If the Apache log shows a message "The system cannot find the file specified." then a possibility is the shebang statement in <tt>moin.cgi</tt> is incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-128"></span></li><li><p class="line862">If the Apache log shows a different error message, then the Moin<tt class="backtick"></tt>Moin Python scripts may be abending. To determine the cause, you could try temporarily renaming <tt>moin.cgi</tt> to <tt>moin.py</tt>, loading <tt>moin.py</tt> with the Python <strong>idle</strong> IDE and executing it to determine if there are any error messages. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-129"></span></li></ul></li><li><p class="line891"><strong>Not Found</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-130"></span><ul><li><p class="line862">If the Apache error log shows the message "File does not exist: C:/Apache/htdocs/mywiki",  the <strong>Script<tt class="backtick"></tt>Alias</strong> statement in <tt>httpd.conf</tt> may be incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-131"></span></li></ul></li><li><p class="line891"><strong>The Page Cannot be found</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-132"></span><ul><li><p class="line862">If the Apache error log shows the message "File does not exist: C:/Apache/htdocs/????", you may have mistyped the url "<a class="http" href="http://127.0.0.1/mywiki">http://127.0.0.1/mywiki</a>" into your browser. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-133"></span></li></ul></li><li><p class="line891"><strong>FrontPage Loads Without Icons</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-134"></span><ul><li><p class="line862">If the Apache Error log shows many error messages "File does not exist: C:/Apache/htdocs/wiki", then the <strong>Alias</strong> statement in <tt>httpd.conf</tt> may be incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-135"></span></li></ul></li><li><p class="line862">If you did not install MoinMoin in the Python site-packages folder (i.e. only if you deviated from the above instructions), you will have to activate the lines which add a folder to the sys.path and enter your path to MoinMoin there:<br>
- <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-136"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-137"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-138"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-139"></span><pre>import sys
-sys.path.insert(0, r'C:\Moin\...')</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-140"></span></li></ul><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-124"></span><p class="line862">The first place to look for clues when the unexpected happens is to try changing your url to: <tt>http://127.0.0.1/mywiki?action=test</tt>. If Apache can find and execute the module <tt>C:/Moin/mywiki/moin.cgi</tt>, a page of diagnostics titled <strong>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</strong> will be displayed. Check the output for error messages. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-125"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-126"></span><p class="line862">The second place to look for is <tt>C:\Apache\logs\error.log</tt>. The following are common errors grouped by the message displayed by your browser: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-127"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-128"></span><ul><li><p class="line891"><strong>Internal Server Error</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-129"></span><ul><li><p class="line862">If the Apache log shows a message "The system cannot find the file specified." then a possibility is the shebang statement in <tt>moin.cgi</tt> is incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-130"></span></li><li><p class="line862">If the Apache log shows a different error message, then the Moin<tt class="backtick"></tt>Moin Python scripts may be abending. To determine the cause, you could try temporarily renaming <tt>moin.cgi</tt> to <tt>moin.py</tt>, loading <tt>moin.py</tt> with the Python <strong>idle</strong> IDE and executing it to determine if there are any error messages. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-131"></span></li></ul></li><li><p class="line891"><strong>Not Found</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-132"></span><ul><li><p class="line862">If the Apache error log shows the message "File does not exist: C:/Apache/htdocs/mywiki",  the <strong>Script<tt class="backtick"></tt>Alias</strong> statement in <tt>httpd.conf</tt> may be incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-133"></span></li></ul></li><li><p class="line891"><strong>The Page Cannot be found</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-134"></span><ul><li><p class="line862">If the Apache error log shows the message "File does not exist: C:/Apache/htdocs/????", you may have mistyped the url "<a class="http" href="http://127.0.0.1/mywiki">http://127.0.0.1/mywiki</a>" into your browser. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-135"></span></li></ul></li><li><p class="line891"><strong>FrontPage Loads Without Icons</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-136"></span><ul><li><p class="line862">If the Apache Error log shows many error messages "File does not exist: C:/Apache/htdocs/wiki", then the <strong>Alias</strong> statement in <tt>httpd.conf</tt> may be incorrect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-137"></span></li></ul></li><li><p class="line862">If you did not install MoinMoin in the Python site-packages folder (i.e. only if you deviated from the above instructions), you will have to activate the lines which add a folder to the sys.path and enter your path to MoinMoin there:<br>
+ <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-138"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-139"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-140"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-141"></span><pre>import sys
+sys.path.insert(0, r'C:\Moin\...')</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-142"></span></li></ul><p class="line867">
 <h2 id="HelpOnInstalling.2BAC8-ApacheOnWin32.NextSteps">Next Steps</h2>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-141"></span><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-143"></span><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.AuthenticatingMoinMoinUsersAgainstaDomainController">Authenticating MoinMoin Users Against a Domain Controller</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-142"></span><ul><li style="list-style-type:none">Many organizations are setting up wiki's for documentation on their internal network.  As a result, many organizations require the security of authentication, which protects their content, as well as allowing people to work remotely on the wiki without anonymous eye's peeking at their site.  Domain authentication is convenient for both the administrator and the user, because it uses the same password the user would use for other network logins.  If this describes you, proceed to: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-143"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/ApacheOnWin32withDomainAuthentication">../ApacheOnWin32withDomainAuthentication</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-144"></span></li></ul><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-144"></span><ul><li style="list-style-type:none">Many organizations are setting up wiki's for documentation on their internal network.  As a result, many organizations require the security of authentication, which protects their content, as well as allowing people to work remotely on the wiki without anonymous eye's peeking at their site.  Domain authentication is convenient for both the administrator and the user, because it uses the same password the user would use for other network logins.  If this describes you, proceed to: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-145"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/ApacheOnWin32withDomainAuthentication">../ApacheOnWin32withDomainAuthentication</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-146"></span></li></ul><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.SimpleWindowsMoinMoinBackup">Simple Windows MoinMoin Backup</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-145"></span><ul><li style="list-style-type:none">Simple strategy for backing up your wiki: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-146"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/Win32MoinEasyBackup">../Win32MoinEasyBackup</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-147"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-148"></span></li></ul><p class="line867">
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-147"></span><ul><li style="list-style-type:none">Simple strategy for backing up your wiki: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-148"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/Win32MoinEasyBackup">../Win32MoinEasyBackup</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-149"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-150"></span></li></ul><p class="line867">
 <h3 id="HelpOnInstalling.2BAC8-ApacheOnWin32.FastCGIwithWindows">FastCGI with Windows</h3>
-<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-149"></span><ul><li style="list-style-type:none">Dramatically increase performance of your wiki with the FastCGI Apache module: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-150"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/ApacheOnWin32withFastCgi">../ApacheOnWin32withFastCgi</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-151"></span></li></ul><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.bottom"></span></div> <span class="anchor" id="line-72"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-73"></span><span class="anchor" id="win32iis-install"></span> <span class="anchor" id="line-74"></span>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-151"></span><ul><li style="list-style-type:none">Dramatically increase performance of your wiki with the FastCGI Apache module: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-152"></span></li><li style="list-style-type:none"><p class="line891"><a href="http://master18.moinmo.in/HelpOnInstalling/ApacheOnWin32withFastCgi">../ApacheOnWin32withFastCgi</a> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.line-153"></span></li></ul><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnWin32.bottom"></span></div> <span class="anchor" id="line-72"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-73"></span><span class="anchor" id="win32iis-install"></span> <span class="anchor" id="line-74"></span>
 <h1>Windows Installation using IIS</h1>
 <div dir="ltr" id="HelpOnInstalling.2BAC8-InternetInformationServer.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-InternetInformationServer.top"></span>
 <span class="anchor" id="HelpOnInstalling.2BAC8-InternetInformationServer.line-8"></span><p class="line867"><strong>Index</strong> <div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li>
--- a/wiki/config/more_samples/user_wikiconfig_snippet	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/config/more_samples/user_wikiconfig_snippet	Thu Jan 29 09:44:57 2009 +0100
@@ -3,7 +3,7 @@
 
     #userprefs_disabled = [] # allow disabling certain userpreferences plugins
 
-    #user_homewiki = 'Self' # interwiki name for where user homepages are located
+    #user_homewiki = u'Self' # interwiki name for where user homepages are located
 
     #password_checker = None
     #user_email_unique = True # do we check whether a user's email is unique?
--- a/wiki/config/wikiconfig.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/config/wikiconfig.py	Thu Jan 29 09:44:57 2009 +0100
@@ -49,7 +49,7 @@
     #page_front_page = u"FrontPage"
 
     # The interwiki name used in interwiki links
-    #interwikiname = 'UntitledWiki'
+    #interwikiname = u'UntitledWiki'
     # Show the interwiki name (and link it to page_front_page) in the Theme,
     # nice for farm setups or when your logo does not show the wiki's name.
     #show_interwiki = 1
--- a/wiki/config/wikifarm/mywiki.py	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/config/wikifarm/mywiki.py	Thu Jan 29 09:44:57 2009 +0100
@@ -20,7 +20,7 @@
 
     # basic options (you normally need to change these)
     sitename = u'MyWiki' # [Unicode]
-    interwikiname = 'MyWiki'
+    interwikiname = u'MyWiki' # [Unicode]
 
     # name of entry page / front page [Unicode], choose one of those:
 
--- a/wiki/htdocs/modern/css/common.css	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/htdocs/modern/css/common.css	Thu Jan 29 09:44:57 2009 +0100
@@ -20,6 +20,7 @@
 
 a {color: #0044B3;}
 a:visited {color: #597BB3;}
+a.nonexistent:visited, a.badinterwiki:visited,
 a.nonexistent, a.badinterwiki {color: gray;}
 
 a.www:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
--- a/wiki/htdocs/modernized/css/common.css	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/htdocs/modernized/css/common.css	Thu Jan 29 09:44:57 2009 +0100
@@ -21,7 +21,9 @@
 a {color: #0044B3;}
 /* a:visited {color: #597BB3;} */
 a:visited {color: #FF7BB3;}
-a.nonexistent, a.badinterwiki {color: gray;}
+
+a.nonexistent:visited, a.nonexistent, 
+a.badinterwiki:visited, a.badinterwiki {color: gray;}
 
 a.www:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
 a.http:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
--- a/wiki/htdocs/rightsidebar/css/common.css	Thu Jan 29 09:34:48 2009 +0100
+++ b/wiki/htdocs/rightsidebar/css/common.css	Thu Jan 29 09:44:57 2009 +0100
@@ -17,7 +17,9 @@
 
 a {color: maroon;}
 a:hover {color: red;}
-a.nonexistent, a.badinterwiki {color: #404040;}
+
+a.nonexistent:visited, a.badinterwiki:visited,
+a.nonexistent, a.badinterwiki {color: $404040;}
 
 a.www:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
 a.http:before {content: url(../img/moin-www.png); margin: 0 0.2em;}