changeset 3565:98000f9de890

merge main
author Johannes Berg <johannes AT sipsolutions DOT net>
date Tue, 06 May 2008 21:38:05 +0200
parents 474f6ad01900 (current diff) a70795dd0300 (diff)
children 0ef5a8ca610f
files
diffstat 104 files changed, 2485 insertions(+), 1796 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Apr 24 16:05:04 2008 +0200
+++ b/.hgtags	Tue May 06 21:38:05 2008 +0200
@@ -15,3 +15,4 @@
 cdfb01bec1224c9ac9c83ef9bae75ed48ca66340 1.6a
 fbe43f9574f1221baea7b1f4077476fdbc155d8f SOC2006-START
 8f130438d8e8146262900e37bdf9d687c9690424 SOC2007-START
+ed8531bc87da9f65dd1cb4388b54a138e7e0e242 1.7.0beta1
--- a/Makefile	Thu Apr 24 16:05:04 2008 +0200
+++ b/Makefile	Tue May 06 21:38:05 2008 +0200
@@ -13,9 +13,9 @@
 
 install-docs:
 	-mkdir build
-	wget -U MoinMoin/Makefile -O build/INSTALL.html "http://master.moinmo.in/MoinMoin/InstallDocs?action=print"
+	wget -U MoinMoin/Makefile -O build/INSTALL.html "http://master17.moinmo.in/MoinMoin/InstallDocs?action=print"
 	sed \
-		-e 's#href="/#href="http://master.moinmo.in/#g' \
+		-e 's#href="/#href="http://master17.moinmo.in/#g' \
 		-e 's#http://[a-z\.]*/wiki/classic/#/wiki/classic/#g' \
 		-e 's#http://[a-z\.]*/wiki/modern/#/wiki/modern/#g' \
 		-e 's#http://[a-z\.]*/wiki/rightsidebar/#/wiki/rightsidebar/#g' \
@@ -28,7 +28,7 @@
 	-rmdir build
 
 interwiki:
-	wget -U MoinMoin/Makefile -O $(share)/data/intermap.txt "http://master.moinmo.in/InterWikiMap?action=raw"
+	wget -U MoinMoin/Makefile -O $(share)/data/intermap.txt "http://master17.moinmo.in/InterWikiMap?action=raw"
 	chmod 664 $(share)/data/intermap.txt
 
 check-tabs:
--- a/MoinMoin/Page.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/Page.py	Tue May 06 21:38:05 2008 +0200
@@ -514,87 +514,83 @@
         fname, rev, exists = self.get_rev(-1, rev)
         return fname
 
-    # XXX TODO clean up the mess, rewrite _last_edited, last_edit, lastEditInfo for new logs,
-    # XXX TODO do not use mtime() calls any more
-    def _last_edited(self, request):
-        # as it is implemented now, this is rather a _last_changed as it just uses
-        # the last log entry, which could be not only from an edit, but also from
-        # an attachment operation. See different semantics in .mtime().
-        cache_name = self.page_name
-        cache_key = 'lastlog'
-        log = request.cfg.cache.meta.getItem(request, cache_name, cache_key)
-        if log is None:
+    def editlog_entry(self):
+        """ Return the edit-log entry for this Page object (can be an old revision).
+        """
+        request = self.request
+        use_cache = self.rev == 0 # use the cache for current rev
+        if use_cache:
+            cache_name, cache_key = self.page_name, 'lastlog'
+            entry = request.cfg.cache.meta.getItem(request, cache_name, cache_key)
+        else:
+            entry = None
+        if entry is None:
             from MoinMoin.logfile import editlog
-            try:
-                logfile = editlog.EditLog(request, rootpagename=self.page_name)
-                logfile.to_end()
-                log = logfile.previous()
-            except StopIteration:
-                log = () # don't use None!
-            request.cfg.cache.meta.putItem(request, cache_name, cache_key, log)
-        return log
+            wanted_rev = "%08d" % self.get_real_rev()
+            edit_log = editlog.EditLog(request, rootpagename=self.page_name)
+            for entry in edit_log.reverse():
+                if entry.rev == wanted_rev:
+                    break
+            else:
+                entry = () # don't use None
+            if use_cache:
+                request.cfg.cache.meta.putItem(request, cache_name, cache_key, entry)
+        return entry
 
-    def last_edit(self, request):
-        """ Return the last edit.
+    def edit_info(self):
+        """ Return timestamp/editor info for this Page object (can be an old revision).
+
+            Note: if you ask about a deleted revision, it will report timestamp and editor
+                  for the delete action (in the edit-log, this is just a SAVE).
+
         This is used by MoinMoin/xmlrpc/__init__.py.
 
-        @param request: the request object
         @rtype: dict
         @return: timestamp and editor information
         """
-        if not self.exists():
-            return None
+        line = self.editlog_entry()
+        if line:
+            editordata = line.getInterwikiEditorData(self.request)
+            if editordata[0] == 'interwiki':
+                editor = "%s:%s" % editordata[1]
+            else:
+                editor = editordata[1] # ip or email
+            result = {
+                'timestamp': line.ed_time_usecs,
+                'editor': editor,
+            }
+            del line
+        else:
+            result = {}
+        return result
 
-        result = None
-        if not self.rev:
-            log = self._last_edited(request)
-            if log:
-                editordata = log.getInterwikiEditorData(request)
-                editor = editordata[1]
-                if editordata[0] == 'interwiki':
-                    editor = "%s:%s" % editordata[1]
-                else: # 'ip'
-                    editor = editordata[1]
-                result = {
-                    'timestamp': log.ed_time_usecs,
-                    'editor': editor,
-                }
-                del log
-        if not result:
-            version = self.mtime_usecs()
-            result = {
-                'timestamp': version,
-                'editor': '?',
-            }
-
-        return result
+    def last_edit(self, request):
+        # XXX usage of last_edit is DEPRECATED - use edit_info()
+        if not self.exists(): # XXX doesn't make much sense, but still kept
+            return None       # XXX here until we remove last_edit()
+        return self.edit_info()
 
     def lastEditInfo(self, request=None):
         """ Return the last edit info.
 
-        @param request: the request object
+            Note: if you ask about a deleted revision, it will report timestamp and editor
+                  for the delete action (in the edit-log, this is just a SAVE).
+
+        @param request: the request object (DEPRECATED, unused)
         @rtype: dict
         @return: timestamp and editor information
         """
-        if not self.exists():
-            return {}
-        if request is None:
+        log = self.editlog_entry()
+        if log:
             request = self.request
-
-        # Try to get data from log
-        log = self._last_edited(request)
-        if log:
             editor = log.getEditor(request)
             time = wikiutil.version2timestamp(log.ed_time_usecs)
+            time = request.user.getFormattedDateTime(time) # Use user time format
+            result = {'editor': editor, 'time': time}
             del log
-        # Or from the file system
         else:
-            editor = ''
-            time = os.path.getmtime(self._text_filename())
-
-        # Use user time format
-        time = request.user.getFormattedDateTime(time)
-        return {'editor': editor, 'time': time}
+            result = {}
+        return result
 
     def isWritable(self):
         """ Can this page be changed?
@@ -689,32 +685,13 @@
             raise
 
     def mtime_usecs(self):
-        """ Get modification timestamp of this page.
+        """ Get modification timestamp of this page (from edit-log, can be for an old revision).
 
-        @rtype: long
-        @return: mtime of page (or 0 if page does not exist)
+        @rtype: int
+        @return: mtime of page (or 0 if page / edit-log entry does not exist)
         """
-        request = self.request
-        cache_name = self.page_name
-        cache_key = 'lastpagechange'
-        mtime = request.cfg.cache.meta.getItem(request, cache_name, cache_key)
-        current_wanted = (self.rev == 0) # True if we search for the current revision
-        if mtime is None or not current_wanted:
-            from MoinMoin.logfile import editlog
-            wanted_rev = "%08d" % self.rev
-            mtime = 0L
-            try:
-                logfile = editlog.EditLog(self.request, rootpagename=self.page_name)
-                for line in logfile.reverse():
-                    if (current_wanted and line.rev != 99999999) or line.rev == wanted_rev:
-                        mtime = line.ed_time_usecs
-                        break
-            except StopIteration:
-                pass
-            if current_wanted:
-                request.cfg.cache.meta.putItem(request, cache_name, cache_key, mtime)
-
-        return mtime
+        entry = self.editlog_entry()
+        return entry and entry.ed_time_usecs or 0
 
     def mtime_printable(self, request):
         """ Get printable (as per user's preferences) modification timestamp of this page.
--- a/MoinMoin/PageEditor.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/PageEditor.py	Tue May 06 21:38:05 2008 +0200
@@ -1126,7 +1126,6 @@
             comment = kw.get('comment', u'')
             extra = kw.get('extra', u'')
             trivial = kw.get('trivial', 0)
-
             # write the page file
             mtime_usecs, rev = self._write_file(newtext, action, comment, extra, deleted=deleted)
             self.clean_acl_cache()
--- a/MoinMoin/_tests/__init__.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/_tests/__init__.py	Tue May 06 21:38:05 2008 +0200
@@ -7,10 +7,12 @@
     @license: GNU GPL, see COPYING for details.
 """
 
-import shutil
+import os, shutil
 
+from MoinMoin.Page import Page
 from MoinMoin.PageEditor import PageEditor
-
+from MoinMoin.util import random_string
+from MoinMoin import caching, user
 # Promoting the test user -------------------------------------------
 # Usually the tests run as anonymous user, but for some stuff, you
 # need more privs...
@@ -59,6 +61,15 @@
     page.saveText(content, 0)
     return page
 
+def append_page(request, pagename, content, do_editor_backup=False):
+    """ appends some conetent to an existing page """
+    # reads the raw text of the existing page
+    raw = Page(request, pagename).get_raw_body()
+    # adds the new content to the old
+    content = "%s\n%s\n"% (raw, content)
+    page = PageEditor(request, pagename, do_editor_backup=do_editor_backup)
+    page.saveText(content, 0)
+    return page
 
 def nuke_page(request, pagename):
     """ completely delete a page, everything in the pagedir """
@@ -67,3 +78,21 @@
     # really get rid of everything there:
     fpath = page.getPagePath(check_create=0)
     shutil.rmtree(fpath, True)
+
+def nuke_user(request, username):
+    """ completely delete a user """
+    user_dir = request.cfg.user_dir
+    user_id = user.getUserId(request, username)
+    # really get rid of the user
+    fpath = os.path.join(user_dir, user_id)
+    os.remove(fpath)
+    # delete cache
+    arena = 'user'
+    key = 'name2id'
+    caching.CacheEntry(request, arena, key, scope='wiki').remove()
+
+def create_random_string(name_len=14, count=3000):
+    """ creates a list of random names """
+    name_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
+    # long list of names
+    return [u"%s" % random_string(name_len, name_chars) for counter in range(count)]
--- a/MoinMoin/_tests/test_Page.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/_tests/test_Page.py	Tue May 06 21:38:05 2008 +0200
@@ -33,11 +33,12 @@
         assert not Page(self.request, 'ThisPageDoesNotExist').exists()
         assert not Page(self.request, '').exists()
 
-    def testLastEdit(self):
-        page = Page(self.request, u'FrontPage')
-        last_edit = page.last_edit(self.request)
-        assert 'editor' in last_edit
-        assert 'timestamp' in last_edit
+    def testEditInfoSystemPage(self):
+        # system pages have no edit-log (and only 1 revision),
+        # thus edit_info will return None
+        page = Page(self.request, u'RecentChanges')
+        edit_info = page.edit_info()
+        assert edit_info == {}
 
     def testSplitTitle(self):
         page = Page(self.request, u"FrontPage")
--- a/MoinMoin/_tests/test_wikidicts.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/_tests/test_wikidicts.py	Tue May 06 21:38:05 2008 +0200
@@ -14,7 +14,8 @@
 from MoinMoin import wikidicts
 from MoinMoin import Page
 from MoinMoin.PageEditor import PageEditor
-from MoinMoin._tests import become_trusted, create_page, nuke_page
+from MoinMoin.user import User
+from MoinMoin._tests import append_page, become_trusted, create_page, create_random_string, nuke_page, nuke_user
 
 class TestGroupPage:
 
@@ -156,4 +157,90 @@
 
         assert u'ExampleUser' in members
 
+    def testAppendingGroupPage(self):
+        """
+         tests appending a name to a large list of group members
+        """
+        # long list of users
+        name =  [u" * %s" % text for text in create_random_string(name_len=20, count=30000)]
+        request = self.request
+        become_trusted(request)
+
+        test_user = create_random_string(name_len=20, count=1)[0]
+        page = create_page(request, u'UserGroup', "\n".join(name))
+        page = append_page(request, u'UserGroup', u' * %s' % test_user)
+
+        members, groups = request.dicts.expand_group(u'UserGroup')
+        nuke_page(request, u'UserGroup')
+
+        assert test_user in members
+
+    def testUserAppendingGroupPage(self):
+        """
+         tests appending a username to a large list of group members and user creation
+        """
+        # long list of users
+        name =  [u" * %s" % text for text in create_random_string()]
+
+        request = self.request
+        become_trusted(request)
+
+        test_user = create_random_string(name_len=20, count=1)[0]
+
+        page = create_page(request, u'UserGroup', "\n".join(name))
+        page = append_page(request, u'UserGroup', u' * %s' % test_user)
+
+        # now shortly later we create a user object
+        user = User(request, name=test_user)
+        if not user.exists():
+            User(request, name=test_user, password=test_user).save()
+
+        members, groups = request.dicts.expand_group(u'UserGroup')
+        nuke_page(request, u'UserGroup')
+        nuke_user(request, test_user)
+
+        assert test_user in members
+
+    def testMemberRemovedFromGroupPage(self):
+        """
+         tests appending a member to a large list of group members and recreating the page without the member
+        """
+        # long list of users
+        name =  [u" * %s" % text for text in create_random_string()]
+        content = "\n".join(name)
+        request = self.request
+        become_trusted(request)
+
+        test_user = create_random_string(name_len=20, count=1)[0]
+
+        page = create_page(request, u'UserGroup', content)
+        page = append_page(request, u'UserGroup', u' * %s' % test_user)
+        # saves the text without test_user
+        page.saveText(content, 0)
+
+        members, groups = request.dicts.expand_group(u'UserGroup')
+        nuke_page(request, u'UserGroup')
+
+        assert not test_user in members
+
+    def testGroupPageTrivialChange(self):
+        """
+         tests appending a username to a group page by trivial change
+        """
+        request = self.request
+        become_trusted(request)
+
+        test_user = create_random_string(name_len=20, count=1)[0]
+        name =  u" * %s\n" % test_user
+        page = create_page(request, u'UserGroup', name)
+        # next member saved  as trivial change
+        test_user = create_random_string(name_len=20, count=1)[0]
+        name =  u" * %s\n" % test_user
+        page.saveText(name, 0, trivial=1)
+
+        members, groups = request.dicts.expand_group(u'UserGroup')
+        nuke_page(request, u'UserGroup')
+
+        assert test_user in members
+
 coverage_modules = ['MoinMoin.wikidicts']
--- a/MoinMoin/action/AttachFile.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/AttachFile.py	Tue May 06 21:38:05 2008 +0200
@@ -503,11 +503,6 @@
     """ Main dispatcher for the 'AttachFile' action. """
     _ = request.getText
 
-    if action_name in request.cfg.actions_excluded:
-        msg = _('File attachments are not allowed in this wiki!')
-        error_msg(pagename, request, msg)
-        return
-
     do = request.form.get('do', ['upload_form'])
     handler = globals().get('_do_%s' % do[0])
     if handler:
@@ -784,8 +779,6 @@
 
 
 def _do_get(pagename, request):
-    import shutil
-
     _ = request.getText
 
     pagename, filename, fpath = _access_file(pagename, request)
@@ -820,7 +813,7 @@
         ])
 
         # send data
-        shutil.copyfileobj(open(fpath, 'rb'), request, 8192)
+        request.send_file(open(fpath, 'rb'))
 
 
 def _do_install(pagename, request):
--- a/MoinMoin/action/Despam.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/Despam.py	Tue May 06 21:38:05 2008 +0200
@@ -178,10 +178,8 @@
 
 def execute(pagename, request):
     _ = request.getText
-    # be extra paranoid in dangerous actions
-    actname = __name__.split('.')[-1]
-    if actname in request.cfg.actions_excluded or \
-       not request.user.isSuperUser():
+    # check for superuser
+    if not request.user.isSuperUser():
         request.theme.add_msg(_('You are not allowed to use this action.'), "error")
         return Page.Page(request, pagename).send_page()
 
--- a/MoinMoin/action/backup.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/backup.py	Tue May 06 21:38:05 2008 +0200
@@ -123,8 +123,7 @@
     """ Return True if backup is allowed """
     action = __name__.split('.')[-1]
     user = request.user
-    return (action not in request.cfg.actions_excluded and
-            user.valid and user.name in request.cfg.backup_users)
+    return user.valid and user.name in request.cfg.backup_users
 
 def execute(pagename, request):
     _ = request.getText
--- a/MoinMoin/action/bookmark.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/bookmark.py	Tue May 06 21:38:05 2008 +0200
@@ -9,10 +9,16 @@
 import time
 
 from MoinMoin import wikiutil
-
+from MoinMoin.Page import Page
 
 def execute(pagename, request):
     """ set bookmarks (in time) for RecentChanges or delete them """
+    _ = request.getText
+    if not request.user.valid:
+        actname = __name__.split('.')[-1]
+        request.theme.add_msg(_("You must login to use this action: %(action)s.") % {"action": actname}, "error")
+        return Page(request, pagename).send_page()
+
     timestamp = request.form.get('time', [None])[0]
     if timestamp is not None:
         if timestamp == 'del':
--- a/MoinMoin/action/subscribe.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/subscribe.py	Tue May 06 21:38:05 2008 +0200
@@ -11,6 +11,11 @@
 def execute(pagename, request):
     """ Subscribe the user to pagename """
     _ = request.getText
+    if not request.user.valid:
+        actname = __name__.split('.')[-1]
+        request.theme.add_msg(_("You must login to use this action: %(action)s.") % {"action": actname}, "error")
+        return Page(request, pagename).send_page()
+
     cfg = request.cfg
 
     if not request.user.may.read(pagename):
--- a/MoinMoin/action/thread_monitor.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/thread_monitor.py	Tue May 06 21:38:05 2008 +0200
@@ -10,10 +10,16 @@
 import os, time
 from StringIO import StringIO
 
-from MoinMoin import wikiutil
+from MoinMoin import Page, wikiutil
 from MoinMoin.util import thread_monitor
 
 def execute_fs(pagename, request):
+    _ = request.getText
+    # check for superuser
+    if not request.user.isSuperUser():
+        request.theme.add_msg(_('You are not allowed to use this action.'), "error")
+        return Page.Page(request, pagename).send_page()
+
     if thread_monitor.hook_enabled():
         s = StringIO()
         thread_monitor.trigger_dump(s)
@@ -31,6 +37,13 @@
     request.write('<html><body>A dump has been saved to %s.</body></html>' % dump_fname)
 
 def execute_wiki(pagename, request):
+    _ = request.getText
+    # be extra paranoid in dangerous actions
+    actname = __name__.split('.')[-1]
+    if not request.user.isSuperUser():
+        request.theme.add_msg(_('You are not allowed to use this action.'), "error")
+        return Page.Page(request, pagename).send_page()
+
     request.emit_http_headers()
 
     request.theme.send_title("Thread monitor")
--- a/MoinMoin/action/unsubscribe.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/unsubscribe.py	Tue May 06 21:38:05 2008 +0200
@@ -11,6 +11,11 @@
 def execute(pagename, request):
     """ Unsubscribe the user from pagename """
     _ = request.getText
+    if not request.user.valid:
+        actname = __name__.split('.')[-1]
+        request.theme.add_msg(_("You must login to use this action: %(action)s.") % {"action": actname}, "error")
+        return Page(request, pagename).send_page()
+
     msg = None
 
     if request.user.isSubscribedTo([pagename]):
--- a/MoinMoin/action/userprefs.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/action/userprefs.py	Tue May 06 21:38:05 2008 +0200
@@ -7,7 +7,7 @@
     @license: GNU GPL, see COPYING for details.
 """
 
-from MoinMoin import wikiutil
+from MoinMoin import Page, wikiutil
 from MoinMoin.widget import html
 
 def _handle_submission(request):
@@ -87,6 +87,11 @@
 
 def execute(pagename, request):
     _ = request.getText
+    if not request.user.valid:
+        actname = __name__.split('.')[-1]
+        request.theme.add_msg(_("You must login to use this action: %(action)s.") % {"action": actname}, "error")
+        return Page.Page(request, pagename).send_page()
+
     text, title, msg_class, msg = _create_page(request)
     if title:
         # XXX: we would like to make "Settings" here a link back
--- a/MoinMoin/config/multiconfig.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/config/multiconfig.py	Tue May 06 21:38:05 2008 +0200
@@ -452,20 +452,21 @@
     # These icons will show in this order in the iconbar, unless they
     # are not relevant, e.g email icon when the wiki is not configured
     # for email.
-    page_iconbar = ["edit", "view", "diff", "info", "subscribe", "raw", "print", ]
+    page_iconbar = ["up", "edit", "view", "diff", "info", "subscribe", "raw", "print", ]
 
     # Standard buttons in the iconbar
     page_icons_table = {
-        # key           querystr dict, title, icon-key
-        'diff':        ({'action': 'diff'}, _("Diffs"), "diff"),
-        'info':        ({'action': 'info'}, _("Info"), "info"),
-        'edit':        ({'action': 'edit'}, _("Edit"), "edit"),
-        'unsubscribe': ({'action': 'unsubscribe'}, _("UnSubscribe"), "unsubscribe"),
-        'subscribe':   ({'action': 'subscribe'}, _("Subscribe"), "subscribe"),
-        'raw':         ({'action': 'raw'}, _("Raw"), "raw"),
-        'xml':         ({'action': 'show', 'mimetype': 'text/xml'}, _("XML"), "xml"),
-        'print':       ({'action': 'print'}, _("Print"), "print"),
-        'view':        ({}, _("View"), "view"),
+        # key           pagekey, querystr dict, title, icon-key
+        'diff':        ('page', {'action': 'diff'}, _("Diffs"), "diff"),
+        'info':        ('page', {'action': 'info'}, _("Info"), "info"),
+        'edit':        ('page', {'action': 'edit'}, _("Edit"), "edit"),
+        'unsubscribe': ('page', {'action': 'unsubscribe'}, _("UnSubscribe"), "unsubscribe"),
+        'subscribe':   ('page', {'action': 'subscribe'}, _("Subscribe"), "subscribe"),
+        'raw':         ('page', {'action': 'raw'}, _("Raw"), "raw"),
+        'xml':         ('page', {'action': 'show', 'mimetype': 'text/xml'}, _("XML"), "xml"),
+        'print':       ('page', {'action': 'print'}, _("Print"), "print"),
+        'view':        ('page', {}, _("View"), "view"),
+        'up':          ('page_parent_page', {}, _("Up"), "up"),
         }
 
 
--- a/MoinMoin/events/wikidictsrescan.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/events/wikidictsrescan.py	Tue May 06 21:38:05 2008 +0200
@@ -16,7 +16,8 @@
 
 def handle(event):
     # "changed" includes creation, deletion, renamed and copied
-    if isinstance(event, ev.PageChangedEvent) or isinstance(event, ev.PageRenamedEvent) or isinstance(event, ev.PageCopiedEvent):
+    if (isinstance(event, ev.PageChangedEvent) or isinstance(event, ev.PageRenamedEvent) or
+        isinstance(event, ev.PageCopiedEvent) or isinstance(event, ev.TrivialPageChangedEvent)):
         cfg = event.request.cfg
         pagename = event.page.page_name
         if cfg.cache.page_dict_regex.search(pagename) or \
--- a/MoinMoin/i18n/MoinMoin.pot	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/MoinMoin.pot	Tue May 06 21:38:05 2008 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1015,6 +1015,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -1931,6 +1934,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 
@@ -2342,6 +2349,9 @@
 msgid "You already have a quicklink to this page."
 msgstr ""
 
+msgid "You are not allowed to use this action."
+msgstr ""
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr ""
@@ -2414,9 +2424,6 @@
 msgid "Revert all!"
 msgstr ""
 
-msgid "You are not allowed to use this action."
-msgstr ""
-
 #, python-format
 msgid "[%d attachments]"
 msgstr ""
--- a/MoinMoin/i18n/ar.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ar.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: moin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
-"PO-Revision-Date: 2007-10-08 12:27+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
+"PO-Revision-Date: 2008-04-12 20:07+0200\n"
 "Last-Translator: Mohamed Yahya <yahya.mohamed@gmail.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -212,7 +212,7 @@
 msgstr ""
 
 msgid "Too many arguments"
-msgstr ""
+msgstr "معطيات أكثر من المطلوب"
 
 msgid "Cannot have arguments without name following named arguments"
 msgstr ""
@@ -240,7 +240,7 @@
 msgstr "إسم الصفحة طويل، جرب إسما أقصر."
 
 msgid "GUI Mode"
-msgstr ""
+msgstr "وضعية واجهة المستخدم الرسومية"
 
 #, fuzzy
 msgid "Edit was cancelled."
@@ -454,7 +454,7 @@
 msgstr ""
 
 msgid "filter"
-msgstr ""
+msgstr "مرشح"
 
 #, python-format
 msgid ""
@@ -487,13 +487,14 @@
 msgstr ""
 
 msgid "match"
-msgstr ""
-
+msgstr "تطابق"
+
+#, fuzzy
 msgid "matches"
-msgstr ""
+msgstr "تطابق"
 
 msgid "Line"
-msgstr ""
+msgstr "سطر"
 
 msgid "No differences found!"
 msgstr "لا توجد الاختلافات!"
@@ -570,7 +571,7 @@
 msgstr ""
 
 msgid "Choose this name"
-msgstr ""
+msgstr "إختر هذا الإسم"
 
 msgid ""
 "The username you have chosen is already\n"
@@ -600,7 +601,7 @@
 msgstr ""
 
 msgid "The password you entered is not valid."
-msgstr ""
+msgstr "كلمة السر التي أدخلتها غير صالحة."
 
 msgid "OpenID verification requires that you click this button:"
 msgstr ""
@@ -623,7 +624,7 @@
 msgstr ""
 
 msgid "Failed to connect to database."
-msgstr ""
+msgstr "فشلت محاولة الإتصال بقاعدة البيانات."
 
 msgid "Could not contact botbouncer.com."
 msgstr ""
@@ -702,7 +703,7 @@
 msgstr ""
 
 msgid "Settings"
-msgstr ""
+msgstr "إعدادات"
 
 msgid "Logout"
 msgstr "تسجيل الخروج"
@@ -761,7 +762,7 @@
 msgstr "صفحات مشابه"
 
 msgid "Local Site Map"
-msgstr ""
+msgstr "خارطة الموقع المحلية"
 
 msgid "My Pages"
 msgstr "صفحاتي"
@@ -1019,13 +1020,13 @@
 
 #, python-format
 msgid "Password not acceptable: %s"
-msgstr ""
+msgstr "كلمة السر غير مقبولة: %s"
 
 msgid "Your password has been changed."
-msgstr ""
+msgstr "تم تغيير كلمة السر الخاصة بك."
 
 msgid "To change your password, enter a new password twice."
-msgstr ""
+msgstr "لتغيير كلمة السر الخاصة بك، أدخل كلمة سر جديدة مرتين."
 
 msgid "Password repeat"
 msgstr "اعادة كلمة السر"
@@ -1042,7 +1043,7 @@
 msgstr ""
 
 msgid "You are the only user."
-msgstr ""
+msgstr "أنت المستخدم الوحيد."
 
 msgid ""
 "As a superuser, you can temporarily assume the identity of another user."
@@ -1061,6 +1062,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -1090,10 +1094,10 @@
 msgstr ""
 
 msgid "This user name already belongs to somebody else."
-msgstr ""
+msgstr "إسم المستخدم هذا مسجل لشخص آخر."
 
 msgid "Empty user name. Please enter a user name."
-msgstr ""
+msgstr "إسم مستخدم فارغ. الرجاء إدخال إسم مستخدم."
 
 msgid ""
 "Please provide your email address. If you lose your login information, you "
@@ -1228,19 +1232,19 @@
 msgstr ""
 
 msgid "Page has been modified"
-msgstr ""
+msgstr "تم تعديل الصفحة"
 
 msgid "Page has been modified in a trivial fashion"
-msgstr ""
+msgstr "تم تعديل الصفحة بشكل بسيط"
 
 msgid "Page has been renamed"
-msgstr ""
+msgstr "تم إعادة تسمية الصفحة"
 
 msgid "Page has been deleted"
-msgstr ""
+msgstr "تم حذف الصفحة"
 
 msgid "Page has been copied"
-msgstr ""
+msgstr "تم نسخ الصفحة"
 
 #, fuzzy
 msgid "A new attachment has been added"
@@ -1254,7 +1258,7 @@
 msgstr "لا يسمح لك بتحرير هذه الصفحة"
 
 msgid "A new account has been created"
-msgstr ""
+msgstr "تم إنشاء حساب جديد"
 
 #, python-format
 msgid "[%(sitename)s] %(trivial)sUpdate of \"%(pagename)s\" by %(username)s"
@@ -1964,10 +1968,11 @@
 msgstr ""
 
 msgid "Approve"
-msgstr ""
-
+msgstr "إقرار"
+
+#, fuzzy
 msgid "Don't approve"
-msgstr ""
+msgstr "لا تقرّ"
 
 msgid "OpenID not served"
 msgstr ""
@@ -2010,6 +2015,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "يجب عليك تسجيل دخولك لاستعمال الأشتراكات."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "يجب عليك تسجيل دخولك لإضافة رابط سريع"
@@ -2056,10 +2065,10 @@
 msgstr ""
 
 msgid "Backup"
-msgstr ""
+msgstr "نسخ احتياطي"
 
 msgid "Restore"
-msgstr ""
+msgstr "استعادة"
 
 #, fuzzy
 msgid "You are not allowed to do remote backup."
@@ -2238,7 +2247,7 @@
 msgstr "أكتب فوقه"
 
 msgid "Upload"
-msgstr ""
+msgstr "رفع"
 
 #, fuzzy
 msgid "New Name"
@@ -2445,6 +2454,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "لقد قمت بحفظ هذه الصفحة مسبقا!"
 
+msgid "You are not allowed to use this action."
+msgstr "لا يسمح لك استعمال هذا الإجراء"
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr ""
@@ -2521,9 +2533,6 @@
 msgid "Revert all!"
 msgstr ""
 
-msgid "You are not allowed to use this action."
-msgstr "لا يسمح لك استعمال هذا الإجراء"
-
 #, python-format
 msgid "[%d attachments]"
 msgstr ""
--- a/MoinMoin/i18n/bg.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/bg.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-02-11 12:20-0800\n"
 "Last-Translator: Hristo Iliev <hristo@phys.uni-sofia.bg>\n"
 "Language-Team: Bulgarian <moin-devel@lists.sourceforge.net>\n"
@@ -1102,6 +1102,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2156,6 +2159,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Трябва да влезете за да използвате абонаментите."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Трябва да сте влезли, за да добавите бърза връзка."
@@ -2653,6 +2660,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Вече сте записали тази страница!"
 
+msgid "You are not allowed to use this action."
+msgstr "Не Ви е позволено да използвате това действие."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(включително %(localwords)d %(pagelink)s)"
@@ -2732,9 +2742,6 @@
 msgid "Revert all!"
 msgstr "Възвърнете всичко!"
 
-msgid "You are not allowed to use this action."
-msgstr "Не Ви е позволено да използвате това действие."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d приложения]"
--- a/MoinMoin/i18n/ca.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ca.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: moin 0.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-10-10 13:40+0200\n"
 "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -1087,6 +1087,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2109,6 +2112,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Heu d'identificar-vos per a utilitzar les subscripcions."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Heu d'entrar per a afegir un enllaç ràpid"
@@ -2548,6 +2555,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Ja heu desat aquesta pàgina."
 
+msgid "You are not allowed to use this action."
+msgstr "No teniu permís per a utilitzar aquesta acció."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(incloent %(localwords)d %(pagelink)s)"
@@ -2626,9 +2636,6 @@
 msgid "Revert all!"
 msgstr "Torna-ho tot enrere!"
 
-msgid "You are not allowed to use this action."
-msgstr "No teniu permís per a utilitzar aquesta acció."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d adjuncions]"
--- a/MoinMoin/i18n/cs.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/cs.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-11-05 22:11+0100\n"
 "Last-Translator: Václav Haisman <v.haisman@sh.cvut.cz>\n"
 "Language-Team: Czech <moin@lists.sourceforge.net>\n"
@@ -1083,6 +1083,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2128,6 +2131,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Bez přihlášení nelze odebírat stránky."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Bez přihlášení nelze přidat pohotový odkaz."
@@ -2606,6 +2613,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Stránka je již uložena!"
 
+msgid "You are not allowed to use this action."
+msgstr "Nemáte dovoleno provést tuto akci."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(včetně %(localwords)d %(pagelink)s)"
@@ -2685,9 +2695,6 @@
 msgid "Revert all!"
 msgstr "Vrátit vše!"
 
-msgid "You are not allowed to use this action."
-msgstr "Nemáte dovoleno provést tuto akci."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d přílohy]"
--- a/MoinMoin/i18n/da.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/da.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-04-22 18:50+0100\n"
 "Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
 "Language-Team: Danish <moin-devel@lists.sourceforge.net>\n"
@@ -1093,6 +1093,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2144,6 +2147,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Du skal logge på for at bruge abonnement."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Du skal være logget på for at tilføje en genvej."
@@ -2635,6 +2642,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Du har allerede gemt denne side!"
 
+msgid "You are not allowed to use this action."
+msgstr "Du har ikke lov til at anvende denne rutine."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(inklusive %(localwords)d %(pagelink)s)"
@@ -2713,9 +2723,6 @@
 msgid "Revert all!"
 msgstr "Omgør alt!"
 
-msgid "You are not allowed to use this action."
-msgstr "Du har ikke lov til at anvende denne rutine."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d·vedhæftninger]"
--- a/MoinMoin/i18n/de.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/de.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -11,10 +11,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: MoinMoin 1.6\n"
+"Project-Id-Version: MoinMoin 1.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
-"PO-Revision-Date: 2007-11-25 01:10+0100\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
+"PO-Revision-Date: 2008-04-26 18:49+0200\n"
 "Last-Translator: Thomas Waldmann <tw-public@gmx.de>\n"
 "Language-Team: German <moin-user@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -1113,6 +1113,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr "Die ausgewählten OpenIDs wurden entfernt."
 
+msgid "No OpenID given."
+msgstr "Keine OpenID angegeben."
+
 msgid "OpenID is already present."
 msgstr "OpenID ist bereits vorhanden."
 
@@ -1537,7 +1540,8 @@
 " Zeilenumbruch erzwingen:: <<Verbatim(\\\\)>>\n"
 " Überschriften:: = Überschrift 1 =; == Überschrift 2 ==; === Überschrift 3 "
 "===; ==== Überschrift 4 ====; ===== Überschrift 5 =====.\n"
-" Listen:: * Punkte; ** Unterpunkte; # Nummeriertes; ## Nummerierte Unterpunkte.\n"
+" Listen:: * Punkte; ** Unterpunkte; # Nummeriertes; ## Nummerierte "
+"Unterpunkte.\n"
 " Links:: <<Verbatim([[ziel]])>>; <<Verbatim([[ziel|link-text]])>>.\n"
 " Tabellen:: |= Kopftext | Zelltext | mehr Zelltext |;\n"
 "\n"
@@ -2184,6 +2188,11 @@
 msgid "Please choose:"
 msgstr "Bitte wählen:"
 
+#, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+"Sie müssen sich anmelden, um diese Aktion benutzen zu können: %(action)s."
+
 msgid "You must login to remove a quicklink."
 msgstr "Sie müssen sich anmelden, um einen Expressverweis zu entfernen."
 
@@ -2670,6 +2679,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Sie haben bereits einen Expressverweis auf diese Seite."
 
+msgid "You are not allowed to use this action."
+msgstr "Sie dürfen diese Aktion nicht ausführen."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(inklusive %(localwords)d %(pagelink)s)"
@@ -2764,9 +2776,6 @@
 msgid "Revert all!"
 msgstr "Alle restaurieren!"
 
-msgid "You are not allowed to use this action."
-msgstr "Sie dürfen diese Aktion nicht ausführen."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d Anhänge]"
--- a/MoinMoin/i18n/el.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/el.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-12-22 17:56+0200\n"
 "Last-Translator: YiannisValassakis <tungolcild@gmail.com>\n"
 "Language-Team: Greek <moin-devel@lists.sourceforge.net>\n"
@@ -1060,6 +1060,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2020,6 +2023,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Πρέπει να συνδεθείτε για να προσθέσετε ένα quicklink."
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 
@@ -2441,6 +2448,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Έχετε ήδη εισάγει ένα quicklink στη σελίδα."
 
+msgid "You are not allowed to use this action."
+msgstr ""
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr ""
@@ -2517,9 +2527,6 @@
 msgid "Revert all!"
 msgstr ""
 
-msgid "You are not allowed to use this action."
-msgstr ""
-
 #, python-format
 msgid "[%d attachments]"
 msgstr ""
--- a/MoinMoin/i18n/en.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/en.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2005-01-8 00:00+0100\n"
 "Last-Translator: Thomas Waldmann <tw-public@gmx.de>\n"
 "Language-Team: German <moin-devel@lists.sourceforge.net>\n"
@@ -1022,6 +1022,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -1938,6 +1941,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 
@@ -2349,6 +2356,9 @@
 msgid "You already have a quicklink to this page."
 msgstr ""
 
+msgid "You are not allowed to use this action."
+msgstr ""
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr ""
@@ -2421,9 +2431,6 @@
 msgid "Revert all!"
 msgstr ""
 
-msgid "You are not allowed to use this action."
-msgstr ""
-
 #, python-format
 msgid "[%d attachments]"
 msgstr ""
--- a/MoinMoin/i18n/es.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/es.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-11-24 23:12-0300\n"
 "Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
 "Language-Team: Spanish <moin-devel@lists.sourceforge.net>\n"
@@ -1112,6 +1112,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2165,6 +2168,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Debes entrar al sistema (identificarte) para poder suscribirte."
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 "Debes ingresar al sistema (identificarse) para eliminar un enlace rápido. "
@@ -2663,6 +2670,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "¡Ya guardaste el enlace rápido de esta página!"
 
+msgid "You are not allowed to use this action."
+msgstr "No tienes permisos para usar esta acción."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(incluídas %(localwords)d %(pagelink)s)"
@@ -2741,9 +2751,6 @@
 msgid "Revert all!"
 msgstr "¡Deshacer todos los cambios!"
 
-msgid "You are not allowed to use this action."
-msgstr "No tienes permisos para usar esta acción."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d adjuntos]"
--- a/MoinMoin/i18n/fa.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/fa.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: 1.6.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2005-11-06 17:11+0330\n"
 "Last-Translator: Mehdi Hassanpour <h.mehdi@gmail.com>\n"
 "Language-Team: Persian <h.mehdi@gmail.com>\n"
@@ -1097,6 +1097,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2132,6 +2135,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "برای استفاده از امکانات اعضا حتما باید وارد سیستم شوید."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "برای اضافه نمودن یک لینک دسترسی سریع باید وارد سیستم شوید."
@@ -2621,6 +2628,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "صفحه ذخیره شده است!"
 
+msgid "You are not allowed to use this action."
+msgstr "عملیات غیر مجاز"
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "( مرجع لغت %(pagelink)s دارای %(localwords)d لغت )"
@@ -2701,9 +2711,6 @@
 msgid "Revert all!"
 msgstr "کلیه ویرایش ها بازگردانی شود!"
 
-msgid "You are not allowed to use this action."
-msgstr "عملیات غیر مجاز"
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d·attachments]"
--- a/MoinMoin/i18n/fi.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/fi.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-02-03 17:21+0200\n"
 "Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
 "Language-Team: Finnish <moin-devel@lists.sourceforge.net>\n"
@@ -1092,6 +1092,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2144,6 +2147,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Kirjaudu sisään käyttääksesi tilauksia."
+
 msgid "You must login to remove a quicklink."
 msgstr "Sinun täytyy olla kirjautunut sisään poistaaksesi pikalinkin."
 
@@ -2625,6 +2632,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Olet jo lisännyt tämän sivun pikalinkkeihisi!"
 
+msgid "You are not allowed to use this action."
+msgstr "Sinulla ei ole tarvittavia oikeuksia tämän toiminnon käyttämiseksi."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(joista oikolukusanasto %(pagelink)s sisältää %(localwords)d sanaa)."
@@ -2703,9 +2713,6 @@
 msgid "Revert all!"
 msgstr "Palauta kaikki!"
 
-msgid "You are not allowed to use this action."
-msgstr "Sinulla ei ole tarvittavia oikeuksia tämän toiminnon käyttämiseksi."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d liitetiedosto(a)]"
--- a/MoinMoin/i18n/fr.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/fr.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: moin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-03-25 05:16+0100\n"
 "Last-Translator: Jean-Philippe Guérard <fevrier@tigreraye.org>\n"
 "Language-Team: Français\n"
@@ -1126,6 +1126,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2197,6 +2200,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Vous devez être identifié pour utiliser l'abonnement."
+
 msgid "You must login to remove a quicklink."
 msgstr "Vous devez être identifié pour supprimer un lien rapide."
 
@@ -2691,6 +2698,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Vous avez déjà créé un lien rapide vers cette page !"
 
+msgid "You are not allowed to use this action."
+msgstr "Vous n'êtes pas autorisé à utiliser cette action."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr " (inclusion de %(localwords)d %(pagelink)s)"
@@ -2770,9 +2780,6 @@
 msgid "Revert all!"
 msgstr "Tout restaurer !"
 
-msgid "You are not allowed to use this action."
-msgstr "Vous n'êtes pas autorisé à utiliser cette action."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d pièces jointes]"
--- a/MoinMoin/i18n/gl.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/gl.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-02-22 17:39-0300\n"
 "Last-Translator: Iván Méndez <imendez@udc.es>\n"
 "Language-Team: Galician <moin-devel@lists.sourceforge.net>\n"
@@ -1116,6 +1116,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2155,6 +2158,12 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+"Debe iniciar a sesión (identificarse) para poder subscribirse. Pode facelo "
+"desde PreferenciasDoUsuario."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr ""
@@ -2662,6 +2671,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Xa gardou os cambios desta páxina!"
 
+msgid "You are not allowed to use this action."
+msgstr "Non ten permiso para usar esta acción."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(incluídas %(localwords)d %(pagelink)s)"
@@ -2743,9 +2755,6 @@
 msgid "Revert all!"
 msgstr "Desfacer todos os cambios!"
 
-msgid "You are not allowed to use this action."
-msgstr "Non ten permiso para usar esta acción."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d anexos]"
--- a/MoinMoin/i18n/he.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/he.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.5.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-12-05 11:49+0200\n"
 "Last-Translator: Dor Fire <dorfire@gmail.com>\n"
 "Language-Team: Hebrew <moin-devel@lists.sourceforge.net>\n"
@@ -1065,6 +1065,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2092,6 +2095,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "חובה להתחבר בכדי להשתמש במינויים."
+
 msgid "You must login to remove a quicklink."
 msgstr "יש להתחבר בכדי להסיר קישור מהיר."
 
@@ -2555,6 +2562,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "כבר יש לך קישור מהיר לדף זה."
 
+msgid "You are not allowed to use this action."
+msgstr "הינך לא מורשה להשתמש בפעולה זאת."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr " (כולל %(localwords)d %(pagelink)s)"
@@ -2632,9 +2642,6 @@
 msgid "Revert all!"
 msgstr "בטל את כל השינויים!"
 
-msgid "You are not allowed to use this action."
-msgstr "הינך לא מורשה להשתמש בפעולה זאת."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d קבצים מצורפים]"
--- a/MoinMoin/i18n/hi.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/hi.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Rakesh Pandit <rakesh.pandit@gmail.com>\n"
 "Language-Team: Hindi\n"
@@ -1043,6 +1043,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -1975,6 +1978,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 
@@ -2412,6 +2419,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "आप इस पृष्ट पर अिभदािनत कर दिए गए है।"
 
+msgid "You are not allowed to use this action."
+msgstr ""
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(सम्मिलित %(localwords)d %(pagelink)s)"
@@ -2487,9 +2497,6 @@
 msgid "Revert all!"
 msgstr ""
 
-msgid "You are not allowed to use this action."
-msgstr ""
-
 #, python-format
 msgid "[%d attachments]"
 msgstr ""
--- a/MoinMoin/i18n/hr.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/hr.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-08-17 20:50+0100\n"
 "Last-Translator: Translation sponsored by Tenalt Ltd. (info@tenalt.com)\n"
 "Language-Team: \n"
@@ -1088,6 +1088,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2139,6 +2142,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Morate se prijaviti za korištenje pretplate na stranicu."
+
 msgid "You must login to remove a quicklink."
 msgstr "Morate se prijaviti za uklanjanje prečica."
 
@@ -2618,6 +2625,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Prečica na ovu stranicu već postoji."
 
+msgid "You are not allowed to use this action."
+msgstr "Nije Vam dozvoljeno izvesti tu operaciju."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(uključujući %(localwords)d %(pagelink)s)"
@@ -2696,9 +2706,6 @@
 msgid "Revert all!"
 msgstr "Vrati sve!"
 
-msgid "You are not allowed to use this action."
-msgstr "Nije Vam dozvoljeno izvesti tu operaciju."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d privitaka]"
--- a/MoinMoin/i18n/hu.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/hu.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-06-15 15:55+0200\n"
 "Last-Translator: jmarton@omikk.bme.hu, arostas@omikk.bme.hu\n"
 "Language-Team: Hungarian <HU@li.org>\n"
@@ -1093,6 +1093,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2107,6 +2110,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Be kell lépnie a feliratkozások használatához."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Be kell lépnie a gyorslinkek hozzáadásához."
@@ -2599,6 +2606,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Már mentette ezt az oldalt!"
 
+msgid "You are not allowed to use this action."
+msgstr "Nem használhatja ezt a műveletet."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(beleértve %(localwords)d szót a(z) %(pagelink)s lapról)"
@@ -2679,9 +2689,6 @@
 msgid "Revert all!"
 msgstr "Minden visszaállítása"
 
-msgid "You are not allowed to use this action."
-msgstr "Nem használhatja ezt a műveletet."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d melléklet]"
--- a/MoinMoin/i18n/id.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/id.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-10-07 23:19+0700\n"
 "Last-Translator: Fajrin Azis <fajrin.azis@gmail.com>\n"
 "Language-Team: Indonesian <id@ll.com>\n"
@@ -1098,6 +1098,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2156,6 +2159,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Anda harus log in untuk dapat berlangganan."
+
 msgid "You must login to remove a quicklink."
 msgstr "Anda harus login untuk menghapus taut cepat."
 
@@ -2640,6 +2647,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Anda telah mempunyai taut cepat ke halaman ini"
 
+msgid "You are not allowed to use this action."
+msgstr "Anda tidak diizinkan menggunakan aksi ini."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(menyertakan %(localwords)d %(pagelink)s)"
@@ -2718,9 +2728,6 @@
 msgid "Revert all!"
 msgstr "Putar balik semua!"
 
-msgid "You are not allowed to use this action."
-msgstr "Anda tidak diizinkan menggunakan aksi ini."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d lampiran]"
--- a/MoinMoin/i18n/it.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/it.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
-"PO-Revision-Date: 2008-03-31 20:27+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
+"PO-Revision-Date: 2008-04-11 23:21+0200\n"
 "Last-Translator: Milo Casagrande <milo_casagrande@yahoo.it>\n"
 "Language-Team: Italian\n"
 "MIME-Version: 1.0\n"
@@ -1010,7 +1010,7 @@
 msgstr "ControlloOrtografico"
 
 msgid "Discussion"
-msgstr ""
+msgstr "Discussione"
 
 #, python-format
 msgid ""
@@ -1108,6 +1108,10 @@
 msgid "The selected OpenIDs have been removed."
 msgstr "Gli OpenID selezionati sono stati rimossi."
 
+#, fuzzy
+msgid "No OpenID given."
+msgstr "Nessun OpenID."
+
 msgid "OpenID is already present."
 msgstr "OpenID è già presente."
 
@@ -1208,7 +1212,7 @@
 msgid "Quick links"
 msgstr "Collegamenti rapidi"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Dear Wiki user,\n"
 "\n"
@@ -1222,8 +1226,7 @@
 "ti sei abbonato/a alla notifica in caso di modifiche a una pagina o a una\n"
 "categoria sul wiki \"%(sitename)s\".\n"
 "\n"
-"La pagina \"%(pagename)s\" è stata modificata da %(editor)s:\n"
-"\n"
+"La pagina \"%(pagename)s\" è stata modificata da %(editor)s\n"
 
 msgid "New page:\n"
 msgstr "Nuova pagina:\n"
@@ -1507,7 +1510,6 @@
 "[[http://docutils.sourceforge.net/docs/user/rst/quickref.html|"
 "reStructuredText Quick Reference]].\n"
 
-#, fuzzy
 msgid ""
 " Emphasis:: <<Verbatim(//)>>''italics''<<Verbatim(//)>>; <<Verbatim(**)"
 ">>'''bold'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''bold "
@@ -1524,22 +1526,22 @@
 "\n"
 "(!) For more help, see HelpOnEditing or HelpOnCreoleSyntax.\n"
 msgstr ""
-" Enfasi:: <<Verbatim('')>>''corsivo''<<Verbatim('')>>; <<Verbatim(''')"
-">>'''grassetto'''<<Verbatim(''')>>; <<Verbatim(''''')>>'''''grassetto "
-"corsivo'''''<<Verbatim(''''')>>; <<Verbatim('')>>''misto ''<<Verbatim(''')"
-">>'''''grassetto'''<<Verbatim(''')>> e corsivo''<<Verbatim('')>>; <<Verbatim"
-"(----)>> linea orizzontale.\n"
+" Enfasi:: <<Verbatim(//)>>''corsivo''<<Verbatim(//)>>; <<Verbatim(**)"
+">>'''grassetto'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''grassetto "
+"corsivo'''''<<Verbatim(//**)>>; <<Verbatim(//)>>''misto ''<<Verbatim(**)"
+">>'''''grassetto'''<<Verbatim(**)>> e corsivo''<<Verbatim(//)>>;\n"
+" Linea orizzontale:: <<Verbatim(----)>>\n"
+" A capo forzato:: <<Verbatim(\\\\)>>\n"
 " Intestazioni:: = Titolo 1=; == Titolo 2 ==; === Titolo 3 ===; ==== Titolo 4 "
-"====; ===== Titolo 5 =====.\n"
-" Liste:: spazio e uno di: * elenco puntato; 1., a., A., i., I. elenco "
-"numerato; 1.#n inizia la numerazione da n; lo spazio da solo rientra.\n"
-" Collegamenti:: <<Verbatim(ParoleConLettereMaiuscole)>>; <<Verbatim"
-"([[collegamento|etichetta]])>>.\n"
-" Tabelle:: || cella di testo |||| cella su due colonne ||;    non sono "
-"consentiti spazi dopo la tabella o il titolo.\n"
+"====; ===== Titolo 5 =====\n"
+" Liste:: * elenco puntato; ** sotto-elenco puntato; # elemento numerato; ## "
+"sotto-elemento numerato\n"
+" Collegamenti:: <<Verbatim([[collegamento]])>>; <<Verbatim([[collegamento|"
+"etichetta]])>>.\n"
+" Tabelle:: |= intestazione | testo cella | altro testo |\n"
 "\n"
 "(!) Per ulteriore aiuto, consultare AiutoSuModificaPagina o "
-"RiassuntoDellaSintassi.\n"
+"AiutoSuSintassiCreole.\n"
 
 msgid "UnSubscribe"
 msgstr "Annulla abbonamento"
@@ -2181,6 +2183,10 @@
 msgid "Please choose:"
 msgstr "Scegliere:"
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Devi eseguire l'accesso per poterti abbonare."
+
 msgid "You must login to remove a quicklink."
 msgstr "È necessario accedere per rimuovere un collegamento rapido."
 
@@ -2662,6 +2668,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Hai già un collegamento rapido a questa pagina."
 
+msgid "You are not allowed to use this action."
+msgstr "Non è consentito usare quest'azione."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(includendo %(localwords)d %(pagelink)s)"
@@ -2755,9 +2764,6 @@
 msgid "Revert all!"
 msgstr "Ripristina tutto!"
 
-msgid "You are not allowed to use this action."
-msgstr "Non è consentito usare quest'azione."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d allegati]"
@@ -3013,115 +3019,3 @@
 
 msgid "Login and try again."
 msgstr "Esegui l'accesso e prova ancora."
-
-#~ msgid "SendMyPassword"
-#~ msgstr "MandamiLaPassword"
-
-#~ msgid "Low-level communication error: $s"
-#~ msgstr "Errore di comunicazione a basso livello: $s"
-
-#~ msgid "Use UserPreferences to change your settings or create an account."
-#~ msgstr ""
-#~ "Usa PreferenzeUtente per cambiare le tue impostazioni o per creare un "
-#~ "nuovo account."
-
-#~ msgid "Use UserPreferences to change settings of the selected user account"
-#~ msgstr ""
-#~ "Usa PreferenzeUtente per cambiare le impostazioni dell'account scelto."
-
-#~ msgid ""
-#~ "This list does not work, unless you have entered a valid email address!"
-#~ msgstr ""
-#~ "Per un corretto funzionamento della notifica devi inserire un indirizzo "
-#~ "email valido."
-
-#~ msgid ""
-#~ "To create an account, see the %(userprefslink)s page. To recover a lost "
-#~ "password, go to %(sendmypasswordlink)s."
-#~ msgstr ""
-#~ "Per creare un account, vedi la pagina %(userprefslink)s. Per riottenere "
-#~ "una password dimenticata, vedi la pagina %(sendmypasswordlink)s."
-
-#~ msgid ""
-#~ "'''A page with the name {{{'%s'}}} already exists.'''\n"
-#~ "Try a different name."
-#~ msgstr ""
-#~ "'''Una pagina con il nome {{{\"%s\"}}} esiste già.'''\n"
-#~ "Prova un nome differente."
-
-#~ msgid ""
-#~ "The comment on the change is:\n"
-#~ "%(comment)s\n"
-#~ "\n"
-#~ msgstr ""
-#~ "Il commento alle modifiche è:\n"
-#~ "%(comment)s\n"
-#~ "\n"
-
-#~ msgid "Status of sending notification mails:"
-#~ msgstr "Risultato della spedizione delle email di notifica:"
-
-#~ msgid "[%(lang)s] %(recipients)s: %(status)s"
-#~ msgstr "[%(lang)s] %(recipients)s: %(status)s"
-
-#~ msgid "UserPreferences"
-#~ msgstr "PreferenzeUtente"
-
-#~ msgid "Subscribe to trivial changes"
-#~ msgstr "Abbonati ai cambiamenti banali"
-
-#~ msgid "(Only for password change or new account)"
-#~ msgstr "(Solo per cambiare la password o per creare un nuovo account)"
-
-#~ msgid "Check your argument %s"
-#~ msgstr "Controllare l'argomento %s"
-
-#~ msgid "ERROR in regex '%s'"
-#~ msgstr "Errore nell'espressione regolare \"%s\""
-
-#~ msgid "Bad timestamp '%s'"
-#~ msgstr "Specifica oraria \"%s\" non valida"
-
-#~ msgid "Not supported mimetype of file: %s"
-#~ msgstr "Tipo mime del file non supportato: %s"
-
-#~ msgid "Embedding of object by chosen formatter not possible"
-#~ msgstr "Impossibile inserire l'oggetto con il formattatore scelto"
-
-#~ msgid ""
-#~ "Not enough arguments given to EmbedObject macro! Try <<EmbedObject"
-#~ "(attachment [,width=width] [,height=height] [,alt=alternate Text])>>"
-#~ msgstr ""
-#~ "Gli argomenti dati alla macro EmbedObject sono insufficienti. Prova "
-#~ "<<EmbedObject(allegato [,width=larghezza] [,height=altezza] [,alt=testo "
-#~ "sostitutivo])>>"
-
-#~ msgid ""
-#~ "Not enough arguments given to EmbedObject macro! Try <<EmbedObject(url, "
-#~ "url_mimetype [,width=width] [,height=height] [,alt=alternate Text])>>"
-#~ msgstr ""
-#~ "Gli argomenti dati alla macro EmbedObject sono insufficienti. Prova "
-#~ "<<EmbedObject(url, url_mimetype [,width=larghezza] [,height=altezza] [,"
-#~ "alt=testo sostitutivo])>>"
-
-#~ msgid "Invalid MonthCalendar calparms \"%s\"!"
-#~ msgstr "Parametri \"%s\" per il calendario non validi."
-
-#~ msgid "Invalid MonthCalendar arguments \"%s\"!"
-#~ msgstr "Argomenti \"%s\" per il calendario non validi."
-
-#~ msgid "Sorry, login failed."
-#~ msgstr "Spiacente, accesso fallito."
-
-#~ msgid "Filename"
-#~ msgstr "Nome del file"
-
-#~ msgid ""
-#~ "The remote version of MoinMoin is too old, version 1.6 is required at "
-#~ "least."
-#~ msgstr ""
-#~ "La versione remota di MoinMoin è troppo vecchia, occorre almeno la "
-#~ "versione 1.6."
-
-#~ msgid "belonging to one of the following categories"
-#~ msgstr "appartenente a una delle seguenti categorie:"
--- a/MoinMoin/i18n/ja.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ja.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-03-22 00:06+0900\n"
 "Last-Translator: Fujio Nobori <toh@fuji-climb.org>\n"
 "Language-Team: Japanese <moin-devel@lists.sourceforge.net>\n"
@@ -1094,6 +1094,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2149,6 +2152,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "購読を利用するには、ログインしてください。"
+
 msgid "You must login to remove a quicklink."
 msgstr "クイックリンクを削除するには、ログインしてください。"
 
@@ -2627,6 +2634,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "既にこのページへのクイックリンクは追加済みです。"
 
+msgid "You are not allowed to use this action."
+msgstr "このアクションを行う権限がありません。"
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "%(localwords)d語の%(pagelink)sを含む)"
@@ -2704,9 +2714,6 @@
 msgid "Revert all!"
 msgstr "すべて前のリビジョンに戻す"
 
-msgid "You are not allowed to use this action."
-msgstr "このアクションを行う権限がありません。"
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[添付ファイル数: %d]"
--- a/MoinMoin/i18n/ko.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ko.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-03-12 15:01+0900\n"
 "Last-Translator: Seungik Lee <seungiklee@gmail.com>\n"
 "Language-Team: Korean <moin-devel@lists.sourceforge.net>\n"
@@ -1073,6 +1073,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2101,6 +2104,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "문서의 변경 사항을 구독하기 위해서는 로그인을 하셔야 합니다."
+
 msgid "You must login to remove a quicklink."
 msgstr "즐겨찾기를 삭제하시려면 로그인을 하셔야 합니다."
 
@@ -2548,6 +2555,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "이 문서는 이미 즐겨찾기에 있습니다."
 
+msgid "You are not allowed to use this action."
+msgstr "이 작업을 수행할 수 있는 권한이 없습니다."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr " (%(pagelink)s를 %(localwords)d개 포함)"
@@ -2625,9 +2635,6 @@
 msgid "Revert all!"
 msgstr "모두 되돌리기!"
 
-msgid "You are not allowed to use this action."
-msgstr "이 작업을 수행할 수 있는 권한이 없습니다."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[첨부 %d개]"
--- a/MoinMoin/i18n/ku.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ku.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-12-08 18:50+0000\n"
 "Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n"
 "Language-Team: Kurdish <ku@li.org>\n"
@@ -1069,6 +1069,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2004,6 +2007,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Ji bo nîşandana vî rûpelî têra xwe destûra te tuneye."
+
 msgid "You must login to remove a quicklink."
 msgstr ""
 
@@ -2435,6 +2442,10 @@
 msgid "You already have a quicklink to this page."
 msgstr "Jixwe te ev rûpel tomar kir!"
 
+#, fuzzy
+msgid "You are not allowed to use this action."
+msgstr "Ji bo nîşandana vî rûpelî têra xwe destûra te tuneye."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr ""
@@ -2512,10 +2523,6 @@
 msgid "Revert all!"
 msgstr ""
 
-#, fuzzy
-msgid "You are not allowed to use this action."
-msgstr "Ji bo nîşandana vî rûpelî têra xwe destûra te tuneye."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d heb pêvek]"
--- a/MoinMoin/i18n/lt.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/lt.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-12-01 00:00+0200\n"
 "Last-Translator: Aurelijus Sudzius <ruledbyfate@gmail.com>\n"
 "Language-Team: Lithuanian <ruledbyfate@gmail.com>\n"
@@ -1097,6 +1097,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2150,6 +2153,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Jūs privalote prisijungti prieš naudojant prenumeracijas."
+
 msgid "You must login to remove a quicklink."
 msgstr "Jūs privalote prisijungti, kad pašalintumėte greitąją nuorodą."
 
@@ -2639,6 +2646,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Jūs jau turite greijąją nuorodą šiame puslapyje."
 
+msgid "You are not allowed to use this action."
+msgstr "Jums neleidžiama vykdyti šio veiksmo."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(įskaitant ir %(localwords)d %(pagelink)s)"
@@ -2717,9 +2727,6 @@
 msgid "Revert all!"
 msgstr "Atstatyti viską!"
 
-msgid "You are not allowed to use this action."
-msgstr "Jums neleidžiama vykdyti šio veiksmo."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d priedų]"
--- a/MoinMoin/i18n/lv.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/lv.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-09-13 09:30+0200\n"
 "Last-Translator: Radomirs Cirskis <nad2000 AT gmail DOT NO SPAM com>\n"
 "Language-Team: Latvian <nad2000 AT gmail DOT NO SPAM com>\n"
@@ -1097,6 +1097,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2138,6 +2141,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Lai izmanototu parasktīšanos, Jums jāpieslēdzas."
+
 msgid "You must login to remove a quicklink."
 msgstr "Lai dzēstu ātrsaiti, Jums jāpieslēdzas."
 
@@ -2612,6 +2619,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Jums jau ir ātrsaite uz šo lapu!"
 
+msgid "You are not allowed to use this action."
+msgstr "Jums nav tiesību lietot šo darbību."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(including %(localwords)d %(pagelink)s)"
@@ -2690,9 +2700,6 @@
 msgid "Revert all!"
 msgstr "Atgriezt visu!"
 
-msgid "You are not allowed to use this action."
-msgstr "Jums nav tiesību lietot šo darbību."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d piesaistes]"
--- a/MoinMoin/i18n/mk.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/mk.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: mk.moinmoin1.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-03-30 16:24+0200\n"
 "Last-Translator: Novica Nakov\n"
 "Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
@@ -1002,7 +1002,7 @@
 msgstr "Проверка на правопис"
 
 msgid "Discussion"
-msgstr ""
+msgstr "Дискусија"
 
 #, python-format
 msgid ""
@@ -1101,6 +1101,10 @@
 msgid "The selected OpenIDs have been removed."
 msgstr "Одбраните OpenID-а се отстранети."
 
+#, fuzzy
+msgid "No OpenID given."
+msgstr "Нема OpenID."
+
 msgid "OpenID is already present."
 msgstr "OpenID веќе е присутно."
 
@@ -1201,7 +1205,7 @@
 msgid "Quick links"
 msgstr "Кратенки"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Dear Wiki user,\n"
 "\n"
@@ -1498,7 +1502,6 @@
 "reStructuredText Quick Reference\n"
 "</a>.\n"
 
-#, fuzzy
 msgid ""
 " Emphasis:: <<Verbatim(//)>>''italics''<<Verbatim(//)>>; <<Verbatim(**)"
 ">>'''bold'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''bold "
@@ -1515,19 +1518,18 @@
 "\n"
 "(!) For more help, see HelpOnEditing or HelpOnCreoleSyntax.\n"
 msgstr ""
-" Нагласено:: <<Verbatim('')>>''искосено''<<Verbatim('')>>; <<Verbatim(''')"
-">>'''здебелено'''<<Verbatim(''')>>; <<Verbatim(''''')>>'''''здебелено "
-"искосено'''''<<Verbatim(''''')>>; <<Verbatim('')>>''мешано ''<<Verbatim(''')"
-">>'''''здебелено'''<<Verbatim(''')>> искосено''<<Verbatim('')>>; <<Verbatim"
-"(----)>> водорамна линија.\n"
+" Нагласено:: <<Verbatim(//)>>''искосено''<<Verbatim(//)>>; <<Verbatim(**)"
+">>'''здебелено'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''здебелено "
+"искосено'''''<<Verbatim(//**)>>; <<Verbatim(//)>>''мешано ''<<Verbatim(**)"
+">>'''''здебелено'''<<Verbatim(**)>> искосено''<<Verbatim(//)>>; "
+"<<VerbatimВодорамна линија:: <<Verbatim(----)>>\n"
+"Нов ред:: <<Verbatim(\\\\)>>\n"
 " Наслови:: = Наслов 1 =; == Наслов 2 ==; === Наслов 3 ===; ==== Насловv 4 "
 "====; ===== Наслов 5 =====.\n"
-" Списоци:: празно место и еден знак : * ; 1., a., A., i., I. нумерирани "
-"ставки; 1.#n почни нумерирање од n; празно место за вовлекување.\n"
-" Врски:: <<Verbatim(ЗаедноНапишаниЗборовиСоГолемиБукви)>>; <<Verbatim([\"во "
-"средни загради и наводници\"])>>; URL; [URL]; [URL adresa].\n"
-" Табели:: || текст во ќелија |||| текст во ќелија преку 2 колони ||;    не "
-"се дозволени празни места зад таблиците или насловите.\n"
+" Списоци:: * точки, ** потточки, # нумерирани ставки, ## нумерирани "
+"потскавки.\n"
+" Врски:: <<Verbatim([[цел]])>>; <<Verbatim([[цел|име на врска]])>>.\n"
+" Табели:: |= наслов | текст во ќелија | повеќе текст во ќелија |;\n"
 "\n"
 "(!) Повеќе информации: [\"Како да уредувате\"], [\"Синтакса\"].\n"
 
@@ -2167,6 +2169,10 @@
 msgid "Please choose:"
 msgstr "Одберете:"
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Морате да се пријавите за да користите претплата на страници."
+
 msgid "You must login to remove a quicklink."
 msgstr "Морате да се пријавите за да ја отстраните кратенката."
 
@@ -2647,6 +2653,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Веќе имате кратенка на оваа страница."
 
+msgid "You are not allowed to use this action."
+msgstr "Не Ви е дозволено да ја спроведете оваа операција."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(вклучувајќи %(localwords)d %(pagelink)s)"
@@ -2735,9 +2744,6 @@
 msgid "Revert all!"
 msgstr "Врати сѐ!"
 
-msgid "You are not allowed to use this action."
-msgstr "Не Ви е дозволено да ја спроведете оваа операција."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d прилози]"
--- a/MoinMoin/i18n/mn.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/mn.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-12-05 12:04+0800\n"
 "Last-Translator: Amgalanbaatar Delegdorj <d.amgalanbaatar@gmail.com>\n"
 "Language-Team: Mongolia <d.amgalanbaatar@gmail.com>\n"
@@ -1098,6 +1098,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2155,6 +2158,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Та Abonnements ашиглахын тулд бүртгүүлэх шаардлагатай."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "quicklink үүсгэхийн тулд логин хийсэн байх шаарлагатай"
@@ -2651,6 +2658,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Та уг нь энэ хуудсыг сая хадгалсан л байна даа!"
 
+msgid "You are not allowed to use this action."
+msgstr "Та энэ үйлдлийг хийж болохгүй."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "хамрагдсан:(%(localwords)d %(pagelink)s)"
@@ -2730,9 +2740,6 @@
 msgid "Revert all!"
 msgstr "Бүгдийг сэргээх!"
 
-msgid "You are not allowed to use this action."
-msgstr "Та энэ үйлдлийг хийж болохгүй."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d Хавсралт]"
--- a/MoinMoin/i18n/nb.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/nb.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2004-12-01 21:30+0200\n"
 "Last-Translator: Joerg Cassens <jmt@cassens.org>\n"
 "Language-Team: Norwegian <moinmoin-nb@cassens.org>\n"
@@ -1093,6 +1093,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2109,6 +2112,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Du har ikke tillatelse til å redigere denne siden."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Du har ikke tillatelse til å redigere denne siden."
@@ -2551,6 +2558,10 @@
 msgid "You already have a quicklink to this page."
 msgstr "Du har ikke tillatelse til å redigere denne siden!"
 
+#, fuzzy
+msgid "You are not allowed to use this action."
+msgstr "Du har ikke tillatelse til å redigere denne siden."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(inkludert %(localwords)d %(pagelink)s)"
@@ -2631,10 +2642,6 @@
 msgid "Revert all!"
 msgstr ""
 
-#, fuzzy
-msgid "You are not allowed to use this action."
-msgstr "Du har ikke tillatelse til å redigere denne siden."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d vedlegg]"
--- a/MoinMoin/i18n/nl.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/nl.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2005-03-13 17:43+0200\n"
 "Last-Translator: Sander Kromwijk <s.kromwijk@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -1095,6 +1095,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2146,6 +2149,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "U moet ingelogd zijn om abonementen te gebruiken."
+
 msgid "You must login to remove a quicklink."
 msgstr "U moet inloggen om een quicklink te verwijderen."
 
@@ -2635,6 +2642,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "U heeft al een quicklink naar deze pagina."
 
+msgid "You are not allowed to use this action."
+msgstr "U hebt geen toestemming om deze aktie te gebruiken."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(inclusief %(localwords)d %(pagelink)s)"
@@ -2715,9 +2725,6 @@
 msgid "Revert all!"
 msgstr "Alles terugzetten!"
 
-msgid "You are not allowed to use this action."
-msgstr "U hebt geen toestemming om deze aktie te gebruiken."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d bijlagen]"
--- a/MoinMoin/i18n/pl.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/pl.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-02-09 11:25+0100\n"
 "Last-Translator: Radomir Dopieralski <mondev@sheep.art.pl>\n"
 "Language-Team: Polish <sergiusz-keyword-moinmoin.69c762@pawlowicz.name>\n"
@@ -1093,6 +1093,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2142,6 +2145,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Musisz się zalogować, aby móc korzystać z subskrybcji."
+
 msgid "You must login to remove a quicklink."
 msgstr "Musisz się zalogować by usunąć szybki odnośnik."
 
@@ -2629,6 +2636,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Już zapisałeś tę stronę w szybkich odnośnikach!"
 
+msgid "You are not allowed to use this action."
+msgstr "Nie możesz uzyć tej akcji."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(zawarto  %(localwords)d %(pagelink)s)"
@@ -2706,9 +2716,6 @@
 msgid "Revert all!"
 msgstr "Odtwórz wszystkie!"
 
-msgid "You are not allowed to use this action."
-msgstr "Nie możesz uzyć tej akcji."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d załączników]"
--- a/MoinMoin/i18n/pt-br.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/pt-br.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-11-20 23:40+0000\n"
 "Last-Translator: Evandro Villa Verde <evandro.villaverde.hackerteen@gmail."
 "com>\n"
@@ -1094,6 +1094,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2148,6 +2151,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Você precisa fazer o login antes de se inscrever."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Você precisa se logar para adicionar links rápidos."
@@ -2641,6 +2648,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Você já salvou esta página!"
 
+msgid "You are not allowed to use this action."
+msgstr "Você não tem permissão para fazer esta ação."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(incluindo %(localwords)d %(pagelink)s)"
@@ -2720,9 +2730,6 @@
 msgid "Revert all!"
 msgstr "Reverter tudo!"
 
-msgid "You are not allowed to use this action."
-msgstr "Você não tem permissão para fazer esta ação."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d arquivos anexados]"
--- a/MoinMoin/i18n/pt.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/pt.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-01-05 22:27+0000\n"
 "Last-Translator: Rita Farinha <rita.farinha@intraneia.com>\n"
 "Language-Team: Portuguese <moin-devel@lists.sourceforge.net>\n"
@@ -1101,6 +1101,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2160,6 +2163,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Tem de autenticar-se para subscrever páginas."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Tem de entrar para adicionar uma ligação rápida."
@@ -2649,6 +2656,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Já guardou esta página antes!"
 
+msgid "You are not allowed to use this action."
+msgstr "Não tem permissão para executar esta acção."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(a incluir %(localwords)d %(pagelink)s...)"
@@ -2729,9 +2739,6 @@
 msgid "Revert all!"
 msgstr "Repor tudo!"
 
-msgid "You are not allowed to use this action."
-msgstr "Não tem permissão para executar esta acção."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d anexos]"
--- a/MoinMoin/i18n/ro.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ro.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2005-08-18 14:19+EET\n"
 "Last-Translator: Ovidiu Sabou <ovidiu.sabou@gmail.com>\n"
 "Language-Team: Romanian <ovidiu.sabou@gmail.com>\n"
@@ -1110,6 +1110,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2130,6 +2133,11 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr ""
+"Trebuie să fiţi logaţi pentru a putea folosi înregistrările(subscriptions)."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Trebuie să vă logaţi pentru a putea adăuga o legătură rapidă"
@@ -2590,6 +2598,10 @@
 msgid "You already have a quicklink to this page."
 msgstr "Aţi salvat deja această pagină!"
 
+#, fuzzy
+msgid "You are not allowed to use this action."
+msgstr "Nu aveţi dreptul să editaţi această pagină."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(inclusiv %(localwords)d %(pagelink)s)"
@@ -2676,10 +2688,6 @@
 msgid "Revert all!"
 msgstr ""
 
-#, fuzzy
-msgid "You are not allowed to use this action."
-msgstr "Nu aveţi dreptul să editaţi această pagină."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d ataşamente]"
--- a/MoinMoin/i18n/ru.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/ru.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-06-26 21:43-0800\n"
 "Last-Translator: Mike Rovner <mrovner@hotmail.com>\n"
 "Language-Team: Russian <moin-devel@lists.sourceforge.net>\n"
@@ -1095,6 +1095,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2146,6 +2149,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Вы должны войти, чтобы воспользоваться подпиской."
+
 msgid "You must login to remove a quicklink."
 msgstr "Вы должны войти, чтобы удалить закладку."
 
@@ -2627,6 +2634,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "У вас уже есть закладка на эту страницу."
 
+msgid "You are not allowed to use this action."
+msgstr "Вам нельзя это делать."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(включая %(localwords)d %(pagelink)s)"
@@ -2706,9 +2716,6 @@
 msgid "Revert all!"
 msgstr "Вернуть всё!"
 
-msgid "You are not allowed to use this action."
-msgstr "Вам нельзя это делать."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d вложений]"
--- a/MoinMoin/i18n/sl.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/sl.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2006-12-14 19:00+0100\n"
 "Last-Translator: Mark Martinec <Mark.Martinec@ijs.si>\n"
 "Language-Team: \n"
@@ -1082,6 +1082,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2134,6 +2137,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Za naročilo obvestil se je treba prej prijaviti."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Za dodajanje hitre povezave se je treba prej prijaviti."
@@ -2619,6 +2626,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "To stran ste že prej shranili!"
 
+msgid "You are not allowed to use this action."
+msgstr "Te akcije vam ni dovoljeno izvesti."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(vključno z %(localwords)d %(pagelink)s)"
@@ -2698,9 +2708,6 @@
 msgid "Revert all!"
 msgstr "Vrni vse v prejšnje stanje!"
 
-msgid "You are not allowed to use this action."
-msgstr "Te akcije vam ni dovoljeno izvesti."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d priponk]"
--- a/MoinMoin/i18n/sr.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/sr.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: sr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-11-26 23:04-0500\n"
 "Last-Translator: Igor Miletic <grejigl-gnomeprevod@yahoo.ca>\n"
 "Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@@ -1090,6 +1090,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2145,6 +2148,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Морате се пријавити да бисте користили претплате."
+
 msgid "You must login to remove a quicklink."
 msgstr "Морате се пријавити да бисте избацили брзу везу"
 
@@ -2634,6 +2641,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Већ имате брзу везу за ову страницу."
 
+msgid "You are not allowed to use this action."
+msgstr "Није вам дозвољено да користите ову радњу."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(укључујући %(localwords)d %(pagelink)s)"
@@ -2712,9 +2722,6 @@
 msgid "Revert all!"
 msgstr "Повратите све"
 
-msgid "You are not allowed to use this action."
-msgstr "Није вам дозвољено да користите ову радњу."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d прилога]"
--- a/MoinMoin/i18n/sv.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/sv.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -11,11 +11,11 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: MoinMoin 1.6\n"
+"Project-Id-Version: MoinMoin 1.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
-"PO-Revision-Date: 2007-11-02 10:18+0100\n"
-"Last-Translator: ***vacant***\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
+"PO-Revision-Date: 2008-04-25 13:30+0200\n"
+"Last-Translator: thomas@marquart.se\n"
 "Language-Team: Swedish <moin-user@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
@@ -28,7 +28,7 @@
 msgid "<unknown>"
 msgstr "<okänd>"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Login Name: %s\n"
 "\n"
@@ -40,7 +40,7 @@
 "\n"
 "Lösenord: %s\n"
 "\n"
-"Inloggnings-URL: %s/%s?action=login\n"
+"Inloggnings-URL: %s/?action=login\n"
 
 msgid ""
 "Somebody has requested to submit your account data to this email address.\n"
@@ -52,7 +52,7 @@
 "After successfully logging in, it is of course a good idea to set a new and "
 "known password.\n"
 msgstr ""
-"Någon har begärt din kontoinformation till den här epostadressen.\n"
+"Någon har begärt att få din kontoinformation till den här epostadressen.\n"
 "\n"
 "Om du har förlorat ditt lösenord, använd informationen nedanför och\n"
 "ange lösenordet SOM VISAS i wikins lösenordsfält (använd klipp och\n"
@@ -66,7 +66,7 @@
 msgstr "[%(sitename)s] Din wiki-kontoinformation"
 
 msgid "You are not allowed to edit this page."
-msgstr "Du har inte tillåtelse att redigera den här sidan."
+msgstr "Du får inte redigera den här sidan."
 
 msgid "Page is immutable!"
 msgstr "Sidan är skrivskyddad!"
@@ -77,9 +77,9 @@
 msgid "The lock you held timed out. Be prepared for editing conflicts!"
 msgstr "Låset du höll har gått ut. Förbered dig för redigeringskonflikter!"
 
-#, fuzzy, python-format
+#, python-format
 msgid "Draft of \"%(pagename)s\""
-msgstr "Förhandsgranskning av \"%(pagename)s\""
+msgstr "Utkast av \"%(pagename)s\""
 
 #, python-format
 msgid "Edit \"%(pagename)s\""
@@ -114,13 +114,12 @@
 "Någon annan sparade den här sidan medan du redigerade den!\n"
 "Granska först sidan och spara den sedan. Spara inte sidan som den är!"
 
-#, fuzzy
 msgid "[Content loaded from draft]"
-msgstr "[Den nya sidans innehåll laddad från %s]"
+msgstr "[Innehåll laddat från utkast]"
 
 #, python-format
 msgid "[Content of new page loaded from %s]"
-msgstr "[Den nya sidans innehåll laddad från %s]"
+msgstr "[Den nya sidans innehåll laddat från %s]"
 
 #, python-format
 msgid "[Template %s not found]"
@@ -176,7 +175,7 @@
 msgstr "Textläge"
 
 msgid "Load Draft"
-msgstr ""
+msgstr "Ladda Utkast"
 
 msgid "Trivial change"
 msgstr "Trivial ändring"
@@ -244,9 +243,9 @@
 msgid "Argument \"%s\" is required"
 msgstr "Argumentet \"%s\" är obligatoriskt"
 
-#, fuzzy, python-format
+#, python-format
 msgid "No argument named \"%s\""
-msgstr "Inga sidor liknar \"%s\"!"
+msgstr "Inget argument med namn \"%s\""
 
 #, python-format
 msgid "Expected \"=\" to follow \"%(token)s\""
@@ -268,13 +267,11 @@
 msgid "Edit was cancelled."
 msgstr "Redigeringen avbröts."
 
-#, fuzzy
 msgid "You can't copy to an empty pagename."
-msgstr "Du kan inte byta ett tomt sidnamn."
-
-#, fuzzy
+msgstr "Du kan inte kopiera till ett tomt sidnamn."
+
 msgid "You are not allowed to copy this page!"
-msgstr "Du har inte tillåtelse att redigera den här sidan!"
+msgstr "Du får inte kopiera den här sidan!"
 
 #, python-format
 msgid ""
@@ -286,15 +283,12 @@
 "\n"
 "Pröva ett annat namn."
 
-#, fuzzy, python-format
+#, python-format
 msgid "Could not copy page because of file system error: %s."
-msgstr "Kunde inte byta namn på sidan på grund av ett filsystemsfel: %s."
-
-#, fuzzy
+msgstr "Kunde inte kopiera sidan på grund av ett filsystemsfel: %s."
+
 msgid "You are not allowed to rename this page!"
-msgstr ""
-"Du har inte tillåtelse att göra så att den här sidan återgår till en äldre "
-"version!"
+msgstr "Du får inte byta namn på denna sida!"
 
 msgid "You can't rename to an empty pagename."
 msgstr "Du kan inte byta ett tomt sidnamn."
@@ -303,11 +297,8 @@
 msgid "Could not rename page because of file system error: %s."
 msgstr "Kunde inte byta namn på sidan på grund av ett filsystemsfel: %s."
 
-#, fuzzy
 msgid "You are not allowed to delete this page!"
-msgstr ""
-"Du har inte tillåtelse att göra så att den här sidan återgår till en äldre "
-"version!"
+msgstr "Du får inte ta bort denna sida!"
 
 msgid "Thank you for your changes. Your attention to detail is appreciated."
 msgstr "Tack för dina ändringar. Ditt sinne för detaljer är uppskattat."
@@ -328,17 +319,19 @@
 "Unable to determine current page revision from the 'current' file. The page %"
 "s is damaged and cannot be edited right now."
 msgstr ""
+"Kunde inte bestämma sidans aktuella version från 'current'-filen. Sidan %s "
+"är trasig och kan inte redigeras just nu."
 
 #, python-format
 msgid "Cannot save page %s, no storage space left."
-msgstr ""
+msgstr "Kan inte spara sidan %s, inget lagringsutrymme kvar."
 
 #, python-format
 msgid "An I/O error occurred while saving page %s (errno=%d)"
-msgstr ""
+msgstr "Ett I/O-fel uppstod när sidan %s sparades (errno=%d)"
 
 msgid "You are not allowed to edit this page!"
-msgstr "Du har inte tillåtelse att redigera den här sidan!"
+msgstr "Du får inte redigera den här sidan!"
 
 msgid "You cannot save empty pages."
 msgstr "Du kan inte spara tomma sidor."
@@ -360,7 +353,7 @@
 "administratörsrättigheter till den!"
 
 msgid "Notifications sent to:"
-msgstr ""
+msgstr "Meddelanden skickats till:"
 
 #, python-format
 msgid ""
@@ -413,16 +406,18 @@
 "För att lämna redigeringen, tryck på \"Avbryt\"."
 
 msgid "The wiki is currently not reachable."
-msgstr ""
+msgstr "Wikin går för tillfället inte att nå."
 
 msgid "Invalid username or password."
-msgstr ""
+msgstr "Felaktig användarnamn eller lösenord."
 
 #, python-format
 msgid ""
 "The remote wiki uses a different InterWiki name (%(remotename)s) internally "
 "than you specified (%(localname)s)."
 msgstr ""
+"Den andra wikin använder ett annorlunda InterWiki namn %(remotename)s) "
+"interntän det du har angivit %(localname)s)."
 
 #, python-format
 msgid "The package needs a newer version of MoinMoin (at least %s)."
@@ -462,7 +457,7 @@
 
 #, python-format
 msgid "Invalid highlighting regular expression \"%(regex)s\": %(error)s"
-msgstr ""
+msgstr "Ogiltigt reguliärt uttryck för emfas \"%(regex)s\": %(error)s"
 
 msgid ""
 "The backed up content of this page is deprecated and will not be included in "
@@ -490,45 +485,43 @@
 msgstr "Du har inte tillåtelse att titta på den här sidan."
 
 msgid "[all]"
-msgstr ""
+msgstr "[alla]"
 
 msgid "[not empty]"
-msgstr ""
+msgstr "[ej tom]"
 
 msgid "[empty]"
-msgstr ""
+msgstr "[tom]"
 
 msgid "filter"
-msgstr ""
+msgstr "filter"
 
 #, python-format
 msgid ""
 "Results %(bs)s%(hitsFrom)d - %(hitsTo)d%(be)s of %(aboutHits)s %(bs)s%(hits)d"
 "%(be)s results out of about %(pages)d pages."
 msgstr ""
-
-#, fuzzy
+"Resultat %(bs)s%(hitsFrom)d - %(hitsTo)d%(be)s av %(aboutHits)s %(bs)s%(hits)"
+"d%(be)s resultat av ungefär %(pages)d pages."
+
 msgid "seconds"
-msgstr "%.2f sekunder"
-
-#, fuzzy
+msgstr "sekunder"
+
 msgid "Previous"
-msgstr "Förhandsgranska"
-
-#, fuzzy
+msgstr "Föregående"
+
 msgid "Next"
-msgstr "Text"
-
-#, fuzzy
+msgstr "Nästa"
+
 msgid "rev"
-msgstr "återgå"
+msgstr "ver"
 
 msgid "current"
-msgstr ""
-
-#, fuzzy, python-format
+msgstr "nuvarande"
+
+#, python-format
 msgid "last modified: %s"
-msgstr "senast ändrad %(time)s"
+msgstr "senast ändrad: %s"
 
 msgid "match"
 msgstr "träff"
@@ -555,64 +548,63 @@
 msgstr "Lösenord"
 
 msgid "OpenID"
-msgstr ""
+msgstr "OpenID"
 
 msgid "Login"
 msgstr "Logga in"
 
-#, fuzzy
 msgid "Username"
-msgstr "Användare"
+msgstr "Användarnamn"
 
 msgid "ACL Groups"
-msgstr ""
+msgstr "ACL Grupper"
 
 msgid "Email"
 msgstr "Epost"
 
 msgid "Jabber"
-msgstr ""
+msgstr "Jabber"
 
 msgid "Action"
-msgstr "Anrop"
-
-#, fuzzy
+msgstr "Åtgärd"
+
 msgid "Enable user"
-msgstr "Aktiverad"
-
-#, fuzzy
+msgstr "Aktivera användare"
+
 msgid "disabled"
-msgstr "Avaktiverad"
-
-#, fuzzy
+msgstr "avaktiverad"
+
 msgid "Disable user"
-msgstr "Avaktiverad"
-
-#, fuzzy
+msgstr "Avaktivera användare"
+
 msgid "Mail account data"
-msgstr "Eposta mig information om mitt konto"
+msgstr "Skicka kontoinformation som epost"
 
 msgid "Missing password. Please enter user name and password."
 msgstr "Lösenord saknas. Var god ange användarnamn och lösenord."
 
-#, fuzzy
 msgid "You need to log in."
-msgstr "Du är nu utloggad."
+msgstr "Du måste logga in."
 
 #, python-format
 msgid ""
 "If you do not have an account, <a href=\"%(userprefslink)s\">you can create "
 "one now</a>. <a href=\"%(sendmypasswordlink)s\">Forgot your password?</a>"
 msgstr ""
+"Om du inte har ett konto, kan du <a href=\"%(userprefslink)s\">skapa ett nu</"
+"a>. <a href=\"%(sendmypasswordlink)s\">Glömt ditt lösenord?</a>"
 
 msgid ""
 "Please choose an account name now.\n"
 "If you choose an existing account name you will be asked for the\n"
 "password and be able to associate the account with your OpenID."
 msgstr ""
+"Var god och välj ett namn för kontot nu.\n"
+"Om du väljer ett befintligt namn, kommer du att frågas efter\n"
+"lösenordet och kommer kunna förknippa kontot med din OpenID."
 
 msgid "Choose this name"
-msgstr ""
+msgstr "Välj detta namn"
 
 msgid ""
 "The username you have chosen is already\n"
@@ -620,55 +612,60 @@
 "the username with your OpenID. Otherwise, please choose a different\n"
 "username and leave the password field blank."
 msgstr ""
+"Användarnamnet du valde är redan upptagen.\n"
+"Om det är ditt användarnamn, skriv in lösenordet nere för att förknippa\n"
+"användarnamnet med din OpenID. Annars välj ett nytt namn och lämna\n"
+"fältet för lösenord tomt."
 
 msgid "Associate this name"
-msgstr ""
+msgstr "Förknippa detta namn"
 
 #, python-format
 msgid "OpenID error: %s."
-msgstr ""
-
-#, fuzzy
+msgstr "OpenID fel: %s."
+
 msgid "Verification canceled."
-msgstr "Redigeringen avbröts."
+msgstr "Verifieringen avbröts."
 
 msgid "OpenID failure."
-msgstr ""
+msgstr "OpenID fel."
 
 msgid "This is not a valid username, choose a different one."
-msgstr ""
+msgstr "Detta är inte ett giltigt användarnamn, välj ett annat."
 
 msgid "Your account is now associated to your OpenID."
-msgstr ""
+msgstr "Ditt konto är nu förknippat med din OpenID."
 
 msgid "The password you entered is not valid."
-msgstr ""
+msgstr "Lösenordet du skrev in är inte giltigt."
 
 msgid "OpenID verification requires that you click this button:"
-msgstr ""
+msgstr "OpenID verifiering kräver att du trycker denna knapp:"
 
 msgid "Anonymous sessions need to be enabled for OpenID login."
-msgstr ""
+msgstr "Anonyma sessioner måste vara aktiverade för inloggning med OpenID."
 
 msgid "Failed to resolve OpenID."
-msgstr ""
+msgstr "Kunde inte lösa upp OpenID."
 
 msgid "OpenID discovery failure, not a valid OpenID."
-msgstr ""
+msgstr "Fel att upptäcka OpenID, inte ett giltigt OpenID."
 
 msgid "No OpenID."
-msgstr ""
+msgstr "Ingen OpenID."
 
 msgid ""
 "If you do not have an account yet, you can still log in with your OpenID and "
 "create one during login."
 msgstr ""
+"Om du inte har ett konto än, så kan du fortfarande logga in med din OpenID "
+"ochskapa ett under inloggningen."
 
 msgid "Failed to connect to database."
-msgstr ""
+msgstr "Fel att ansluta till databasen."
 
 msgid "Could not contact botbouncer.com."
-msgstr ""
+msgstr "Kunde inte kontaktera botbouncer.com."
 
 msgid "Wiki"
 msgstr "Wiki"
@@ -722,10 +719,10 @@
 msgstr "[UPPDATERAD]"
 
 msgid "[RENAMED]"
-msgstr ""
+msgstr "[DÖPT OM]"
 
 msgid "[CONFLICT]"
-msgstr ""
+msgstr "[KONFLIKT]"
 
 msgid "[NEW]"
 msgstr "[NY]"
@@ -743,7 +740,7 @@
 msgstr "Klicka här för att göra en fulltextsökning på den här titeln"
 
 msgid "Settings"
-msgstr ""
+msgstr "Inställningar"
 
 msgid "Logout"
 msgstr "Logga ut"
@@ -774,9 +771,8 @@
 msgid "More Actions:"
 msgstr "Fler åtgärder:"
 
-#, fuzzy
 msgid "------------------------"
-msgstr "------------"
+msgstr "------------------------"
 
 msgid "Raw Text"
 msgstr "Råtext"
@@ -790,9 +786,8 @@
 msgid "Rename Page"
 msgstr "Byt namn på sida"
 
-#, fuzzy
 msgid "Copy Page"
-msgstr "Mina sidor"
+msgstr "Kopiera sida"
 
 msgid "Delete Page"
 msgstr "Radera sida"
@@ -812,9 +807,8 @@
 msgid "Remove Spam"
 msgstr "Ta bort spam"
 
-#, fuzzy
 msgid "Revert to this revision"
-msgstr "Återgå till version %(rev)d."
+msgstr "Återgå till denna version"
 
 msgid "Package Pages"
 msgstr "Paketsidor"
@@ -822,16 +816,14 @@
 msgid "Render as Docbook"
 msgstr "Rendera som Docbook"
 
-#, fuzzy
 msgid "Sync Pages"
-msgstr "Mina sidor"
+msgstr "Synkronisera sidor"
 
 msgid "Do"
 msgstr "Gör"
 
-#, fuzzy
 msgid "Comments"
-msgstr "Kommentar"
+msgstr "Kommentarer"
 
 msgid "Edit (Text)"
 msgstr "Redigera (textläge)"
@@ -872,12 +864,11 @@
 msgstr "Datum"
 
 msgid "From"
-msgstr ""
+msgstr "Från"
 
 msgid "To"
-msgstr ""
-
-#, fuzzy
+msgstr "Till"
+
 msgid "Content"
 msgstr "Innehåll"
 
@@ -899,25 +890,23 @@
 msgid "**Maximum number of allowed includes exceeded**"
 msgstr "**Maximalt antal tillåtna inkluderingar har överskridits**"
 
-#, fuzzy, python-format
+#, python-format
 msgid "**You are not allowed to read the page: %s**"
-msgstr ""
-"Du har inte tillåtelse att göra så att den här sidan återgår till en äldre "
-"version!"
+msgstr "**Du får inte läsa sidan: %s**"
 
 #, python-format
 msgid "**Could not find the referenced page: %s**"
 msgstr "**Kunde inte hitta den refererade sidan: %s**"
 
 msgid "XSLT option disabled, please look at HelpOnConfiguration."
-msgstr "XSLT-alternativet avstängt, se HjälpMedKonfigurering."
+msgstr "XSLT-alternativet avstängt, se HjälpMedAnpassning."
 
 msgid "XSLT processing is not available, please install 4suite 1.x."
 msgstr "XSLT-konvertering är inte tillgänglig, installera 4suite 1.x."
 
 #, python-format
 msgid "%(errortype)s processing error"
-msgstr "%(errortype)s process fel"
+msgstr "%(errortype)s processfel"
 
 #, python-format
 msgid "Expected \"%(wanted)s\" after \"%(key)s\", got \"%(token)s\""
@@ -925,11 +914,11 @@
 
 #, python-format
 msgid "Expected an integer \"%(key)s\" before \"%(token)s\""
-msgstr "Förväntade ett värde \"%(key)s\" före \"%(token)s\""
+msgstr "Förväntade ett heltal \"%(key)s\" före \"%(token)s\""
 
 #, python-format
 msgid "Expected an integer \"%(arg)s\" after \"%(key)s\""
-msgstr "Förväntade ett värde \"%(arg)s\" efter \"%(key)s\""
+msgstr "Förväntade ett heltal \"%(arg)s\" efter \"%(key)s\""
 
 #, python-format
 msgid "Expected a color value \"%(arg)s\" after \"%(key)s\""
@@ -1008,7 +997,7 @@
 msgstr "StavningsKontroll"
 
 msgid "Discussion"
-msgstr ""
+msgstr "Diskussion"
 
 #, python-format
 msgid ""
@@ -1018,43 +1007,41 @@
 "den här wikin."
 
 msgid "Notification"
-msgstr ""
+msgstr "Meddelande"
 
 msgid "Notification settings saved!"
-msgstr ""
-
-#, fuzzy
+msgstr "Inställningar för meddelanden sparat!"
+
 msgid "'''Email'''"
-msgstr "Epost"
+msgstr "'''Epost'''"
 
 msgid "'''Jabber'''"
-msgstr ""
+msgstr "'''Jabber'''"
 
 msgid "'''Event type'''"
-msgstr ""
+msgstr "'''Händelsetyp'''"
 
 msgid "Select the events you want to be notified about."
-msgstr ""
+msgstr "Välj händelserna som du vill bli påmint om"
 
 msgid ""
 "Before you can be notified, you need to provide a way to contact you in the "
 "general preferences."
 msgstr ""
-
-#, fuzzy
+"Innan du kan få meddelanden, måste du ange ett sätt att kontakta dig i "
+"allmänna inställningarna."
+
 msgid "Subscribed events"
-msgstr "Skapa prenumeration åt användare"
-
-#, fuzzy
+msgstr "Prenumererade händelser"
+
 msgid "Subscribed wiki pages<<BR>>(one regex per line)"
-msgstr "Prenumerera på wikisidor (en regex per rad)"
+msgstr "Prenumererade wikisidor<<BR>>(en regex per rad)"
 
 msgid "Save"
 msgstr "Spara"
 
-#, fuzzy
 msgid "Change password"
-msgstr "Lösenord"
+msgstr "Ändra lösenord"
 
 msgid "Passwords don't match!"
 msgstr "Lösenorden är inte likadana!"
@@ -1064,65 +1051,71 @@
 
 #, python-format
 msgid "Password not acceptable: %s"
-msgstr ""
+msgstr "Lösenord ogiltigt: %s"
 
 msgid "Your password has been changed."
-msgstr ""
+msgstr "Ditt lösenord har ändrats."
 
 msgid "To change your password, enter a new password twice."
-msgstr ""
+msgstr "För att ändra ditt lösenord, skriv in ett nytt två gånger."
 
 msgid "Password repeat"
 msgstr "Upprepa lösenord"
 
 msgid "Switch user"
-msgstr ""
+msgstr "Byt användare"
 
 msgid "No user selected"
-msgstr ""
+msgstr "Ingen användare vald"
 
 msgid ""
 "You can now change the settings of the selected user account; log out to get "
 "back to your account."
 msgstr ""
+"Du kan nu ändra inställningarna av det valda användarkontot; logga ut för "
+"att komma tillbaka till ditt konto."
 
 msgid "You are the only user."
-msgstr ""
+msgstr "Du är den enda användare."
 
 msgid ""
 "As a superuser, you can temporarily assume the identity of another user."
 msgstr ""
+"Som administrator kan du tillfälligt ta på dig en annan avändares indentitet."
 
 msgid "Select User"
 msgstr "Välj användare"
 
 msgid "OpenID settings"
-msgstr ""
+msgstr "Inställnignar för OpenID"
 
 msgid "Cannot remove all OpenIDs."
-msgstr ""
+msgstr "Kan inte ta bort alla OpenIDs."
 
 msgid "The selected OpenIDs have been removed."
-msgstr ""
-
-msgid "OpenID is already present."
-msgstr ""
+msgstr "De valda OpenIDs har tagits bort."
 
 #, fuzzy
+msgid "No OpenID given."
+msgstr "Ingen OpenID."
+
+msgid "OpenID is already present."
+msgstr "OpenID finns redan."
+
 msgid "This OpenID is already used for another account."
-msgstr "Den här sidan är redan raderad eller existerade aldrig!"
+msgstr "Denna OpenID används redan för ett annat konto."
 
 msgid "OpenID added successfully."
-msgstr ""
+msgstr "OpenID tillagt."
 
 msgid "Current OpenIDs"
-msgstr ""
+msgstr "Nuvarande OpenIDs"
 
 msgid "Remove selected"
-msgstr ""
+msgstr "Ta bort valda"
 
 msgid "Add OpenID"
-msgstr ""
+msgstr "Lägg till OpenID"
 
 msgid "Preferences"
 msgstr "Inställningar"
@@ -1153,9 +1146,8 @@
 msgid "This email already belongs to somebody else."
 msgstr "Den här epostadressen tillhör redan någon annan."
 
-#, fuzzy
 msgid "This jabber id already belongs to somebody else."
-msgstr "Den här epostadressen tillhör redan någon annan."
+msgstr "Den här Jabber-IDn tillhör redan någon annan."
 
 #, python-format
 msgid "The theme '%(theme_name)s' could not be loaded!"
@@ -1201,12 +1193,12 @@
 msgstr "Önskat språk"
 
 msgid "General options"
-msgstr "Översiktiga alternativ"
+msgstr "Allmänna inställningar"
 
 msgid "Quick links"
 msgstr "Snabblänkar"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Dear Wiki user,\n"
 "\n"
@@ -1217,12 +1209,9 @@
 msgstr ""
 "Hej wikianvändare!\n"
 "\n"
-"Du prenumerar på en wikisida eller wikikategori på \"%(sitename)s\"\n"
-"för ändringsnotifiering.\n"
+"Du prenumerar på en wikisida eller wikikategori på \"%(sitename)s\".\n"
 "\n"
-"Följande sida har ändrats av %(editor)s:\n"
-"%(pagelink)s\n"
-"\n"
+"Sidan \"%(pagename)s\" har ändrats av %(editor)s:\n"
 
 msgid "New page:\n"
 msgstr "Ny sida:\n"
@@ -1230,7 +1219,7 @@
 msgid "No differences found!\n"
 msgstr "Inga skillnader funna!\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Dear wiki user,\n"
 "\n"
@@ -1242,14 +1231,12 @@
 msgstr ""
 "Hej wikianvändare!\n"
 "\n"
-"Du prenumerar på en wikisida eller wikikategori på \"%(sitename)s\"\n"
-"för ändringsnotifiering.\n"
+"Du prenumerar på en wikisida \"%(sitename)s\".\n"
 "\n"
-"Följande sida har ändrats av %(editor)s:\n"
-"%(pagelink)s\n"
+"Sidan \"%(pagename)s\" har tagits bort av %(editor)s:\n"
 "\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 "Dear wiki user,\n"
 "\n"
@@ -1261,16 +1248,13 @@
 msgstr ""
 "Hej wikianvändare!\n"
 "\n"
-"Du prenumerar på en wikisida eller wikikategori på \"%(sitename)s\"\n"
-"för ändringsnotifiering.\n"
+"Du prenumerar på en wikisida \"%(sitename)s\".\n"
 "\n"
-"Följande sida har ändrats av %(editor)s:\n"
-"%(pagelink)s\n"
-"\n"
+"Sidan \"%(pagename)s\" har döpts om från \"%(oldname)s\" av %(editor)s:\n"
 
 #, python-format
 msgid "New user account created on %(sitename)s"
-msgstr ""
+msgstr "Ett nytt användarkonto skapades på %(sitename)s"
 
 #, python-format
 msgid ""
@@ -1279,10 +1263,14 @@
 "    User name: %(username)s\n"
 "    Email address: %(useremail)s"
 msgstr ""
-
-#, fuzzy, python-format
+"Hej administrator, en ny användare har just skapats. Detaljer följer:\n"
+"\n"
+"    Användarnamn: %(username)s\n"
+"    Epost-adress: %(useremail)s"
+
+#, python-format
 msgid "New attachment added to page %(pagename)s on %(sitename)s"
-msgstr "bilaga:%(filename)s för %(pagename)s"
+msgstr "Ny bilaga lagts till sidan %(pagename)s på %(sitename)s"
 
 #, python-format
 msgid ""
@@ -1295,38 +1283,39 @@
 "Attachment name: %(attach_name)s\n"
 "Attachment size: %(attach_size)s\n"
 msgstr ""
+"Hej wikianvändare!\n"
+"\n"
+"Du prenumerar på en wikisida \"%(page_name)s\". En bilaga har lagts till "
+"denna sida av %(editor)s. Följande information finns tillgänglig:\n"
+"Bilagans namn: %(attach_name)s\n"
+"Bilagans storlek: %(attach_size)s\n"
 
 msgid "Page has been modified"
-msgstr ""
+msgstr "Sidan har ändrats"
 
 msgid "Page has been modified in a trivial fashion"
-msgstr ""
-
-#, fuzzy
+msgstr "Sidan har ändrats på ett trivialt sätt"
+
 msgid "Page has been renamed"
-msgstr "Sidträffar och ändringar"
-
-#, fuzzy
+msgstr "Sidan har döpts om"
+
 msgid "Page has been deleted"
-msgstr "Sidan \"%s\" raderades korrekt."
-
-#, fuzzy
+msgstr "Sidan har tagits bort"
+
 msgid "Page has been copied"
-msgstr "Sidträffar och ändringar"
-
-#, fuzzy
+msgstr "Sidan har kopierats"
+
 msgid "A new attachment has been added"
-msgstr "Ny bilaga"
+msgstr "En ny bilaga har lagts till"
 
 msgid "A page has been reverted to a previous state"
-msgstr ""
-
-#, fuzzy
+msgstr "En sida har återgått till ett tidigare tillstånd"
+
 msgid "A user has subscribed to a page"
-msgstr "Du prenumerar nu på den här sidan."
+msgstr "En användare prenumerar nu på en sida"
 
 msgid "A new account has been created"
-msgstr ""
+msgstr "Ett nytt konto har skapats"
 
 #, python-format
 msgid "[%(sitename)s] %(trivial)sUpdate of \"%(pagename)s\" by %(username)s"
@@ -1342,51 +1331,49 @@
 "Attachment link: %(attach)s\n"
 "Page link: %(page)s\n"
 msgstr ""
+"Länk till bilagan: %(attach)s\n"
+"Länk till sidan: %(page)s\n"
 
 #, python-format
 msgid "XML RPC error: %s"
-msgstr ""
+msgstr "XML RPC fel: %s"
 
 #, python-format
 msgid "Low-level communication error: %s"
-msgstr ""
-
-#, fuzzy
+msgstr "Kommunikationsfel på låg nivå: %s"
+
 msgid "Attachment link"
-msgstr "Bilagor"
-
-#, fuzzy
+msgstr "Länk till bilaga"
+
 msgid "Page link"
-msgstr "Sidor som liknar \"%s\""
-
-#, fuzzy
+msgstr "Länk till sida"
+
 msgid "Changed page"
-msgstr "Paketsidor"
-
-#, fuzzy
+msgstr "Ändrad sida"
+
 msgid "Page changed"
-msgstr "Spara ändringar"
+msgstr "Sidan har förändrats"
 
 msgid "Options --pages and --search are mutually exclusive!"
-msgstr ""
+msgstr "Optioner --pages och --search utesluter varandra!"
 
 msgid "You must specify an output file!"
-msgstr ""
+msgstr "Du måste ange en fil för output!"
 
 msgid "No pages specified using --pages or --search, assuming full package."
-msgstr ""
+msgstr "Inga sidor angivna med --pages eller --search, antar hela paketet."
 
 msgid "Output file already exists! Cowardly refusing to continue!"
-msgstr ""
+msgstr "Filen för output finns redan! Jag är feg och vägrar fortsätta!"
 
 msgid "Language"
-msgstr ""
+msgstr "Språk"
 
 msgid "Others"
-msgstr "Andra"
+msgstr "Övriga"
 
 msgid "Charts are not available!"
-msgstr "Diagram är inte tillgängliga!"
+msgstr "Diagram ej tillgängliga!"
 
 msgid "Page Size Distribution"
 msgstr "Sidstorleksfördelning"
@@ -1429,7 +1416,6 @@
 msgid "Distribution of User-Agent Types"
 msgstr "Fördelning av \"User-Agent\"-typer"
 
-#, fuzzy
 msgid ""
 " Emphasis:: <<Verbatim('')>>''italics''<<Verbatim('')>>; <<Verbatim(''')"
 ">>'''bold'''<<Verbatim(''')>>; <<Verbatim(''''')>>'''''bold "
@@ -1447,25 +1433,22 @@
 "\n"
 "(!) For more help, see HelpOnEditing or SyntaxReference.\n"
 msgstr ""
-" Emfas:: <<Verbatim('')>>''kursivering''<<Verbatim('')>>; <<Verbatim(''')"
+" Emfas:: <<Verbatim('')>>''kursiv''<<Verbatim('')>>; <<Verbatim(''')"
 ">>'''fetstil'''<<Verbatim(''')>>; <<Verbatim(''''')>>'''''kursiv "
 "fetstil'''''<<Verbatim(''''')>>; <<Verbatim('')>>''blandad ''<<Verbatim(''')"
-">>'''''fetstil'''<<Verbatim(''')>> och kursivering''<<Verbatim('')>>; "
-"<<Verbatim(----)>> horisontell linje.\n"
-" Rubriker:: <<Verbatim(=)>> Rubrik 1 <<Verbatim(=)>>; <<Verbatim(==)>> "
-"Rubrik 2 <<Verbatim(==)>>; <<Verbatim(===)>> Rubrik 3 <<Verbatim(===)>>;   "
-"<<Verbatim(====)>> Rubrik 4 <<Verbatim(====)>>; <<Verbatim(=====)>> Rubrik 5 "
-"<<Verbatim(=====)>>.\n"
-" Listor:: mellanslag och en av: * punkter; 1., a., A., i., I. numrerade "
-"paragrafer; 1.#n börja numrering på n; enbart mellanslag indenterar.\n"
-" Länkar:: <<Verbatim(IhopskrivnaOrd)>>; <<Verbatim([\"hakparenteser och "
-"citattecken\"])>>; url; [url]; [url etikett].\n"
-" Tabeller:: || celltext |||| celltext som sträcker sig över 2 kolumner "
-"||;    inga avslutande blanksteg tillåtna efter tabeller och titlar.\n"
+">>'''''fetstil'''<<Verbatim(''')>> och kursiv''<<Verbatim('')>>; <<Verbatim"
+"(----)>> horisontell linje.\n"
+" Rubriker:: = Rubrik 1 =; == Rubrik 2 ==; === Rubrik 3 ===; ==== Rubrik 4 "
+"====; ===== Rubrik 5 =====.\n"
+" Listor:: mellanslag plus en av: * punkter; 1., a., A., i., I. numrerade "
+"punkter; 1.#n börja numrering på n; enbart mellanslag indenterar.\n"
+" Länkar:: <<Verbatim(SkrivOrdIhopMedStoraBokstäver)>>; <<Verbatim([[url|"
+"länkens text]])>>.\n"
+" Tabeller:: || celltext |||| celltext som sträcker sig över 2 kolumner ||;  "
+"inga efterföljande mellanslag är tillåtna efter tabeller och rubriker.\n"
 "\n"
-"(!) För mer hjälp, se HjälpOmRedigering och SyntaxReferens.\n"
-
-#, fuzzy
+"(!) För mer hjälp, se HjälpMedÄndringar.\n"
+
 msgid ""
 "{{{\n"
 "Emphasis: *italic* **bold** ``monospace``\n"
@@ -1485,25 +1468,24 @@
 "[[http://docutils.sourceforge.net/docs/user/rst/quickref.html|"
 "reStructuredText Quick Reference]].\n"
 msgstr ""
-"Emfas: <i>*kursiv*</i> <b>**fetstil**</b> ``monospace``<br/>\n"
-"<br/><pre>\n"
-"Rubriker: Rubrik 1  Rubrik 2  Rubrik 3\n"
-"          ========  --------  ~~~~~~~~\n"
-"\n"
-"Horisontell linje: ---- \n"
-"Länkar: AvslutandeUnderstrykning_ `flera ord med backticks`_ extern_ \n"
+"{{{\n"
+"Emfas: *kursiv* **fetstil** ``monospace``\n"
 "\n"
-".. _extern: http://extern-sajt.net/foo/\n"
+"Rubriker: Rubrik 1   Rubrik 2   Rubrik 3\n"
+"          =========  ---------  ~~~~~~~~~\n"
 "\n"
-"Listor: * punktlista; 1., a. numrerad lista.\n"
-"</pre>\n"
-"<br/>\n"
+"Horisontell linje: ----\n"
+"\n"
+"Länkar: AvslutandeUnderstrykning_ `flera ord med backticks`_ extern_\n"
+"\n"
+".. _extern: http://extern-sida.exempel.com/foo/\n"
+"\n"
+"Listor: * punkter; 1., a. numrerade punkter.\n"
+"}}}\n"
 "(!) För mer hjälp, se\n"
-"<a href=\"http://docutils.sourceforge.net/docs/user/rst/quickref.html\">\n"
-"reStructuredText Quick Reference\n"
-"</a>.\n"
-
-#, fuzzy
+"[[http://docutils.sourceforge.net/docs/user/rst/quickref.html|"
+"reStructuredText Quick Reference]].\n"
+
 msgid ""
 " Emphasis:: <<Verbatim(//)>>''italics''<<Verbatim(//)>>; <<Verbatim(**)"
 ">>'''bold'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''bold "
@@ -1520,26 +1502,23 @@
 "\n"
 "(!) For more help, see HelpOnEditing or HelpOnCreoleSyntax.\n"
 msgstr ""
-" Emfas:: <<Verbatim('')>>''kursivering''<<Verbatim('')>>; <<Verbatim(''')"
-">>'''fetstil'''<<Verbatim(''')>>; <<Verbatim(''''')>>'''''kursiv "
-"fetstil'''''<<Verbatim(''''')>>; <<Verbatim('')>>''blandad ''<<Verbatim(''')"
-">>'''''fetstil'''<<Verbatim(''')>> och kursivering''<<Verbatim('')>>; "
-"<<Verbatim(----)>> horisontell linje.\n"
-" Rubriker:: <<Verbatim(=)>> Rubrik 1 <<Verbatim(=)>>; <<Verbatim(==)>> "
-"Rubrik 2 <<Verbatim(==)>>; <<Verbatim(===)>> Rubrik 3 <<Verbatim(===)>>;   "
-"<<Verbatim(====)>> Rubrik 4 <<Verbatim(====)>>; <<Verbatim(=====)>> Rubrik 5 "
-"<<Verbatim(=====)>>.\n"
-" Listor:: mellanslag och en av: * punkter; 1., a., A., i., I. numrerade "
-"paragrafer; 1.#n börja numrering på n; enbart mellanslag indenterar.\n"
-" Länkar:: <<Verbatim(IhopskrivnaOrd)>>; <<Verbatim([\"hakparenteser och "
-"citattecken\"])>>; url; [url]; [url etikett].\n"
-" Tabeller:: || celltext |||| celltext som sträcker sig över 2 kolumner "
-"||;    inga avslutande blanksteg tillåtna efter tabeller och titlar.\n"
+" Emfas:: <<Verbatim(//)>>''kursiv''<<Verbatim(//)>>; <<Verbatim(**)"
+">>'''fetstil'''<<Verbatim(**)>>; <<Verbatim(**//)>>'''''kursiv "
+"fetstil'''''<<Verbatim(//**)>>; <<Verbatim(//)>>''blandat ''<<Verbatim(**)"
+">>'''''fetstil'''<<Verbatim(**)>> och kursiv''<<Verbatim(//)>>;\n"
+" Horisontell linje:: <<Verbatim(----)>>\n"
+" Tvinga radbrytning:: <<Verbatim(\\\\)>>\n"
+" Rubriker:: = Rubrik 1 =; == Rubrik 2 ==; === Rubrik 3 ===; ==== Rubrik 4 "
+"====; ===== Rubrik 5 =====.\n"
+" Listor:: * punkter; ** underpunkter; # numrerade punkter; ## undernumrerade "
+"punkter.\n"
+" Länkar:: <<Verbatim([[url]])>>; <<Verbatim([[url|länkens text]])>>.\n"
+" Tabeller:: |= huvudtext | celltext | mer celltext |;\n"
 "\n"
-"(!) För mer hjälp, se HjälpOmRedigering och SyntaxReferens.\n"
+"(!) För mer hjälp, se HjälpMedÄndringar.\n"
 
 msgid "UnSubscribe"
-msgstr "Avbryt prenumeration"
+msgstr "Avsluta prenumeration"
 
 msgid "Publish my email (not my wiki homepage) in author info"
 msgstr ""
@@ -1552,7 +1531,7 @@
 msgstr "Efter inloggning, hoppa till den senast besökta sidan"
 
 msgid "Show comment sections"
-msgstr ""
+msgstr "Visa kommentarstycken"
 
 msgid "Show question mark for non-existing pagelinks"
 msgstr "Visa frågetecken för brutna sidlänkar"
@@ -1567,10 +1546,10 @@
 msgstr "Visa topp/fot-länkar i huvudet"
 
 msgid "Show fancy diffs"
-msgstr "Visa detaljerade diffar"
+msgstr "Visa skillnader på avancerat sätt"
 
 msgid "Add spaces to displayed wiki names"
-msgstr "Addera mellanslag till visade wiki-namn"
+msgstr "Addera mellanslag när wiki-namn visas"
 
 msgid "Remember login information"
 msgstr "Kom ihåg inloggningsuppgifter"
@@ -1578,15 +1557,14 @@
 msgid "Disable this account forever"
 msgstr "Stäng av det här kontot för alltid"
 
-#, fuzzy
 msgid "(Use FirstnameLastname)"
-msgstr "(Använd Förnamn''''''Efternamn)"
+msgstr "(Använd FörnamnEfternamn)"
 
 msgid "Alias-Name"
 msgstr "Alias-namn"
 
 msgid "Jabber ID"
-msgstr ""
+msgstr "Jabber-ID"
 
 msgid "User CSS URL"
 msgstr "Användar-CSS-URL"
@@ -1597,12 +1575,11 @@
 msgid "Editor size"
 msgstr "Editorstorlek"
 
-#, fuzzy
 msgid "File attachment browser"
-msgstr "Ny bilaga"
+msgstr "Bläddra i bilagor"
 
 msgid "User account browser"
-msgstr ""
+msgstr "Bläddra i användarkonton"
 
 #, python-format
 msgid "Invalid include arguments \"%s\"!"
@@ -1631,9 +1608,9 @@
 msgid "Revert to revision %(rev)d."
 msgstr "Återgå till version %(rev)d."
 
-#, fuzzy, python-format
+#, python-format
 msgid "Renamed from '%(oldpagename)s'."
-msgstr "Bilagor till \"%(pagename)s\""
+msgstr "Bytt namn från '%(oldpagename)s'."
 
 #, python-format
 msgid "%(mins)dm ago"
@@ -1646,7 +1623,6 @@
 msgid "(currently set to %s)"
 msgstr "(för närvarande satt till %s)"
 
-#, fuzzy
 msgid "Delete bookmark"
 msgstr "Ta bort bokmärke"
 
@@ -1686,7 +1662,7 @@
 msgstr "Release %s [revision %s]"
 
 msgid "4Suite Version"
-msgstr "4Suite-Version"
+msgstr "4Suite-version"
 
 msgid "Number of pages"
 msgstr "Antal sidor"
@@ -1736,101 +1712,92 @@
 msgstr "Aktiverad"
 
 msgid "index available"
-msgstr ""
+msgstr "index tillgänglig"
 
 msgid "index unavailable"
-msgstr ""
+msgstr "index otillgänglig"
 
 msgid "N/A"
 msgstr "Ej tillgänglig"
 
 msgid "Xapian and/or Python Xapian bindings not installed"
-msgstr ""
+msgstr "Xapian och/eller Pythons Xapian gränssnitt inte installerat"
 
 msgid "Xapian search"
 msgstr "Xapian-sökning"
 
-#, fuzzy
 msgid "Xapian Version"
-msgstr "Xapian-sökning"
+msgstr "Xapian-version"
 
 msgid "PyStemmer not installed"
-msgstr ""
+msgstr "PyStemmer inte installerat"
 
 msgid "Stemming for Xapian"
-msgstr ""
-
-#, fuzzy
+msgstr "Stemming för Xapian"
+
 msgid "PyStemmer Version"
-msgstr "Python-version"
-
-#, fuzzy
+msgstr "PyStemmer-version"
+
 msgid "PyStemmer stems"
-msgstr "Python-version"
+msgstr "PyStemmer stems"
 
 msgid "Active threads"
 msgstr "Aktiva trådar"
 
-#, fuzzy
 msgid "Search for items"
-msgstr "Sök titlar"
+msgstr "Sök efter poster"
 
 msgid "containing all the following terms"
-msgstr ""
+msgstr "som innehåller alla följande termer"
 
 msgid "containing one or more of the following terms"
-msgstr ""
+msgstr "som innehåller en eller flera av följande termer"
 
 msgid "not containing the following terms"
-msgstr ""
+msgstr "som inte innehåller följande termer"
 
 msgid "last modified since (e.g. last 2 weeks)"
-msgstr ""
+msgstr "senast ändrat sedan (t.ex. 2 veckor)"
 
 msgid "any category"
-msgstr ""
-
-#, fuzzy
+msgstr "vilken kategori som helst"
+
 msgid "any language"
-msgstr "Önskat språk"
+msgstr "vilket språk som helst"
 
 msgid "any mimetype"
-msgstr ""
+msgstr "vilket mimetype som helst"
 
 msgid "Categories"
-msgstr ""
-
-#, fuzzy
+msgstr "Kategorier"
+
 msgid "File Type"
-msgstr "Filnamn"
-
-#, fuzzy
+msgstr "Filtyp"
+
 msgid "Search only in titles"
-msgstr "Sök titlar"
-
-#, fuzzy
+msgstr "Sök bara i rubriker"
+
 msgid "Case-sensitive search"
 msgstr "Sökning känslig för gemener/VERSALER"
 
 msgid "Exclude underlay"
-msgstr ""
-
-#, fuzzy
+msgstr "Uteslut underlag"
+
 msgid "No system items"
-msgstr "Antal systemsidor"
+msgstr "Inga systemsidor"
 
 msgid "Search in all page revisions"
-msgstr ""
+msgstr "Sök i alla versioner av sidor"
 
 msgid "Go get it!"
-msgstr ""
+msgstr "Gå och hämta!"
 
 #, python-format
 msgid "No quotes on %(pagename)s."
 msgstr "Inga citattecken på %(pagename)s."
 
 msgid "Search Titles"
-msgstr "Sök titlar"
+msgstr "Sök rubriker"
 
 msgid "Display context of search results"
 msgstr "Visa sökningsträffarnas sammanhang"
@@ -1850,21 +1817,27 @@
 "%(extension_name)s %(extension_type)s: Required argument %(argument_name)s "
 "missing."
 msgstr ""
+"%(extension_name)s %(extension_type)s: Nödvändigt argument %(argument_name)s "
+"saknas."
 
 #, python-format
 msgid ""
 "%(extension_name)s %(extension_type)s: Invalid %(argument_name)s=%"
 "(argument_value)s!"
 msgstr ""
+"%(extension_name)s %(extension_type)s: Ogiltig %(argument_name)s=%"
+"(argument_value)s!"
 
 #, python-format
 msgid ""
 "Current configuration does not allow embedding of the file %(file)s because "
 "of its mimetype %(mimetype)s."
 msgstr ""
+"Nuvarande inställningar tillåter inte att bädda in %(file)s på grund av dess "
+"mimetype %(mimetype)s."
 
 msgid "Embedded"
-msgstr ""
+msgstr "Inbäddad"
 
 #, python-format
 msgid "Unsupported navigation scheme '%(scheme)s'!"
@@ -1899,115 +1872,126 @@
 msgid "Bad chart type \"%s\"!"
 msgstr "Ogiltig diagramtyp \"%s\"!"
 
-#, fuzzy
 msgid "Revert"
-msgstr "Återgå allt!"
+msgstr "Återställ"
 
 msgid "You are not allowed to revert this page!"
-msgstr ""
-"Du har inte tillåtelse att göra så att den här sidan återgår till en äldre "
-"version!"
+msgstr "Du får inte återställa denna sida!"
 
 msgid ""
 "You were viewing the current revision of this page when you called the "
 "revert action. If you want to revert to an older revision, first view that "
 "older revision and then call revert to this (older) revision again."
 msgstr ""
+"Den aktuella versionen av sidan visades när du valde att återställa. Om du "
+"vill återgå till en tidigare version, titta först på just denna och sen välj "
+"att återställa till denna (äldre) version igen."
 
 msgid "This page is already deleted or was never created!"
 msgstr "Den här sidan är redan raderad eller existerade aldrig!"
 
-#, fuzzy
 msgid "Optional reason for reverting this page"
-msgstr "Skäl till namnbyte (ej obligatoriskt)"
-
-#, fuzzy
+msgstr "Skäl till sidas återställande (ej obligatoriskt)"
+
 msgid "Really revert this page?"
-msgstr "Radera den här sidan, är du säker?"
-
-#, fuzzy, python-format
+msgstr "Återställ den här sidan, är du säker?"
+
+#, python-format
 msgid "Rolled back changes to the page %s."
-msgstr "Teckna en prenumeration på sidan %s åt användarna"
+msgstr "Återställde ändringar till sidan %s."
 
 msgid "Exception while calling rollback function:"
-msgstr ""
+msgstr "Fel i återställnings-funktionen:"
 
 msgid ""
 "Please enter your password of your account at the remote wiki below. "
 "<<BR>> /!\\ You should trust both wikis because the password could be read "
 "by the particular administrators."
 msgstr ""
-
-#, fuzzy
+"Var god skriv in lösenordet av ditt konto hos den andra wikin. <<BR>> /!\\ "
+"Du borde lita på båda wikis eftersom lösenordet kan i princip läsasav "
+"administratörerna."
+
 msgid "Operation was canceled."
-msgstr "Redigeringen avbröts."
+msgstr "Funktionen avbröts."
 
 msgid "The only supported directions are BOTH and DOWN."
-msgstr ""
+msgstr "De enda riktningar som stöds är BÅDA och NER."
 
 msgid ""
 "Please set an interwikiname in your wikiconfig (see HelpOnConfiguration) to "
 "be able to use this action."
 msgstr ""
+"Var god ge ett interwikinamn i din wikiconfig (se HjälpMedAnpassning) för "
+"att kunna använda denna funktion."
 
 msgid ""
 "Incorrect parameters. Please supply at least the ''remoteWiki'' parameter. "
 "Refer to HelpOnSynchronisation for help."
 msgstr ""
+"Fel parameter. Var god ge åtminstånde ''remoteWiki'' parametern. Mer hjälp "
+"finns i HelpOnSynchronisation."
 
 msgid "The ''remoteWiki'' is unknown."
-msgstr ""
+msgstr "Känner inte igen ''remoteWiki''."
 
 msgid "A severe error occurred:"
-msgstr ""
+msgstr "Ett allvarligt fel uppstod:"
 
 msgid "Synchronisation finished. Look below for the status messages."
-msgstr ""
+msgstr "Synkronisering avslutat. Se nere för statusmeddelandena."
 
 msgid "Synchronisation started -"
-msgstr ""
+msgstr "Synkronisering startat -"
 
 #, python-format
 msgid ""
 "Got a list of %s local and %s remote pages. This results in %s pages to "
 "process."
 msgstr ""
+"Fick en lista med %s lokala och %s avlägsna sidor. Detta ger %s sidor att "
+"bearbeta"
 
 #, python-format
 msgid "After filtering: %s pages"
-msgstr ""
+msgstr "Efter filtrering: %s sidor"
 
 #, python-format
 msgid "Skipped page %s because of no write access to local page."
 msgstr ""
+"Hoppade över sidan %s p.g.a. brist på skrivrättigheter till lokala sidan."
 
 #, python-format
 msgid "Deleted page %s locally."
-msgstr ""
+msgstr "Tog bort sidan %s lokalt."
 
 #, python-format
 msgid "Error while deleting page %s locally:"
-msgstr ""
+msgstr "Fel under borttagandet av lokala sidan %s:"
 
 #, python-format
 msgid "Deleted page %s remotely."
-msgstr ""
+msgstr "Tog bort avlägsna sidan %s."
 
 #, python-format
 msgid "Error while deleting page %s remotely:"
-msgstr ""
+msgstr "Fel under borttagandet av avlägsna sidan %s:"
 
 #, python-format
 msgid ""
 "The item %s cannot be merged automatically but was changed in both wikis. "
 "Please delete it in one of both wikis and try again."
 msgstr ""
+"Posten %s kan inte bli förenat automatiskt för den har ändrats i båda wikis. "
+"Var god och ta bort den i en av båda wikis och försök igen."
 
 #, python-format
 msgid ""
 "The item %s has different mime types in both wikis and cannot be merged. "
 "Please delete it in one of both wikis or unify the mime type, and try again."
 msgstr ""
+"Posten %s har olika mimetyper i båda wikis och kan inte förenas. Var god och "
+"ta bort den i en av båda wikis och försök igen."
 
 #, python-format
 msgid ""
@@ -2045,9 +2029,9 @@
 "page in the remote wiki."
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "Page %s successfully merged."
-msgstr "Sidan \"%s\" raderades korrekt."
+msgstr "Sidan %s förenades korrekt."
 
 #, python-format
 msgid "Page %s contains conflicts that were introduced on the remote side."
@@ -2087,18 +2071,17 @@
 msgid "Identity URL"
 msgstr ""
 
-#, fuzzy
 msgid "Remember decision"
-msgstr "Python-version"
+msgstr "Kom ihåg detta val"
 
 msgid "Remember this trust decision and don't ask again"
-msgstr ""
+msgstr "Kom ihåg detta förtroelseval och fråga inte igen"
 
 msgid "Approve"
-msgstr ""
+msgstr "Godkänn"
 
 msgid "Don't approve"
-msgstr ""
+msgstr "Godkänn ej"
 
 msgid "OpenID not served"
 msgstr ""
@@ -2139,20 +2122,21 @@
 msgid "Please choose:"
 msgstr ""
 
-#, fuzzy
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Du måste logga in för att kunna prenumerera på sidor."
+
 msgid "You must login to remove a quicklink."
-msgstr "Du måste logga in för att kunna lägga till en snabblänk."
+msgstr "Du måste logga in för att ta bort en snabblänk."
 
 msgid "Your quicklink to this page has been removed."
 msgstr "Din snabblänk till den här sidan har tagits bort."
 
-#, fuzzy
 msgid "Your quicklink to this page could not be removed."
-msgstr "Din snabblänk till den här sidan har tagits bort."
-
-#, fuzzy
+msgstr "Din snabblänk till den här sidan kunde inte tas bort."
+
 msgid "You need to have a quicklink to this page to remove it."
-msgstr "Din snabblänk till den här sidan har tagits bort."
+msgstr "Du måste ha en snabblänk till den här sidan för att ta bort den."
 
 #, python-format
 msgid ""
@@ -2305,40 +2289,34 @@
 msgid "Optional reason for the renaming"
 msgstr "Skäl till namnbyte (ej obligatoriskt)"
 
-#, fuzzy
 msgid "Really rename this page?"
-msgstr "Radera den här sidan, är du säker?"
-
-#, fuzzy
+msgstr "Döpa om den här sidan, är du säker?"
+
 msgid "Your subscription to this page has been removed."
 msgstr "Din prenumeration på den här sidan har avslutats."
 
 msgid "Can't remove regular expression subscription!"
 msgstr "Kan inte ta bort reguljär uttrycks-prenumeration!"
 
-#, fuzzy
 msgid "Edit the subscription regular expressions in your settings."
 msgstr ""
 "Redigera de reguljära uttrycken för dina prenumerationer i dina "
-"AnvändarInställningar."
-
-#, fuzzy
+"inställningar."
+
 msgid "You need to be subscribed to unsubscribe."
-msgstr "Du prenumerar nu på den här sidan."
+msgstr "Du måste prenumera för att kunna sluta prenumera."
 
 msgid "TextCha: Wrong answer! Go back and try again..."
 msgstr "TextCha: Fel svar! Gå tillbaka och försök igen..."
 
 msgid "Copy all /subpages too?"
-msgstr ""
-
-#, fuzzy
+msgstr "Kopiera även alla /undersidor?"
+
 msgid "Optional reason for the copying"
-msgstr "Skäl till namnbyte (ej obligatoriskt)"
-
-#, fuzzy
+msgstr "Skäl för kopiering (ej obligatoriskt)"
+
 msgid "Really copy this page?"
-msgstr "Radera den här sidan, är du säker?"
+msgstr "Kopiera den här sidan, är du säker?"
 
 msgid "No older revisions available!"
 msgstr "Inga äldre versioner tillgängliga!"
@@ -2355,13 +2333,11 @@
 msgid "(spanning %d versions)"
 msgstr "(sträcker sig över %d versioner)"
 
-#, fuzzy
 msgid "Previous change"
-msgstr "Förhandsgranska"
-
-#, fuzzy
+msgstr "Föregående ändring"
+
 msgid "Next change"
-msgstr "Spara ändringar"
+msgstr "Nästa ändring"
 
 #, python-format
 msgid "The page was saved %(count)d times, though!"
@@ -2373,9 +2349,8 @@
 msgid "Ignore changes in the amount of whitespace"
 msgstr "Ignorera ändringar i mängden blanktecken"
 
-#, fuzzy
 msgid "Load"
-msgstr "Ladda upp"
+msgstr "Ladda"
 
 msgid "You are not allowed to delete attachments on this page."
 msgstr "Du har inte tillåtelse att ta bort bilagor från den här sidan."
@@ -2387,9 +2362,8 @@
 msgstr ""
 "Bilagan '%(target)s' (fjärrnamn '%(filename)s') med %(bytes)d byte sparade."
 
-#, fuzzy
 msgid "New Page or New Attachment"
-msgstr "Ny bilaga"
+msgstr "Ny sida eller ny bilaga"
 
 msgid ""
 "You can upload a file to a new page or choose to upload a file as attachment "
@@ -2410,49 +2384,42 @@
 "ladda upp. Om \"Byt namn till\"-fältet lämnas tomt kommer originalfilnamnet\n"
 "att användas."
 
-#, fuzzy
 msgid "attachment"
-msgstr "Bilagor"
+msgstr "bilaga"
 
 msgid "overwrite"
-msgstr ""
+msgstr "skriv över"
 
 msgid "Upload"
 msgstr "Ladda upp"
 
-#, fuzzy
 msgid "New Name"
 msgstr "Nytt namn"
 
 msgid "You are not allowed to subscribe to a page you can't read."
-msgstr "Du har inte tillåtelse att prenumerera på en sida du inte kan läsa."
-
-#, fuzzy
+msgstr "Du får inte prenumerera på en sida du inte kan läsa."
+
 msgid "This wiki is not enabled for mail/Jabber processing."
-msgstr "Den här wikin har inte eposthantering påslagen."
-
-#, fuzzy
+msgstr "Den här wikin har inte hantering av mail/Jabber påslagen."
+
 msgid "You must log in to use subscriptions."
 msgstr "Du måste logga in för att kunna prenumerera på sidor."
 
-#, fuzzy
 msgid ""
 "Add your email address or Jabber ID in your user settings to use "
 "subscriptions."
 msgstr ""
-"Du måste ange din epostadress i AnvändarInställningar för att kunna "
+"Ange din epostadress eller Jabber-ID i AnvändarInställningar för att kunna "
 "prenumerera på sidor."
 
-#, fuzzy
 msgid "You are already subscribed to this page."
-msgstr "Du prenumerar nu på den här sidan."
+msgstr "Du prenumerar redan på den här sidan."
 
 msgid "You have been subscribed to this page."
 msgstr "Du prenumerar nu på den här sidan."
 
-#, fuzzy
 msgid "You could not get subscribed to this page."
-msgstr "Du prenumerar nu på den här sidan."
+msgstr "Du kunde inte prenumerar på den här sidan."
 
 msgid "General Information"
 msgstr "Översiktlig information"
@@ -2485,9 +2452,8 @@
 msgid "view"
 msgstr "visa"
 
-#, fuzzy
 msgid "to previous"
-msgstr "Förhandsgranska"
+msgstr "till föregående"
 
 msgid "get"
 msgstr "hämta"
@@ -2528,15 +2494,11 @@
 msgid "Really delete this page?"
 msgstr "Radera den här sidan, är du säker?"
 
-#, fuzzy
 msgid "You are not allowed to create the supplementation page."
-msgstr ""
-"Du har inte tillåtelse att göra så att den här sidan återgår till en äldre "
-"version!"
-
-#, fuzzy
+msgstr "Du får inte skapa tilläggssidan."
+
 msgid "Only superuser is allowed to use this action."
-msgstr "Du har inte tillåtelse att använda den här åtgärden."
+msgstr "Bara administratorn får använda den här åtgärden."
 
 #, python-format
 msgid "Subscribe users to the page %s"
@@ -2568,9 +2530,9 @@
 msgid "Title Search: \"%s\""
 msgstr "Titelsökning: \"%s\""
 
-#, fuzzy, python-format
+#, python-format
 msgid "Advanced Search: \"%s\""
-msgstr "Titelsökning: \"%s\""
+msgstr "Avancerad sökning: \"%s\""
 
 #, python-format
 msgid "Full Text Search: \"%s\""
@@ -2599,9 +2561,8 @@
 "results of your search query in this wiki. <<BR>>"
 msgstr ""
 
-#, fuzzy
 msgid "Click here to perform a full-text search with your search terms!"
-msgstr "Klicka här för att göra en fulltextsökning på den här titeln"
+msgstr "Klicka här för att göra en fulltextsökning med dina sökord!"
 
 msgid "User account created! You can use this account to login now..."
 msgstr ""
@@ -2614,7 +2575,7 @@
 msgstr "Skapa profil"
 
 msgid "Create Account"
-msgstr ""
+msgstr "Skapa konto"
 
 msgid "You must login to add a quicklink."
 msgstr "Du måste logga in för att kunna lägga till en snabblänk."
@@ -2622,13 +2583,14 @@
 msgid "A quicklink to this page has been added for you."
 msgstr "En snabblänk till den här sidan har lagts till åt dig."
 
-#, fuzzy
 msgid "A quicklink to this page could not be added for you."
-msgstr "En snabblänk till den här sidan har lagts till åt dig."
-
-#, fuzzy
+msgstr "En snabblänk till den här sidan kunde inte läggas till åt dig."
+
 msgid "You already have a quicklink to this page."
-msgstr "Du har redan sparat den här sidan!"
+msgstr "Du har redan en snabblänk till den här sidan."
+
+msgid "You are not allowed to use this action."
+msgstr "Du har inte tillåtelse att använda den här åtgärden."
 
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
@@ -2648,9 +2610,8 @@
 msgid "No spelling errors found!"
 msgstr "Inga felstavningar funna!"
 
-#, fuzzy
 msgid "You can't save spelling words."
-msgstr "Du kan inte stavningskontrollera en sida som du inte kan läsa."
+msgstr "Du kan inte spara stavningsord."
 
 msgid "You can't check spelling on a page you can't read."
 msgstr "Du kan inte stavningskontrollera en sida som du inte kan läsa."
@@ -2678,9 +2639,8 @@
 msgid "Mail me my account data"
 msgstr "Eposta mig information om mitt konto"
 
-#, fuzzy
 msgid "Lost password"
-msgstr "Lösenord"
+msgstr "Glömt lösenord"
 
 msgid ""
 "\n"
@@ -2708,9 +2668,6 @@
 msgid "Revert all!"
 msgstr "Återgå allt!"
 
-msgid "You are not allowed to use this action."
-msgstr "Du har inte tillåtelse att använda den här åtgärden."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d bilagor]"
@@ -2723,9 +2680,9 @@
 "Det finns <a href=\"%(link)s\">%(count)s bifogade filer(s)</a> lagrade på "
 "den här sidan."
 
-#, fuzzy, python-format
+#, python-format
 msgid "Attachment '%(target)s' already exists."
-msgstr "Bilagan '%(filename)s' installerad."
+msgstr "Bilagan '%(target)s' finns redan."
 
 msgid "Filename of attachment not specified!"
 msgstr "Filnamnet för bilagan ej angivet!"
@@ -2769,7 +2726,7 @@
 msgstr "Byt namn till"
 
 msgid "Overwrite existing attachment of same name"
-msgstr ""
+msgstr "Skriv över existerande bilaga med samma namn"
 
 msgid "Attached Files"
 msgstr "Bifogade filer"
@@ -2780,9 +2737,9 @@
 msgid "File attachments are not allowed in this wiki!"
 msgstr "Bilagor är inte tillåtna i den här wikin!"
 
-#, fuzzy, python-format
+#, python-format
 msgid "Unsupported AttachFile sub-action: %s"
-msgstr "Okänd uppladningsförfrågan: %s"
+msgstr "Ogiltig sub-åtgärd för AttachFile: %s"
 
 #, python-format
 msgid "Attachments for \"%(pagename)s\""
@@ -2797,58 +2754,55 @@
 msgid "You are not allowed to save a drawing on this page."
 msgstr "Du har inte tillåtelse att spara en teckning på den här sidan."
 
-#, fuzzy, python-format
+#, python-format
 msgid "Attachment '%(new_pagename)s/%(new_filename)s' already exists."
-msgstr "Bilagan '%(filename)s' installerad."
-
-#, fuzzy, python-format
+msgstr "Bilagan '%(new_pagename)s/%(new_filename)s' finns redan."
+
+#, python-format
 msgid ""
 "Attachment '%(pagename)s/%(filename)s' moved to '%(new_pagename)s/%"
 "(new_filename)s'."
-msgstr "Bilagan \"%(filename)s\" existerar inte!"
+msgstr ""
+"Bilagan '%(pagename)s/%(filename)s' flyttats till '%(new_pagename)s/%"
+"(new_filename)s'."
 
 msgid "Nothing changed"
-msgstr ""
+msgstr "Ingen förändring"
 
 #, python-format
 msgid "Page '%(new_pagename)s' does not exist or you don't have enough rights."
 msgstr ""
+"Sidan '%(new_pagename)s' finns inte eller så har du inte tillräckliga "
+"rättigheter."
 
 msgid "Move aborted!"
-msgstr ""
-
-#, fuzzy
+msgstr "Flytt avbruten!"
+
 msgid "Please use the interactive user interface to move attachments!"
 msgstr ""
-"Var god använd det interaktiva användargränsnittet för att utföra åtgärd %"
-"(actionname)s!"
-
-#, fuzzy
+"Var god använd det interaktiva användargränsnittet för att flytta bilagor"
+
 msgid "You are not allowed to move attachments from this page."
-msgstr "Du har inte tillåtelse att hämta bilagor från den här sidan."
-
-#, fuzzy
+msgstr "Du får inte flytta bilagor från den här sidan."
+
 msgid "Move aborted because new page name is empty."
-msgstr "Du kan inte byta ett tomt sidnamn."
-
-#, fuzzy, python-format
+msgstr "Flytt avbruten för att nya namnet är tomt."
+
+#, python-format
 msgid "Please use a valid filename for attachment '%(filename)s'."
-msgstr "Uppladdning av bilaga '%(filename)s'."
-
-#, fuzzy
+msgstr "Var god använd ett giltigt filnamn för bilaga '%(filename)s'."
+
 msgid "Move aborted because new attachment name is empty."
-msgstr "Du kan inte byta ett tomt sidnamn."
+msgstr "Flytt avbruten för att bilagans nya namn är tomt."
 
 msgid "Move"
-msgstr ""
-
-#, fuzzy
+msgstr "Flytta"
+
 msgid "New page name"
-msgstr "Nytt namn"
-
-#, fuzzy
+msgstr "Nytt sidonamn"
+
 msgid "New attachment name"
-msgstr "Ny bilaga"
+msgstr "Ny bilaga för bilaga"
 
 msgid "You are not allowed to get attachments from this page."
 msgstr "Du har inte tillåtelse att hämta bilagor från den här sidan."
@@ -2891,16 +2845,16 @@
 "Bilagan \"%(filename)s\" kunde inte packas upp eftersom filerna är för "
 "stora, endast är .zip-filer, redan existerar eller ligger i kataloger."
 
-#, fuzzy, python-format
+#, python-format
 msgid "The file %(filename)s is not a .zip file."
-msgstr "Filen %(target)s är inte en .zip-fil."
+msgstr "Filen %(filename)s är inte en .zip-fil."
 
 #, python-format
 msgid "Attachment '%(filename)s'"
 msgstr "Bilaga \"%(filename)s\""
 
 msgid "Download"
-msgstr ""
+msgstr "Ladda ner"
 
 msgid "Package script:"
 msgstr "Paketskript:"
@@ -2939,31 +2893,30 @@
 
 #, python-format
 msgid "Inlined image: %(url)s"
-msgstr ""
-
-#, fuzzy, python-format
+msgstr "Inbäddad bild: %(url)s"
+
+#, python-format
 msgid "Create new drawing \"%(filename)s (opens in new window)\""
-msgstr "Skapa ny teckning \"%(filename)s\""
-
-#, fuzzy, python-format
+msgstr "Skapa ny teckning \"%(filename)s (öppnas i nytt fönster)\""
+
+#, python-format
 msgid "Edit drawing %(filename)s (opens in new window)"
-msgstr "Skapa ny teckning \"%(filename)s\""
-
-#, fuzzy, python-format
+msgstr "Redigera teckning %(filename)s (opens in new window)"
+
+#, python-format
 msgid "Clickable drawing: %(filename)s"
-msgstr "Skapa ny teckning \"%(filename)s\""
+msgstr "Klickbar teckning %(filename)s"
 
 msgid "Toggle line numbers"
 msgstr "Slå av/på radnumrering"
 
-#, fuzzy, python-format
+#, python-format
 msgid "Unknown action %(action_name)s."
-msgstr "Utför åtgärd %(actionname)s?"
-
-#, fuzzy, python-format
+msgstr "Okänd åtgärd %(action_name)s."
+
+#, python-format
 msgid "You are not allowed to do %(action_name)s on this page."
-msgstr ""
-"Du har inte tillåtelse att använda åtgärden %(actionname)s på den här sidan!"
+msgstr "Du får inte göra %(action_name)s på den här sidan."
 
 msgid "Login and try again."
 msgstr "Logga in och försök igen."
--- a/MoinMoin/i18n/tools/mail_i18n-maintainers.txt	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/tools/mail_i18n-maintainers.txt	Tue May 06 21:38:05 2008 +0200
@@ -12,10 +12,17 @@
 What we need
 ============
 
+Please note that we currently have 2 "MoinMaster" wikis:
+    * http://master16.moinmo.in/ (currently same as http://master.moinmo.in/)
+      This wiki is for the 1.6.x releases.
+    * http://master17.moinmo.in/
+      This wiki is for the 1.7.x releases.
+
 We need your help again for updating the following (high priority and
 most important stuff is on top of the list):
 
-[X] Check po file, system and help pages for errors due to conversion
+[X] If you didn't do this already for the 1.6 release:
+    Check po file, system and help pages for errors due to conversion
     to 1.6 markup:
     * Links have new syntax, see MoinMaster:HelpOnLinking
     * Macros have new syntax, see MoinMaster:HelpOnMacros
@@ -24,6 +31,9 @@
       thus they need manual fixing).
     * You can check what the converter has done, see action=info.
 
+[X] There are also some notes on the http://moinmo.in/MoinDev/Translation
+    page about changes that need to be done.
+
 [X] MoinMaster:MoinI18n/%(lang)s page (source for the .po file)
 
 [X] "%(lang)s" system pages on the MoinMaster wiki
@@ -31,15 +41,14 @@
 [X] "%(lang)s" help pages on the MoinMaster wiki (optional - would be
     nice, if you had the time)
 
-We need that until 2008-XX-XX - because MoinMoin 1.7 RC1 will be released
-then (followed by a release later in december), so we can include that stuff
-into the distribution archive to make people speaking your language happy. ;)
+We need that until 2008-05-23 - because MoinMoin 1.7.0 will be released
+then, so we can include that stuff into the distribution archive to make
+people speaking your language happy. ;)
 
 Please, after translating the current stuff, keep an eye on MoinMaster
-wiki - we are still in the beta phase of 1.7 development and thus, some
-strings in the PO file may still change or get added/deleted.
+wikis - some strings in the PO file may still change or get added/deleted.
 
-See http://moinmo.in/MoinMoinTodo/Release%201.7 for our planned release schedule.
+See http://moinmo.in/MoinMoinTodo/Release%%201.7 for our planned release schedule.
 
 Please reply immediately
 ========================
@@ -54,7 +63,9 @@
     be better done by anyone else volunteering, but you can keep me
     on the list for next time.
 
-[ ] Sorry, but can't do that any more. Remove me as i18n maintainer.
+[ ] Sorry, but can't do that any more.
+    For this case, please remove yourself from the MoinI18n/%(lang)s page
+    by putting ***vacant*** into the Last-Translator: metadata field.
 
 Please, even if you can't help us this time, a fast response will help
 us finding another volunteer.
--- a/MoinMoin/i18n/tools/mail_i18n-maintainers2.txt	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/tools/mail_i18n-maintainers2.txt	Tue May 06 21:38:05 2008 +0200
@@ -3,10 +3,10 @@
 If you are still unfinished with translation - keep in mind that the deadline
 for work on MoinMaster stuff (system texts, system and help pages) is at:
 
-               2007-12-24 16:00 UTC.
+               2008-05-23 16:00 UTC.
 
 
-We plan to release MoinMoin 1.6.0 soon. If your translation arrives before last
+We plan to release MoinMoin 1.7.0 soon. If your translation arrives before last
 release steps have begun, it might still get in.
 
 If not, we will include it in development of next version, so it will
--- a/MoinMoin/i18n/tr.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/tr.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin-1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-04-25 16:26+0300\n"
 "Last-Translator: Ekrem SEREN <ekrem.seren@parduslinux.org>\n"
 "Language-Team: Türkçe\n"
@@ -1112,6 +1112,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2153,6 +2156,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Sayfa üyeliği özelliğinden yararlanabilmek için giriş yapmalısınız."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Hızlı erişim bağlantısı eklemek için giriş yapmalısınız."
@@ -2640,6 +2647,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Bu sayfayı zaten kaydettiniz!"
 
+msgid "You are not allowed to use this action."
+msgstr "Bu işlemi yapmak için yeterli izne sahip değilsiniz."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(içerilen %(localwords)d %(pagelink)s)"
@@ -2719,9 +2729,6 @@
 msgid "Revert all!"
 msgstr "Hepsini geri al!"
 
-msgid "You are not allowed to use this action."
-msgstr "Bu işlemi yapmak için yeterli izne sahip değilsiniz."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d tane ek]"
--- a/MoinMoin/i18n/uk.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/uk.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2007-11-10 16:50+0300\n"
 "Last-Translator: Maxim V. Dziumanenko <dziumanenko@softprom.kiev.ua>\n"
 "Language-Team: Ukrainian <uk@li.org>\n"
@@ -1091,6 +1091,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2136,6 +2139,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Зареєструйтесь, щоб мати змогу стежити."
+
 msgid "You must login to remove a quicklink."
 msgstr "Зареєструйтесь, щоб видалити посилання на сторінку."
 
@@ -2609,6 +2616,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "Ви вже встановили посилання на цю сторінку!"
 
+msgid "You are not allowed to use this action."
+msgstr "Немає прав для цієї дії."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(включаючи %(localwords)d %(pagelink)s)"
@@ -2686,9 +2696,6 @@
 msgid "Revert all!"
 msgstr "Повернути все!"
 
-msgid "You are not allowed to use this action."
-msgstr "Немає прав для цієї дії."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d вкладень]"
--- a/MoinMoin/i18n/vi.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/vi.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2004-11-19 21:03+0800\n"
 "Last-Translator: Nam T. Nguyen <nnt@nntsoft.com>\n"
 "Language-Team: Vietnamese <moin-devel@lists.sourceforge.net>\n"
@@ -1088,6 +1088,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2109,6 +2112,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "Bạn không thể sửa trang này."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "Bạn không thể sửa trang này."
@@ -2555,6 +2562,10 @@
 msgid "You already have a quicklink to this page."
 msgstr "Bạn đã đăng ký vào trang này rồi."
 
+#, fuzzy
+msgid "You are not allowed to use this action."
+msgstr "Bạn không thể sửa trang này."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(bao gồm cả %(localwords)d %(pagelink)s)"
@@ -2636,10 +2647,6 @@
 msgid "Revert all!"
 msgstr ""
 
-#, fuzzy
-msgid "You are not allowed to use this action."
-msgstr "Bạn không thể sửa trang này."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d attachments]"
--- a/MoinMoin/i18n/zh-tw.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/zh-tw.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2008-03-24 23:30+0800\n"
 "Last-Translator: Rux Li <rux.li3@gmail.com>\n"
 "Language-Team: Chinese/Taiwan <moin-devel@lists.sourceforge.net>\n"
@@ -1068,6 +1068,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2095,6 +2098,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "登入之後才能訂閱"
+
 msgid "You must login to remove a quicklink."
 msgstr "登入之後才能移除頁面捷徑。"
 
@@ -2553,6 +2560,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "本頁已經設成捷徑了!"
 
+msgid "You are not allowed to use this action."
+msgstr "你無權使用本項操作。"
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(其中包含 %(localwords)d 個 %(pagelink)s)"
@@ -2630,9 +2640,6 @@
 msgid "Revert all!"
 msgstr "全部回復"
 
-msgid "You are not allowed to use this action."
-msgstr "你無權使用本項操作。"
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d 個附件]"
--- a/MoinMoin/i18n/zh.MoinMoin.po	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/i18n/zh.MoinMoin.po	Tue May 06 21:38:05 2008 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: MoinMoin 1.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-11 21:09+0200\n"
+"POT-Creation-Date: 2008-04-26 18:49+0200\n"
 "PO-Revision-Date: 2004-12-05 22:41+0100\n"
 "Last-Translator: Jun Hu <j.hu@tue.nl>\n"
 "Language-Team: Chinese <moin-devel@lists.sourceforge.net>\n"
@@ -1064,6 +1064,9 @@
 msgid "The selected OpenIDs have been removed."
 msgstr ""
 
+msgid "No OpenID given."
+msgstr ""
+
 msgid "OpenID is already present."
 msgstr ""
 
@@ -2095,6 +2098,10 @@
 msgid "Please choose:"
 msgstr ""
 
+#, fuzzy, python-format
+msgid "You must login to use this action: %(action)s."
+msgstr "您必须首先登录才能订阅."
+
 #, fuzzy
 msgid "You must login to remove a quicklink."
 msgstr "您必须首先登录才能添加快捷链接."
@@ -2557,6 +2564,9 @@
 msgid "You already have a quicklink to this page."
 msgstr "您已经保存了此页."
 
+msgid "You are not allowed to use this action."
+msgstr "您无权进行此项操作."
+
 #, python-format
 msgid "(including %(localwords)d %(pagelink)s)"
 msgstr "(其中包括%(localwords)d个%(pagelink)s)"
@@ -2632,9 +2642,6 @@
 msgid "Revert all!"
 msgstr "全部恢复!"
 
-msgid "You are not allowed to use this action."
-msgstr "您无权进行此项操作."
-
 #, python-format
 msgid "[%d attachments]"
 msgstr "[%d个附件]"
--- a/MoinMoin/macro/FullSearch.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/macro/FullSearch.py	Tue May 06 21:38:05 2008 +0200
@@ -81,8 +81,7 @@
     return macro.formatter.rawHTML(html)
 
 
-def macro_FullSearch(macro, needle=None):
-
+def execute(macro, needle):
     request = macro.request
     _ = request.getText
 
--- a/MoinMoin/macro/FullSearchCached.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/macro/FullSearchCached.py	Tue May 06 21:38:05 2008 +0200
@@ -9,7 +9,7 @@
     @license: GNU GPL, see COPYING for details.
 """
 
-from MoinMoin.macro.FullSearch import macro_FullSearch as macro_FullSearchCached
+from MoinMoin.macro.FullSearch import execute
 Dependencies = []
 
 # yes, that's all
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/macro/PageList.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,31 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - PageList
+
+    print a list of pages whose title matches the search term
+
+    @copyright: @copyright: 2001-2003 Juergen Hermann <jh@web.de>,
+                2003-2008 MoinMoin:ThomasWaldmann
+                2008 MoinMoin:ReimarBauer
+    @license: GNU GPL, see COPYING for details.
+"""
+
+Dependencies = ["namespace"]
+from MoinMoin import search, wikiutil
+
+def execute(macro, args):
+    _ = macro._
+    case = 0
+
+    # If called with empty or no argument, default to regex search for .+, the full page list.
+    needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+')
+
+    # With whitespace argument, return same error message as FullSearch
+    if not needle.strip():
+        err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle
+        return '<span class="error">%s</span>' % err
+
+    # Return a title search for needle, sorted by name.
+    results = search.searchPages(macro.request, needle,
+              titlesearch=1, case=case, sort='page_name')
+    return results.pageList(macro.request, macro.formatter, paging=False)
--- a/MoinMoin/macro/RecentChanges.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/macro/RecentChanges.py	Tue May 06 21:38:05 2008 +0200
@@ -155,7 +155,7 @@
     pages = request.rootpage.getPageList()
     last_edits = []
     for name in pages:
-        log = Page(request, name)._last_edited(request)
+        log = Page(request, name).editlog_entry()
         if log:
             last_edits.append(log)
         #   we don't want all Systempages at the beginning of the abandoned list
--- a/MoinMoin/macro/__init__.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/macro/__init__.py	Tue May 06 21:38:05 2008 +0200
@@ -28,7 +28,7 @@
 
 names = ["TitleSearch", "WordIndex", "TitleIndex", "GoTo",
          # Macros with arguments
-         "Icon", "PageList", "Date", "DateTime", "Anchor", "MailTo", "GetVal", "TemplateList",
+         "Icon", "Date", "DateTime", "Anchor", "MailTo", "GetVal", "TemplateList",
 ]
 
 #############################################################################
@@ -62,7 +62,6 @@
 
     Dependencies = {
         "TitleSearch": ["namespace"],
-        "PageList": ["namespace"],
         "TemplateList": ["namespace"],
         "WordIndex": ["namespace"],
         "TitleIndex": ["namespace"],
@@ -156,24 +155,6 @@
         from MoinMoin.macro.FullSearch import search_box
         return search_box("titlesearch", self)
 
-    def macro_PageList(self, needle=None):
-        from MoinMoin import search
-        _ = self._
-        case = 0
-
-        # If called with empty or no argument, default to regex search for .+, the full page list.
-        needle = wikiutil.get_unicode(self.request, needle, 'needle', u'regex:.+')
-
-        # With whitespace argument, return same error message as FullSearch
-        if not needle.strip():
-            err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle
-            return '<span class="error">%s</span>' % err
-
-        # Return a title search for needle, sorted by name.
-        results = search.searchPages(self.request, needle,
-                titlesearch=1, case=case, sort='page_name')
-        return results.pageList(self.request, self.formatter, paging=False)
-
     def macro_TemplateList(self, needle=u'.+'):
         # TODO: this should be renamed (RegExPageNameList?), it does not list only Templates...
         _ = self._
--- a/MoinMoin/parser/text_docbook.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/parser/text_docbook.py	Tue May 06 21:38:05 2008 +0200
@@ -123,12 +123,12 @@
         #    if a word is a valid wikiname & a valid wikipage,
         #    replace word with hyperlink
 
-        found = re.finditer(self.wikiParser.word_rule, result)
+        found = re.finditer(self.wikiParser.word_rule, result, re.UNICODE|re.VERBOSE)
         if found:
             splitResult = _splitResult(found, result)
 
             for index in range(len(splitResult)):
-                if (re.match(self.wikiParser.word_rule, splitResult[index])
+                if (re.match(self.wikiParser.word_rule, splitResult[index], re.UNICODE|re.VERBOSE)
                     and Page.Page(self.request, splitResult[index]).exists()):
                     splitResult[index] = self.wikiParser._word_repl(splitResult[index])
             result = ''.join(splitResult)
--- a/MoinMoin/request/__init__.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/request/__init__.py	Tue May 06 21:38:05 2008 +0200
@@ -879,6 +879,21 @@
         msg = 'Timing %5d %-6s %4s %-10s %s\n' % (pid, total, indicator, action, self.url)
         self.log(msg)
 
+    def send_file(self, fileobj, bufsize=8192, do_flush=False):
+        """ Send a file to the output stream.
+
+        @param fileobj: a file-like object (supporting read, close)
+        @param bufsize: size of chunks to read/write
+        @param do_flush: call flush after writing?
+        """
+        while True:
+            buf = fileobj.read(bufsize)
+            if not buf:
+                break
+            self.write(buf)
+            if do_flush:
+                self.flush()
+
     def write(self, *data):
         """ Write to output stream. """
         raise NotImplementedError
@@ -986,7 +1001,7 @@
 
     def flush(self):
         """ Flush output stream. """
-        raise NotImplementedError
+        pass
 
     def check_spider(self):
         """ check if the user agent for current request is a spider/bot """
--- a/MoinMoin/request/request_fcgi.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/request/request_fcgi.py	Tue May 06 21:38:05 2008 +0200
@@ -50,6 +50,12 @@
         except Exception:
             raise RemoteClosedConnection()
 
+    def send_file(self, fileobj, bufsize=8192, do_flush=True):
+        # as thfcgi buffers everything we write until we do a flush, we use
+        # do_flush=True as default here (otherwise the sending of big file
+        # attachments would consume lots of memory)
+        return RequestBase.send_file(self, fileobj, bufsize, do_flush)
+
     def flush(self):
         """ Flush output stream. """
         self.fcgreq.flush_out()
--- a/MoinMoin/request/request_wsgi.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/request/request_wsgi.py	Tue May 06 21:38:05 2008 +0200
@@ -24,6 +24,10 @@
             self.status = '200 OK'
             self.headers = []
 
+            # used by send_file()
+            self._send_file = None
+            self._send_bufsize = None
+
             self._setup_vars_from_std_env(env)
             RequestBase.__init__(self, {})
 
@@ -54,6 +58,11 @@
         else:
             return self.stdin.read(n)
 
+    def send_file(self, fileobj, bufsize=8192, do_flush=None):
+        # For now, we just remember fileobj and bufsize for sending it later:
+        self._send_file = fileobj
+        self._send_bufsize = bufsize
+
     def write(self, *data):
         data = self.encode(data)
         try:
--- a/MoinMoin/script/maint/mailtranslators.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/script/maint/mailtranslators.py	Tue May 06 21:38:05 2008 +0200
@@ -17,8 +17,8 @@
 Purpose:
 ========
 This tool allows you to have a message read in from standard input, and
-then sent to all translators via email. If you use %(lang)s in the mssage
-it will be replaced with the appropriate language code for the translater.
+then sent to all translators via email. If you use %(lang)s in the message
+it will be replaced with the appropriate language code for the translator.
 
 Detailed Instructions:
 ======================
--- a/MoinMoin/script/maint/mkpagepacks.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/script/maint/mkpagepacks.py	Tue May 06 21:38:05 2008 +0200
@@ -60,7 +60,6 @@
 
         langPages = Set()
         for name, group in self.gd.dictdict.items():
-            group.expandgroups(self.gd)
             groupPages = Set(group.members() + [name])
             name = name.replace("SystemPagesIn", "").replace("Group", "")
             pageSets[name] = groupPages
--- a/MoinMoin/script/migration/1060000.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/script/migration/1060000.py	Tue May 06 21:38:05 2008 +0200
@@ -9,5 +9,5 @@
 """
 
 def execute(script, data_dir, rev):
-    return 1069999
+    return 1060100
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060100.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060100
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060200
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060200.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060200
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060300
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060300.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060300
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060400
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060400.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060400
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060500
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060500.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060500
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060600
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060600.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060600
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060700
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060700.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060700
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060800
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060800.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060800
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060900
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/script/migration/1060900.py	Tue May 06 21:38:05 2008 +0200
@@ -0,0 +1,13 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - migration from base rev 1060900
+
+    Nothing to do, we just return the new data dir revision.
+
+    @copyright: 2008 by Thomas Waldmann
+    @license: GNU GPL, see COPYING for details.
+"""
+
+def execute(script, data_dir, rev):
+    return 1060999
+
--- a/MoinMoin/search/Xapian.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/search/Xapian.py	Tue May 06 21:38:05 2008 +0200
@@ -75,7 +75,7 @@
                  }
 
     singleword_re = re.compile(singleword, re.U)
-    wikiword_re = re.compile(WikiParser.word_rule, re.U)
+    wikiword_re = re.compile(WikiParser.word_rule, re.UNICODE|re.VERBOSE)
 
     token_re = re.compile(
         r"(?P<company>\w+[&@]\w+)|" + # company names like AT&T and Excite@Home.
@@ -97,10 +97,13 @@
         @param request: current request
         @param language: if given, the language in which to stem words
         """
-        if request and request.cfg.xapian_stemming and language:
-            self.stemmer = Stemmer(language)
-        else:
-            self.stemmer = None
+        self.stemmer = None
+        if request and request.cfg.xapian_stemming and language and Stemmer:
+            try:
+                self.stemmer = Stemmer(language)
+            except (KeyError, TypeError):
+                # lang is not stemmable or not available
+                pass
 
     def raw_tokenize(self, value):
         """ Yield a stream of lower cased raw and stemmed words from a string.
@@ -463,7 +466,7 @@
         mtime = page.mtime_usecs()
         revision = str(page.get_real_rev())
         itemid = "%s:%s:%s" % (wikiname, pagename, revision)
-        author = page.last_edit(request)['editor']
+        author = page.edit_info().get('editor', '?')
         # XXX: Hack until we get proper metadata
         language, stem_language = self._get_languages(page)
         categories = self._get_categories(page)
@@ -642,6 +645,7 @@
             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,
--- a/MoinMoin/search/builtin.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/search/builtin.py	Tue May 06 21:38:05 2008 +0200
@@ -468,8 +468,7 @@
 
         # when xapian was used, we can estimate the numer of matches
         # Note: hits can't be estimated by xapian with historysearch enabled
-        if not self.request.cfg.xapian_index_history and \
-                self.request.cfg.xapian_search:
+        if not self.request.cfg.xapian_index_history and hasattr(self, '_xapianMset'):
             self.sort = None
             mset = self._xapianMset
             estimated_hits = (
@@ -650,9 +649,12 @@
 
             if wikiname in (self.request.cfg.interwikiname, 'Self'): # THIS wiki
                 page = Page(self.request, pagename, rev=revision)
-                if not self.historysearch and revision and \
-                        page.getRevList()[0] != revision:
-                    continue
+                if not self.historysearch and revision:
+                    revlist = page.getRevList()
+                    # 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
+                        continue
                 if attachment:
                     if pagename == fs_rootpage: # not really an attachment
                         page = Page(self.request, "%s/%s" % (fs_rootpage, attachment))
--- a/MoinMoin/server/server_wsgi.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/server/server_wsgi.py	Tue May 06 21:38:05 2008 +0200
@@ -28,5 +28,12 @@
     request = request_wsgi.Request(environ)
     request.run()
     start_response(request.status, request.headers)
-    return [request.output()]
+    if request._send_file is not None:
+        # moin wants to send a file (e.g. AttachFile.do_get)
+        def simple_wrapper(fileobj, bufsize):
+            return iter(lambda: fileobj.read(bufsize), '')
+        file_wrapper = environ.get('wsgi.file_wrapper', simple_wrapper)
+        return file_wrapper(request._send_file, request._send_bufsize)
+    else:
+        return [request.output()] # don't we have a filelike there also!?
 
--- a/MoinMoin/theme/__init__.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/theme/__init__.py	Tue May 06 21:38:05 2008 +0200
@@ -2,7 +2,7 @@
 """
     MoinMoin - Theme Package
 
-    @copyright: 2003-2007 MoinMoin:ThomasWaldmann
+    @copyright: 2003-2008 MoinMoin:ThomasWaldmann
     @license: GNU GPL, see COPYING for details.
 """
 
@@ -12,10 +12,11 @@
 
 modules = pysupport.getPackageModules(__file__)
 
-# Check whether we can emit a RSS feed (code stolen from wikitest.py).
-# Currently RSS is broken on plain Python, and works only when installing PyXML.
-import xml
-rss_supported = '_xmlplus' in xml.__file__
+# Check whether we can emit a RSS feed.
+# RSS is broken on plain Python 2.3.x/2.4.x, and works only when installing PyXML.
+# News: A user reported that the RSS is valid when using Python 2.5.1 on Windows.
+import sys, xml
+rss_supported = sys.version_info[:3] >= (2, 5, 1) or '_xmlplus' in xml.__file__
 
 
 class ThemeBase:
@@ -277,7 +278,8 @@
                         request.formatter.interwikilink(0, title=title, id="userhome", *interwiki))
             userlinks.append(homelink)
             # link to userprefs action
-            userlinks.append(d['page'].link_to(request, text=_('Settings'),
+            if 'userprefs' not in self.request.cfg.actions_excluded:
+                userlinks.append(d['page'].link_to(request, text=_('Settings'),
                                                querystr={'action': 'userprefs'}, id='userprefs', rel='nofollow'))
 
         if request.user.valid:
@@ -543,7 +545,7 @@
         @return: html link tag
         """
         qs = {}
-        querystr, title, icon = self.cfg.page_icons_table[which]
+        pagekey, querystr, title, icon = self.cfg.page_icons_table[which]
         qs.update(querystr) # do not modify the querystr dict in the cfg!
         d['icon-alt-text'] = d['title'] = title % d
         d['i18ntitle'] = self.request.getText(d['title'])
@@ -552,7 +554,11 @@
         if rev and which in ['raw', 'print', ]:
             qs['rev'] = str(rev)
         attrs = {'rel': 'nofollow', 'title': d['i18ntitle'], }
-        page = d['page']
+        page = d[pagekey]
+        if isinstance(page, unicode):
+            # e.g. d['page_parent_page'] is just the unicode pagename
+            # while d['page'] will give a page object
+            page = Page(self.request, page)
         return page.link_to_raw(self.request, text=img_src, querystr=qs, **attrs)
 
     def msg(self, d):
@@ -961,6 +967,9 @@
         available = request.getAvailableActions(page)
         for action in menu:
             data = {'action': action, 'disabled': '', 'title': titles[action]}
+            # removes excluded actions from the more actions menu
+            if action in request.cfg.actions_excluded:
+                continue
 
             # Enable delete cache only if page can use caching
             if action == 'refresh':
@@ -1170,6 +1179,9 @@
         If the user want to show both editors, it will display "Edit
         (Text)", otherwise as "Edit".
         """
+        if 'edit' in self.request.cfg.actions_excluded:
+            return ""
+
         if not (page.isWritable() and
                 self.request.user.may.write(page.page_name)):
             return self.disabledEdit()
@@ -1234,6 +1246,9 @@
 
     def infoLink(self, page):
         """ Return link to page information """
+        if 'info' in self.request.cfg.actions_excluded:
+            return ""
+
         _ = self.request.getText
         return page.link_to(self.request,
                             text=_('Info'),
@@ -1253,6 +1268,8 @@
             action, text = 'unsubscribe', _("Unsubscribe")
         else:
             action, text = 'subscribe', _("Subscribe")
+        if action in self.request.cfg.actions_excluded:
+            return ""
         return page.link_to(self.request, text=text, querystr={'action': action}, css_class='nbsubscribe', rel='nofollow')
 
     def quicklinkLink(self, page):
@@ -1269,10 +1286,15 @@
             action, text = 'quickunlink', _("Remove Link")
         else:
             action, text = 'quicklink', _("Add Link")
+        if action in self.request.cfg.actions_excluded:
+            return ""
         return page.link_to(self.request, text=text, querystr={'action': action}, css_class='nbquicklink', rel='nofollow')
 
     def attachmentsLink(self, page):
         """ Return link to page attachments """
+        if 'AttachFile' in self.request.cfg.actions_excluded:
+            return ""
+
         _ = self.request.getText
         return page.link_to(self.request,
                             text=_('Attachments'),
--- a/MoinMoin/version.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/version.py	Tue May 06 21:38:05 2008 +0200
@@ -15,7 +15,7 @@
     patchlevel = 'release'
 
 project = "MoinMoin"
-release = '1.7.0alpha'
+release = '1.7.0beta1'
 release_short = '170' # used for url_prefix_static
 revision = patchlevel
 
--- a/MoinMoin/xmlrpc/__init__.py	Thu Apr 24 16:05:04 2008 +0200
+++ b/MoinMoin/xmlrpc/__init__.py	Tue May 06 21:38:05 2008 +0200
@@ -202,6 +202,9 @@
     def noSuchPageFault(self):
         return xmlrpclib.Fault(1, "No such page was found.")
 
+    def noLogEntryFault(self):
+        return xmlrpclib.Fault(1, "No log entry was found.")
+
     #############################################################################
     ### System methods
     #############################################################################
@@ -408,8 +411,11 @@
             return self.noSuchPageFault()
 
         # Get page info
-        last_edit = page.last_edit(self.request)
-        mtime = wikiutil.version2timestamp(long(last_edit['timestamp'])) # must be long for py 2.2.x
+        edit_info = page.edit_info()
+        if not edit_info:
+            return self.noLogEntryFault()
+
+        mtime = wikiutil.version2timestamp(long(edit_info['timestamp'])) # must be long for py 2.2.x
         gmtuple = tuple(time.gmtime(mtime))
 
         version = rev # our new rev numbers: 1,2,3,4,....
@@ -428,7 +434,7 @@
         return {
             'name': self._outstr(page.page_name),
             'lastModified': xmlrpclib.DateTime(gmtuple),
-            'author': self._outstr(last_edit['editor']),
+            'author': self._outstr(edit_info['editor']),
             'version': version,
             }
 
--- a/docs/CHANGES	Thu Apr 24 16:05:04 2008 +0200
+++ b/docs/CHANGES	Tue May 06 21:38:05 2008 +0200
@@ -36,10 +36,8 @@
     Add the resulting `pyxmpp` directory to your PYTHONPATH or perform
     a "full installation" as described on http://pyxmpp.jajcus.net/:
 
-    To build the package just invoke:
+    To build and install the package just invoke:
     python setup.py build
-
-    To install it:
     python setup.py install
 
     If you had some older version of PyXMPP it is better to uninstall it 
@@ -48,14 +46,77 @@
 
     You may also try:
     make
-
-    and:
     make install
 
-Version 1.7.current:
-    This is the active development branch. All changes get done here and
-    critical stuff gets committed with -m "... (backport needed)" and then
-    backported to older releases that we still maintain. :)
+
+Version 1.7.0current:
+
+  Bug Fixes:
+    * Wiki xmlrpc getPageInfoVersion() fixed:
+      * works correctly now for old page versions (was unsupported)
+      * works correctly now for current page version (reported wrong
+        data when a page had attachment uploads after the last page
+        edit)
+      * returns a Fault if it did not find a edit-log entry
+
+  Developer notes (these should be moved to the end in the release):
+    * Page.last_edit() is DEPRECATED, please use Page.edit_info().
+    * Page._last_edited() is GONE (was broken anyway), please use
+      Page.editlog_entry().
+
+Version 1.7.0beta1:
+
+  New Features:
+    * New powerful and flexible logging, please see wiki/config/logging/ -
+      HINT: you have to upgrade your server adaptor script (e.g. moin.cgi)
+      and load a logging configuration that fits your needs from there.
+      If you use some of our sample logging configs, make sure you have a
+      look INTO them to fix e.g. the path of the logfile it will use.
+    * Moin now logs the path from where it loaded its configuration(s)
+    * cfg.trusted_auth_methods is a list of auth methods that put an
+      authenticated user into the "Trusted" ACL group.
+    * New authentication plugin system, see HelpOnAuthentication.
+    * New session handling system (no moin_session any more, now done
+      internally and automatically), see HelpOnSessions for details.
+    * New preferences plugin system, see MoinMoin/userprefs/__init__.py
+    * New notification system with an optional jabber notification bot.
+    * Jabber notification support; for more information see HelpOnNotification.
+    * Standalone server can now be started via the "moin" script command,
+      optionally backgrounding itself. See: moin server standalone --help
+    * The diff action now has navigation buttons for prev/next change.
+    * Admonition support. Added styling for tip, note, important, warning 
+      and caution in the modern theme. For more info see HelpOnAdmonitions.
+    * DocBook-formatter:
+      * supports HTML entities like &rarr; and &#9731;
+      * supports the FootNote macro
+      * supports bulletless lists
+      * support for admonitions
+      * will export the wiki page's edit history as the generated article's
+        revision history. Doesn't add history of included pages.
+      * supports for the MoinMoin comment element, though only inline comments
+        are likely to be valid since the DocBook remark is an inline element.
+    * ?action=info&max_count=42 - show the last 42 history entries of the page.
+      max_count has a default of default_count and a upper limit of
+      limit_max_count - you can configure both in your wiki config:
+      cfg.history_count = (100, 200) # (default_count, limit_max_count) default
+    * The CSV parser can get the delimiter from the first line so other
+      delimeters than ";" can be used.
+
+  Other changes:
+    * cfg.show_login is gone, see code in theme/__init__.py, this affects
+      many themes!
+    * HINT: a new userprefs/ plugin directory will be created by the usual
+      "moin migration data" command.
+    * Removed attachments direct serving (cfg.attachments - this was deprecated
+      since long!).
+    * The rst-parser's admonition class names are no longer prepended with
+      "admonition_". Instead the class names are now for example "note"
+      and not "admonition_note".
+    * DocBook-formatter:
+      * generates a valid DOCTYPE
+      * table support has been improved
+      * handling of definitions and glossaries is more robust
+      * supports program language and line numbering in code areas
 
   Developer notes (these should be moved to the end in the release):
     * getText's (aka _()) 'formatted' keyword param (default: True in 1.6 and
@@ -67,62 +128,116 @@
         wiki=True, percent=True)
     * Page.url 'relative' keyword param (default: True in 1.6 and early 1.7)
       was changed to default False).
-
-  New Features:
-    * new powerful and flexible logging, please see wiki/config/logging/ -
-      HINT: you have to upgrade your server adaptor script (e.g. moin.cgi)
-      and load a logging configuration that fits your needs from there.
-      If you use some of our sample logging configs, make sure you have a
-      look INTO them to fix e.g. the path of the logfile it will use.
-    * moin now logs the path from where it loaded its configuration(s)
-    * cfg.trusted_auth_methods is a list of auth methods that put an
-      authenticated user into the "Trusted" ACL group.
-    * new authentication plugin system, see HelpOnAuthentication
-    * new session handling system (no moin_session any more, now done
-      internally and automatically), see HelpOnSessions for details.
-    * new preferences plugin system, see MoinMoin/userprefs/__init__.py
-    * new notification system with an optional jabber notification bot
-    * jabber notification support; for more information see:
-      http://moinmo.in/MoinMoinTodo/Release_1.7/HelpOnNotification
-    * standalone server can now be started via the "moin" script command,
-      optionally backgrounding itself. See: moin server standalone --help
-    * the diff action now has navigation buttons for prev/next change
-    * admonition support. Added styling for tip, note, important, warning 
-      and caution in the modern theme. For more info see:
-      http://moinmo.in/MoinMoinTodo/Release%201.7/HelpOnAdmonitions
-    * admonitions .
-    * DocBook-formatter supports HTML entities like &rarr; and &#9731;
-    * DocBook-formatter supports the FootNote macro
-    * DocBook-formatter supports bulletless lists
-    * DocBook-formatter has support for admonitions
-    * DocBook-formatter will export the edithistory inside as the generated 
-      article's revision history. Doesn't add history of included pages.
-    * DocBook-formatter has support for the MoinMoin comment element, though
-      only inline comments are likely to be valid since the DocBook remark is
-      and inline element.
-    * ?action=info&max_count=42 - show the last 42 history entries of the page.
-      max_count has a default of default_count and a upper limit of
-      limit_max_count - you can configure both in your wiki config:
-      cfg.history_count = (100, 200) # (default_count, limit_max_count) default
-    * csv parser can get the delimiter from the first line so other delimeters 
-      than ";" could be used
+    * The themedict no longer contains 'page_user_prefs' and 'user_prefs',
+      this may affect custom themes.
+
+
+Version 1.6.current:
+  Fixes:
+    * The iconbar "up" icon (known from 1.5) is back. Although it is not too
+      useful if you use themes that have the navigation in the page title,
+      it is useful for themes not using that kind of navigation.
+
+
+Version 1.6.3:
+  Fixes:
+    * Security fix: a check in the user form processing was not working as
+      expected, leading to a major ACL and superuser priviledge escalation
+      problem. If you use ACL entries other than "Known:" or "All:" and/or
+      a non-empty superuser list, you need to urgently install this upgrade.
+    * Security fix: if acl_hierarchic=True was used (False is the default),
+      ACL processing was wrong for some cases, see
+      MoinMoinBugs/AclHierarchicPageAclSupercededByAclRightsAfter
+    * For {{transclusion_targets}} we checked the protocol to be http(s),
+      this check was removed (because file: and ftp: should work also) and
+      it's not moin's problem if the user uses silly protocols that can't
+      work for that purpose.
+    * Fixed TableOfContents macro for included pages.
+    * server_fastcgi: added Config.port = None. If you want to use some port
+      (not a fd), you can set it now in your Config, e.g. port = 8888.
+    * category: search matches categories even if there are comment lines
+      between the horizontal rule and the real categories, e.g.:
+      ... some page text ...
+      ----
+      ## optionally some comments, e.g. about possible categories:
+      ## CategoryJustACommentNotFound
+      CategoryTheRealAndOnly
+
+      Note: there might be multiple comment lines, but all real categories
+            must be on a single line either directly below the ---- or
+            directly below some comment lines.
+  
+  Other changes:
+    * Added 'notes' to config.url_schemas, so you can use notes://notessrv/...
+      to invoke your Lotus Notes client.
+    * After creating a new user profile via UserPreferences, you are logged
+      in with that user (no need to immediately enter the same name/password
+      again for logging in).
+
+
+Version 1.6.2:
+  Fixes:
+    * Security fix: check the ACL of the included page for the rst parser's
+      include directive.
+    * Potential security/DOS fix: we removed cracklib / python-crack support
+      in password_checker as it is not thread-safe and caused segmentation
+      faults (leading to server error 500 because the moin process died).
+    * Fix moin_session code for auth methods other than moin_login (e.g. http).
+      If you have worked around this using moin_anon_session, you can remove
+      this workaround now (except if you want anon sessions for other reasons).
+    * Fix moin_session code to delete invalid session cookies and also create
+      a new session cookie if it got a valid user_obj at the same time.
+    * Fix xmlrpc applyAuthToken: give good error msg for empty token.
+    * Fixed category search, use category:CategoryFoo as search term.
+    * xapian_stemming = False (changed default) to workaround some problems
+      in the code enabled by it. Fixes the problems when searching for
+      lowercase or numeric titles or word fragments with the builtin search.
+    * Fix trail for anon users without a session, do not show a single page.
+    * Fix MoinMoinBugs/WikiSyncComplainsAboutTooOldMoin.
+    * Wiki parser: fixed strange insertion of unwanted paragraphs.
+    * Wiki parser: fix interwiki linking:
+      Free interwiki links did not change since 1.5 (they still require to match
+      [A-Z][A-Za-z]+ for the wikiname part, i.e. a ASCII word beginning with an
+      uppercase letter).
+      Bracketed interwiki links now behave similar to how they worked in 1.5:
+      Moin just splits off the part left of the colon - no matter how it looks
+      like. It then tries to find that in the interwiki map. If it is found,
+      a interwiki link gets rendered. If it is not found, moin will render a
+      link to a local wiki page (that has a colon in the pagename). It will
+      also render a local wiki page link if there is no colon at all, of course.
+      Examples:
+      [[lowercasewikiname:somepage]] does an interwiki link (if in the map).
+      [[ABC:n]] does a local link to page ABC:n (if ABC is NOT in the map).
+    * Wiki parser: fix interwiki linking for the case that there are query args
+      in the interwiki map entry and you give additional query args via link
+      markup (uses correct query arg separator now), e.g.:
+      [[Google:searchterm|search this|&foo=bar]]
+    * Creole parser: fixed bug that prevents images inside links.
+    * Python parser: catch indentation error.
+    * PageEditor: fixed copyPage for write restricted pages.
+    * GUI editor: fixed javascript error with too complex word_rule regex,
+      see MoinMoinBugs/GuiEditorSyntaxError.
+    * Fixed FCKeditor dialog boxes for FireFox3.
+    * NewPage macro/newpage action: fixed for non-ascii template pagenames.
+    * FootNote macro: Fix MoinMoinBugs/FootNoteNumbering.
+    * EmbedObject macro: bug fix for image mimetype
+    * WSGI:
+      * fix TWikiDraw saving a drawing by also evaluating the query args.
+      * work around unpythonic WSGI 1.0 read() API, fixing broken xmlrpc
+        putPage with mod_wsgi
+    * Fix highlighting (see MoinMoinBugs/SearchForPagesWithComments).
+    * Fix logfile code for EACCESS errors.
+    * Removed the "logging initialized" log messages because it was issued once
+      per request for CGI.
 
   Other changes:
-    * cfg.show_login is gone, see code in theme/__init__.py, this affects
-      many themes!
-    * The themedict no longer contains 'page_user_prefs' and 'user_prefs',
-      this may affect custom themes.
-    * needs a new userprefs/ plugin directory
-    * removed attachments direct serving (cfg.attachments)
-    * the rst-parser's admonition's class names are no longer prepended with
-      "admonition_". Instead the class names are now for example "note"
-      and not "admonition_note".
-    * DocBook-formatter generates a valid DOCTYPE
-    * DocBook-formatter's table support has been improved
-    * DocBook-formatter's handling of definitions and glossaries is more robust
-    * DocBook-formatter supports program language and line numbering in 
-      code areas
-    * A few other fixes to the DocBook-formatter.
+    * Show "Comments" toggling link in edit bar only if the page really
+      contains comments.
+    * Made default configuration of surge protection a bit more forgiving,
+      especially for edit action which is currently also used for previews.
+    * Updated i18n, system/help pages, added Macedonian system text translation.
+    * Improved moin xmlrpc write command's builtin docs and auto-append
+      ?action=xmlrpc2 to the target wiki url given.
 
 
 Version 1.6.1:
--- a/docs/INSTALL.html	Thu Apr 24 16:05:04 2008 +0200
+++ b/docs/INSTALL.html	Tue May 06 21:38:05 2008 +0200
@@ -1,580 +1,774 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
-<link rel="shortcut icon" href="http://moinmaster.wikiwikiweb.de/wiki/favicon.ico">
+<link rel="shortcut icon" href="http://static.moinmo.in/favicon.ico">
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 <meta name="robots" content="noindex,nofollow">
 
-<title>MoinMoin/InstallDocs - MoinMaster</title>
-<script type="text/javascript" src="/wiki/common/js/common.js"></script>
+<title>MoinMoin/InstallDocs - 1.7 Master Wiki</title>
+<script type="text/javascript" src="/moin_static170/common/js/common.js"></script>
 
 
-<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/htdocs/modern/css/common.css">
-<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/htdocs/modern/css/print.css">
-<link rel="alternate" title="MoinMaster Recent Changes" href="http://moinmaster.wikiwikiweb.de/RecentChanges?action=rss_rc&amp;ddiffs=1&amp;unique=1" type="application/rss+xml">
+<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="http://master17.moinmo.in/moin_static170/modern/css/common.css">
+<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="http://master17.moinmo.in/moin_static170/modern/css/print.css">
 
-<link rel="Start" href="http://moinmaster.wikiwikiweb.de/FrontPage">
-<link rel="Alternate" title="Wiki Markup" href="http://moinmaster.wikiwikiweb.de/MoinMoin/InstallDocs?action=raw">
-<link rel="Alternate" media="print" title="Print View" href="http://moinmaster.wikiwikiweb.de/MoinMoin/InstallDocs?action=print">
-<link rel="Up" href="http://moinmaster.wikiwikiweb.de/MoinMoin">
-<link rel="Search" href="http://moinmaster.wikiwikiweb.de/FindPage">
-<link rel="Index" href="http://moinmaster.wikiwikiweb.de/TitleIndex">
-<link rel="Glossary" href="http://moinmaster.wikiwikiweb.de/WordIndex">
-<link rel="Help" href="http://moinmaster.wikiwikiweb.de/HelpOnFormatting">
+<!-- css only for MSIE browsers -->
+<!--[if IE]>
+   <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="http://master17.moinmo.in/moin_static170/modern/css/msie.css">
+<![endif]-->
+
+
+
+<link rel="Start" href="http://master17.moinmo.in/FrontPage">
+<link rel="Alternate" title="Wiki Markup" href="http://master17.moinmo.in/MoinMoin/InstallDocs?action=raw">
+<link rel="Alternate" media="print" title="Print View" href="http://master17.moinmo.in/MoinMoin/InstallDocs?action=print">
+<link rel="Up" href="http://master17.moinmo.in/MoinMoin">
+<link rel="Search" href="http://master17.moinmo.in/FindPage">
+<link rel="Index" href="http://master17.moinmo.in/TitleIndex">
+<link rel="Glossary" href="http://master17.moinmo.in/WordIndex">
+<link rel="Help" href="http://master17.moinmo.in/HelpOnFormatting">
 </head>
 
 <body  lang="en" dir="ltr">
 <div id="page" lang="en" dir="ltr">
-<div id="interwiki"><span><a href="http://moinmaster.wikiwikiweb.de/FrontPage">MoinMaster</a></span></div>
+<div id="interwiki"><span><a href="http://master17.moinmo.in/FrontPage" rel="nofollow">MoinMaster</a></span></div>
 <ul id="pagelocation">
-<li>MoinMoin/InstallDocs</li>
+<li><a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a></li><li><a class="backlink" href="http://master17.moinmo.in/4ct10n/fullsearch/MoinMoin/InstallDocs?action=fullsearch&amp;context=180&amp;value=linkto%3A%22MoinMoin/InstallDocs%22" rel="nofollow" title="Click to do a full-text search for this title">InstallDocs</a></li>
 </ul>
 <div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
-<span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span><p class="line862" />This HTML page contains the basic install docs that can be found on <a class="http" href="http://moinmaster.wikiwikiweb.de/MoinMoin/InstallDocs">http://moinmaster.wikiwikiweb.de/MoinMoin/InstallDocs</a>. It contains all necessary information to get your wiki up and running, even without being online. If you have a permanent internet connection, you might want to browse the docs on the Help<tt class="backtick"></tt>On<tt class="backtick"></tt>Installing page, which might contain more up-to-date information. <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line874" />After following the procedures on this page, you should have a working wiki and can browse the rest of the online docs there. <span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><p class="line867" />
-<h1 id="head-378d73a512870e1afed036c887489ab98ba3c56a">How to install your own MoinMoin Wiki</h1>
-<span class="anchor" id="line-15"></span><p class="line862" />This page describes the installation procedure of <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a>. In the next section, there is a list of real-world <a href="#installscenarios">Installation Scenarios</a> that help you to understand how to apply the instructions in different environments. If you already have a wiki running and want to upgrade, see <a class="interwiki" href="http://moinmaster.wikiwikiweb.de/HelpOnUpdating" title="MoinMaster">HelpOnUpdating</a>. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line862" />A Moin<tt class="backtick"></tt>Moin installation is done by some elementary steps: <span class="anchor" id="line-18"></span><ul><li><p class="line891" /><a href="#basic-install">Basic Installation</a> explains the "<tt class="backtick">setup.py</tt>" step of the installation in more detail. This is uses to get the Moin<tt class="backtick"></tt>Moin code and wiki template installed onto your system. This applies equally to all scenarios, and you should read it before trying a live installation. <span class="anchor" id="line-19"></span></li><li><p class="line891" /><a href="#wikiinstance-creation">Wiki Instance Creation</a> explains how you make a new wiki instance (data and configuration), this is also common to all scenarios. <span class="anchor" id="line-20"></span></li><li><p class="line862" />Getting the web server to serve static stuff under the <tt class="backtick">/wiki</tt> URL (url_prefix) - used for theme CSS and images, etc. - this is slightly different for the various web servers that can be used - see below. <span class="anchor" id="line-21"></span></li><li>Getting the web server to execute the moin code when you access wiki pages. This is done either by CGI, FastCGI, mod_python or Twisted or the built-in stand alone server - this is slightly different for the various web servers that can be used - see below. <span class="anchor" id="line-22"></span></li><li><p class="line862" />After a successful installation, you might want to read more about configuration and other options that you, as the wiki administrator, can set up. <a class="interwiki" href="http://moinmaster.wikiwikiweb.de/HelpOnAdministration" title="MoinMaster">HelpOnAdministration</a> contains links to pages that cover these topics. Especially, the <a class="interwiki" href="http://moinmaster.wikiwikiweb.de/HelpOnConfiguration" title="MoinMaster">HelpOnConfiguration</a> and <a class="interwiki" href="http://moinmaster.wikiwikiweb.de/HelpOnUpdating" title="MoinMaster">HelpOnUpdating</a> pages provide additional information regarding wiki setup and maintenance. <span class="anchor" id="line-23"></span></li><li><p class="line891" /><a href="#trouble-shooting">Trouble-shooting</a> helps with fixing any general problems you might encounter, which apply to any installation platform.  <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span></li></ul><p class="line867" /><span class="anchor" id="installscenarios"></span> <span class="anchor" id="line-26"></span>
-<h1 id="head-bee4ae5a5ef44b7af47ecd4f29b44226ba935e5b">Installation steps specific for some web servers and operating systems</h1>
-<span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><p class="line862" />The following links will show you concrete examples of installation sessions, showing the commands used and explaining what they do. You <em>must first read the general information on installing above</em> before doing the installation steps described on the pages linked from below: <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><p class="line874" />Linux: <span class="anchor" id="line-31"></span><ul><li><p class="line891" /><a href="#linuxapache-install">Linux Installation using Apache</a> <span class="anchor" id="line-32"></span></li><li><p class="line891" /><a href="#linuxstandalone-install">Linux Installation using standalone server</a> <span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span></li></ul><p class="line874" />Long-Running-Process Setup: <span class="anchor" id="line-35"></span><ul><li><p class="line891" /><a href="#fastcgi-install">FastCGI Setup using Apache</a> <span class="anchor" id="line-36"></span></li><li><p class="line891" /><a href="#modpy-install">mod_python Setup using Apache</a> <span class="anchor" id="line-37"></span></li><li><p class="line891" /><a href="#twisted-install">Setup using twisted</a> <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span></li></ul><p class="line874" />Mac OS X: <span class="anchor" id="line-40"></span><ul><li><p class="line891" /><a href="#macosx-install">Mac OS X Installation</a> <span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span></li></ul><p class="line874" />Windows: <span class="anchor" id="line-43"></span><ul><li><p class="line891" /><a href="#win32apache-install">Windows Installation using Apache</a> <span class="anchor" id="line-44"></span></li><li><p class="line891" /><a href="#win32iis-install">Windows Installation using IIS</a> <span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span></li></ul><p class="line867" /><span class="anchor" id="basic-install"></span> <span class="anchor" id="line-47"></span><div dir="ltr" id="Include_HelpOnInstalling/BasicInstallation" lang="en"><span class="anchor" id="top_Include_HelpOnInstalling/BasicInstallation"></span>
-<span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867" /><span class="anchor" id="line-10"></span><strong>How to do a basic installation of <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> on your system.</strong> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line867" /><strong>Contents</strong> <span class="anchor" id="line-13"></span><div class="table-of-contents"><p class="table-of-contents-heading" />Contents<ol><li><a href="#head-2fa431ad9c9bff5badd07c5ee676b19852ed28e3">Check if Python is working</a></li><li><a href="#head-119b1acf8110bb618e4f366c3d1f8a35ad625f75">Download MoinMoin</a></li><li><a href="#head-a84e58c8b4256bd645b9c47b5a900219a356259f">Install MoinMoin</a><ol><li><a href="#head-640b21abea127e7ac4b48c938607c233b7119bd5">Installing in the default system location</a></li><li><a href="#head-ae8ab55eb5e8c11d4fd1eb06e12d69f1b33d411b">Installing in the home directory or another specific location</a></li></ol><li><a href="#head-d7d600c8dcfdd9270f4a6642566404ede510f46a">Test installation</a></li><li><a href="#head-87a60f1d02c36fb1804b442815dba49cbc8adfe7">What has been installed</a></li></ol></div> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line862" />Before you can integrate Moin<tt class="backtick"></tt>Moin into your web environment, you have to install the <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> source code and data files using the standard Python <em>distutils</em> mechanism (<tt class="backtick">setup.py</tt>). This page explains the steps you usually need to take to do this. For more details on the <em>distutils</em> installation process, consult the <a class="http" href="http://www.python.org/doc/current/inst/inst.html">Installing Python Modules</a> document in your Python documentation set. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line874" />The installation is similar on Windows and Linux (and other POSIX-type systems; for simplicity, we just say "Linux" in the docs). <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="(!)" height="15" src="wiki/htdocs/modern/img/idea.png" title="(!)" width="15" /> We use text such as <strong><tt class="backtick">&gt;&nbsp;command&nbsp;arguments</tt></strong> to show what you have to type at the command prompt (also known as shell, terminal, etc.). In our examples "<tt class="backtick">&gt;&nbsp;</tt>" is the prompt, you don't have to type it in, you have to type what comes after it. Lines that do not begin with "<tt class="backtick">&gt;&nbsp;</tt>" are the answers to the commands you have typed. Read them carefully. <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span></li></ul><p class="line867" />
-<h1 id="head-2fa431ad9c9bff5badd07c5ee676b19852ed28e3">Check if Python is working</h1>
-<span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line862" />Moin<tt class="backtick"></tt>Moin needs Python to run, so the first step is to check if an usable version of Python is installed and correctly set-up. If this is not the case, you will have to fix that before you can proceed. <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span><p class="line862" />The <tt class="backtick">CHANGES</tt> file in the Moin<tt class="backtick"></tt>Moin archive mentions what versions are supported. Python 2.3 is the minimum requirement for Moin<tt class="backtick"></tt>Moin 1.5, but we suggest you use the latest Python release version. <span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></span><p class="line862" />You can download Python at <a class="http" href="http://www.python.org/download/">http://www.python.org/download/</a>. <span class="anchor" id="line-28"></span><span class="anchor" id="line-29"></span><p class="line862" />If you are pretty sure an acceptable version of Python is installed but the commands below do not work, this may be because your Python files are not in the <em>search path</em>. Correctly setting the search path is outside the scope of this document; please ask for help on your favorite Python, Linux, or Windows discussion board. <span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span><p class="line874" />If you have shell access, checking if Python is working is very simple. Just type the following command, and look at the result: <span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span><pre>&gt; python -V
-<span class="anchor" id="line-34"></span>Python 2.3.4
-<span class="anchor" id="line-35"></span></pre><span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><p class="line862" />If you don't have shell access, you can try using this <tt class="backtick">pythontest.cgi</tt> script (it assumes that you are using a Linux kind of webserver). Upload the script to your <tt class="backtick">cgi-bin</tt> directory, use <tt class="backtick">chmod&nbsp;a+rx&nbsp;pythontest.cgi</tt> (or a similar command in your FTP program) to make it executable, and invoke it using your web browser. <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line867" /><pre>#!/bin/sh
+<span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span><p class="line862">This HTML page contains the basic install docs that can be found on <a class="http" href="http://master.moinmo.in/MoinMoin/InstallDocs">http://master.moinmo.in/MoinMoin/InstallDocs</a>. It contains all necessary information to get your wiki up and running, even without being online. If you have a permanent internet connection, you might want to browse the docs on the Help<tt class="backtick"></tt>On<tt class="backtick"></tt>Installing page, which might contain more up-to-date information. <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line874">After following the procedures on this page, you should have a working wiki and can browse the rest of the online docs there. <span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><p class="line867">
+<h1 id="HowtoinstallyourownMoinMoinWiki">How to install your own MoinMoin Wiki</h1>
+<span class="anchor" id="line-15"></span><p class="line862">This page describes the installation procedure of <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a>. In the next section, there is a list of real-world <a href="http://master17.moinmo.in/MoinMoin/InstallDocs#installscenarios">Installation Scenarios</a> that help you to understand how to apply the instructions in different environments. If you already have a wiki running and want to upgrade, see <a class="interwiki" href="http://master17.moinmo.in/HelpOnUpdating" title="MoinMaster">HelpOnUpdating</a>. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line862">A Moin<tt class="backtick"></tt>Moin installation is done by some elementary steps: <span class="anchor" id="line-18"></span><ul><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#basic-install">Basic Installation</a> explains the "<tt class="backtick">setup.py</tt>" step of the installation in more detail. This is used to get the Moin<tt class="backtick"></tt>Moin code and wiki template installed onto your system. This applies equally to all scenarios, and you should read it before trying a live installation. <span class="anchor" id="line-19"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#wikiinstance-creation">Wiki Instance Creation</a> explains how you make a new wiki instance (data and configuration), this is also common to all scenarios. <span class="anchor" id="line-20"></span></li><li><p class="line862">Getting the web server to serve static stuff under the <tt class="backtick">url_prefix_static</tt> URL - used for theme CSS and images, etc. - this is slightly different for the various web servers that can be used - see below. <span class="anchor" id="line-21"></span></li><li>Getting the web server to execute the moin code when you access wiki pages. This is done either by CGI, FastCGI, mod_python or Twisted or the built-in stand alone server - this is slightly different for the various web servers that can be used - see below. <span class="anchor" id="line-22"></span></li><li><p class="line862">After a successful installation, you might want to read more about configuration and other options that you, as the wiki administrator, can set up. <a class="interwiki" href="http://master17.moinmo.in/HelpOnAdministration" title="MoinMaster">HelpOnAdministration</a> contains links to pages that cover these topics. Especially, the <a class="interwiki" href="http://master17.moinmo.in/HelpOnConfiguration" title="MoinMaster">HelpOnConfiguration</a> and <a class="interwiki" href="http://master17.moinmo.in/HelpOnUpdating" title="MoinMaster">HelpOnUpdating</a> pages provide additional information regarding wiki setup and maintenance. <span class="anchor" id="line-23"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#trouble-shooting">Trouble-shooting</a> helps with fixing any general problems you might encounter, which apply to any installation platform.  <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span></li></ul><p class="line867"><span class="anchor" id="installscenarios"></span> <span class="anchor" id="line-26"></span>
+<h1 id="Installationstepsspecificforsomewebserversandoperatingsystems">Installation steps specific for some web servers and operating systems</h1>
+<span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><p class="line862">The following links will show you concrete examples of installation sessions, showing the commands used and explaining what they do. You <em>must first read the general information on installing above</em> before doing the installation steps described on the pages linked from below: <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><p class="line874">Linux: <span class="anchor" id="line-31"></span><ul><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#linuxapache-install">Linux Installation using Apache</a> <span class="anchor" id="line-32"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#linuxstandalone-install">Linux Installation using standalone server</a> <span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span></li></ul><p class="line874">Long-Running-Process Setup: <span class="anchor" id="line-35"></span><ul><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#fastcgi-install">FastCGI Setup using Apache or Lighttpd</a> <span class="anchor" id="line-36"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#modpy-install">mod_python Setup using Apache</a> <span class="anchor" id="line-37"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#twisted-install">Setup using twisted</a> <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span></li></ul><p class="line874">Mac OS X: <span class="anchor" id="line-40"></span><ul><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#macosx-install">Mac OS X Installation using Apache</a> <span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span></li></ul><p class="line874">Windows: <span class="anchor" id="line-43"></span><ul><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#win32apache-install">Windows Installation using Apache</a> <span class="anchor" id="line-44"></span></li><li><p class="line891"><a href="http://master17.moinmo.in/MoinMoin/InstallDocs#win32iis-install">Windows Installation using IIS</a> <span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span></li></ul><p class="line867"><span class="anchor" id="basic-install"></span> <span class="anchor" id="line-47"></span><div dir="ltr" id="HelpOnInstalling.2BAC8-BasicInstallation.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.top"></span>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-8"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-9"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-10"></span><p class="line867"><strong>How to do a basic installation of <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> on your system.</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-11"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-12"></span><p class="line867"><strong>Contents</strong> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-13"></span><div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.CheckifPythonisworking">Check if Python is working</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.DownloadMoinMoin">Download MoinMoin</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.InstallMoinMoin">Install MoinMoin</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.RecommendedinstallationcommandforLinux.28andMacOsX.29">Recommended installation command for Linux (and MacOs X)</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.Debuggingsetupprocess">Debugging setup process</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.Installingtothedefaultsystemlocation">Installing to the default system location</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.Installinginthehomedirectoryoranotherspecificlocation">Installing in the home directory or another specific location</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.Testinstallation">Test installation</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-BasicInstallation.Whathasbeeninstalled">What has been installed</a></li></ol></div><p class="line874"> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-14"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-15"></span><p class="line862">Before you can integrate Moin<tt class="backtick"></tt>Moin into your web environment, you have to install the <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> source code and data files using the standard Python <em>distutils</em> mechanism (<tt class="backtick">setup.py</tt>). This page explains the steps you usually need to take to do this. For more details on the <em>distutils</em> installation process, consult the <a class="http" href="http://www.python.org/doc/current/inst/inst.html">Installing Python Modules</a> document in your Python documentation set. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-16"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-17"></span><p class="line874">The installation is similar on Windows and Linux (and other POSIX-type systems; for simplicity, we just say "Linux" in the docs). <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-18"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-19"></span><ul><li style="list-style-type:none"><p class="line891"><img alt="(!)" height="15" src="/moin_static170/modern/img/idea.png" title="(!)" width="15" /> We use text such as <strong><tt class="backtick">&gt;&nbsp;command&nbsp;arguments</tt></strong> to show what you have to type at the command prompt (also known as shell, terminal, etc.). In our examples "<tt class="backtick">&gt;&nbsp;</tt>" is the prompt, you don't have to type it in, you have to type what comes after it. Lines that do not begin with "<tt class="backtick">&gt;&nbsp;</tt>" are the answers to the commands you have typed. Read them carefully. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-20"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-21"></span></li></ul><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-BasicInstallation.CheckifPythonisworking">Check if Python is working</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-22"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-23"></span><p class="line862">Moin<tt class="backtick"></tt>Moin needs Python to run, so the first step is to check if an usable version of Python is installed and correctly set-up. If this is not the case, you will have to fix that before you can proceed. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-24"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-25"></span><p class="line862">The <tt class="backtick">CHANGES</tt> file in the Moin<tt class="backtick"></tt>Moin archive mentions what versions are supported. Python 2.3 is the minimum requirement for Moin<tt class="backtick"></tt>Moin 1.5, but we suggest you use the latest Python release version. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-26"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-27"></span><p class="line862">You can download Python at <a class="http" href="http://www.python.org/download/">http://www.python.org/download/</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-28"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-29"></span><p class="line862">If you are pretty sure an acceptable version of Python is installed but the commands below do not work, this may be because your Python files are not in the <em>search path</em>. Correctly setting the search path is outside the scope of this document; please ask for help on your favorite Python, Linux, or Windows discussion board. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-30"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-31"></span><p class="line874">If you have shell access, checking if Python is working is very simple. Just type the following command, and look at the result: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-32"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-33"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-34"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-35"></span><pre>&gt; python -V
+Python 2.4.3</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-36"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-37"></span><p class="line862">If you don't have shell access, you can try using this <tt class="backtick">pythontest.cgi</tt> script (it assumes that you are using a Linux kind of webserver). Upload the script to your <tt class="backtick">cgi-bin</tt> directory, use <tt class="backtick">chmod&nbsp;a+rx&nbsp;pythontest.cgi</tt> (or a similar command in your FTP program) to make it executable, and invoke it using your web browser. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-38"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-39"></span><p class="line867"><object data="/HelpOnInstalling/BasicInstallation?action=AttachFile&amp;do=get&amp;target=pythontest.cgi" title="" type="application/octet-stream">pythontest.cgi</object> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-40"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-41"></span><p class="line874">If it doesn't display "CGI scripts work", well, then CGI scripts don't work. If it doesn't show one or more Python version numbers, then Python is not correctly installed. In both cases, before you can proceed, you will have to get in touch with the administrator of the server so that the problems get corrected. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-42"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-43"></span><p class="line862">Also be sure to read <a href="http://master17.moinmo.in/HelpOnInstalling/ApacheOnLinuxFtp">../ApacheOnLinuxFtp</a> after you've completed the ../BasicInstallation illustrated here. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-44"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-45"></span><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-BasicInstallation.DownloadMoinMoin">Download MoinMoin</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-46"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-47"></span><p class="line862">To download the distribution archive, go to the <a class="http" href="http://moinmo.in/MoinMoinDownload">download page</a> and fetch the latest archive. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-48"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-49"></span><p class="line862">The next step is to unpack the distribution archive (which you have done already if you are reading this text from your hard drive). If you read this on the web, the distribution comes in a versioned <tt class="backtick">.tar.gz</tt> archive, which you can unpack as shown below. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-50"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-51"></span><ul><li>On Windows <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-52"></span><ul><li><p class="line862">You can use recent versions of programs like <a class="http" href="http://www.7-zip.org/">7-Zip</a>, Win<tt class="backtick"></tt>Zip, Win<tt class="backtick"></tt>Rar, and Win<tt class="backtick"></tt>Ace, which handle .tar.gz kind of archives. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-53"></span></li><li><p class="line862">At the command prompt, you can use <a class="http" href="http://gnuwin32.sourceforge.net/packages/gzip.htm">GNU gzip</a> and <a class="http" href="http://gnuwin32.sourceforge.net/packages/tar.htm">GNU tar</a> for Windows. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-54"></span></li></ul></li><li>On Linux <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-55"></span><ul><li>You can use your favorite file manager -- it should be able to unpack them. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-56"></span></li><li><p class="line862">At any shell prompt, you can use the <tt class="backtick">tar</tt> command. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-57"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-58"></span></li></ul></li></ul><p class="line862">The distribution archive will always unpack into a directory named <tt class="backtick">moin-&lt;version&gt;</tt>, for example <tt class="backtick">moin-1.6.0</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-59"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-60"></span><p class="line862">Here is how you would unpack the archive (using GNU tar) and enter the directory with the Moin<tt class="backtick"></tt>Moin files: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-61"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-62"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-63"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-64"></span><pre>&gt; tar xzf moin-1.6.0.tar.gz
+&gt; cd moin-1.6.0</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-65"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-66"></span><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-BasicInstallation.InstallMoinMoin">Install MoinMoin</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-67"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-68"></span><p class="line862">You can install Moin<tt class="backtick"></tt>Moin to either: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-69"></span><ul><li>a system location (if you have the necessary rights to do that -- on Linux you need to be root) <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-70"></span></li><li><p class="line862">some specific location, like your home directory (Linux) or <tt class="backtick">C:\moin</tt> (Windows). <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-72"></span></li></ul><p class="line874">The installation to a system location is easier, so choose that if possible. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-74"></span><p class="line867"><img alt="/!\" height="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> If you have several versions of Python installed, please use the same version for setup and for running the wiki. Usually, the latest Python version will get the best results. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-76"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-BasicInstallation.RecommendedinstallationcommandforLinux.28andMacOsX.29">Recommended installation command for Linux (and MacOs X)</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-77"></span><p class="line862">As you have chosen to not use a preconfigured package for your system this time it is highly recommended that you do not install <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> into the default location. This is because otherwise, if you later want to install a moin package of your distribution this will overwrite your existing installation. The most common path for your own installations is below <tt>/usr/local</tt> (this is called the PREFIX). A command that should be ok for most Linux distributions and also MacOS X is <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-78"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-79"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-80"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-81"></span><pre>&gt; python setup.py install --prefix='/usr/local' --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-82"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-83"></span><p class="line862">This will install the shared files to '/usr/local/share/moin' and the moin code to <tt class="backtick">/usr/local/lib/python2.x/site-packages/MoinMoin/</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-84"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-85"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-BasicInstallation.Debuggingsetupprocess">Debugging setup process</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-86"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-87"></span><p class="line862">If you have problems with the <tt class="backtick">setup.py</tt> install step, try using the command: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-89"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-90"></span><pre>&gt; python -v setup.py --quiet install --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-91"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-92"></span><p class="line862">The additional <tt class="backtick">-v</tt> flag should provide you detailed verbose messages every step of the way. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-94"></span><p class="line867"><img alt="/!\" height="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> On Linux, if you get an error like <tt class="backtick">Invalid&nbsp;Python&nbsp;installation:&nbsp;cannot&nbsp;find&nbsp;/usr/lib/Python2.x/config/Makefile</tt>, you may not have the python module <strong><tt class="backtick">distutils</tt></strong> installed, it's usually a part of the <strong>Python development libarary (<tt class="backtick">python-dev</tt>)</strong>. Some Linux distributions may not have installed it by default. For example, on Mandrake you need to install the <strong><tt class="backtick">python-devel</tt></strong> package, on Debian it's called <strong><tt class="backtick">python-dev</tt></strong>. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-95"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-96"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-BasicInstallation.Installingtothedefaultsystemlocation">Installing to the default system location</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-97"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-98"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-100"></span><pre>&gt; python setup.py --quiet install --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-102"></span><p class="line862">This installs Moin<tt class="backtick"></tt>Moin to the default system location (typically the Python directory, for example on Linux, inside <tt class="backtick">/usr/lib/python2.x/site-packages/MoinMoin</tt> and <tt class="backtick">/usr/share/moin</tt>). Look at the <tt class="backtick">install.log</tt> file to see what was installed, and where. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-103"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-104"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-105"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-106"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-BasicInstallation.Installinginthehomedirectoryoranotherspecificlocation">Installing in the home directory or another specific location</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-107"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-108"></span><p class="line874">Linux example, installing in the home directory: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-109"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-110"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-111"></span><pre>&gt; python setup.py --quiet install --prefix=$HOME --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-113"></span><p class="line862">Windows example, installing in the <tt class="backtick">C:\moin</tt> directory: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-114"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-115"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-116"></span><pre>&gt; python setup.py --quiet install --prefix="C:\moin" --record=install.log</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-117"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-118"></span><p class="line862">All Moin<tt class="backtick"></tt>Moin files will then be installed inside those directories, see <tt class="backtick">install.log</tt> to know which files were installed, and where. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-119"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-120"></span><p class="line867"><strong>Note:</strong> You will likely see the following warning: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-121"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-122"></span><ul><li style="list-style-type:none"><p class="line891"><tt class="backtick">warning:&nbsp;install:&nbsp;modules&nbsp;installed&nbsp;to&nbsp;'C:\moin\',&nbsp;which</tt><br>
+ <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-123"></span><tt class="backtick">is&nbsp;not&nbsp;in&nbsp;Python's&nbsp;module&nbsp;search&nbsp;path&nbsp;(sys.path)&nbsp;--&nbsp;you'll</tt><br>
+ <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-124"></span><tt class="backtick">have&nbsp;to&nbsp;change&nbsp;the&nbsp;search&nbsp;path&nbsp;yourself</tt> <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-125"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-126"></span></li></ul><p class="line862">This means exactly what it says, you need to add your install directory to the search path of Python, or it won't find the Moin<tt class="backtick"></tt>Moin code. <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-127"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-128"></span><p class="line862">For example, if you are running using a webserver and standard CGI, edit <tt class="backtick">moin.cgi</tt> and add your installation directory to the Python path, like this: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-129"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-130"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-131"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-132"></span><pre>import sys
+sys.path.insert(0, 'C:/moin')</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-133"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-134"></span><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-BasicInstallation.Testinstallation">Test installation</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-135"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-136"></span><p class="line862">As a final step, if you have access to the shell or the command prompt, you can check that everything is correctly installed and ready to run. Start Python and type <tt class="backtick">import&nbsp;MoinMoin</tt>. Nothing should be displayed in response to this command. Example: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-137"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-138"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-139"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-140"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-141"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-142"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-143"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-144"></span><pre>&gt; python
+Python 2.4.3 (...)
+Type "help", "copyright", "credits" or "license" for more information.
+&gt;&gt;&gt; import MoinMoin
+&gt;&gt;&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-145"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-146"></span><p class="line874">If you get this instead: <span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-147"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-148"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-149"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-150"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-151"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-152"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-153"></span><span class="anchor" id="HelpOnInstalling.2BAC8-BasicInstallation.line-154"></span><pre>&gt;&gt;&gt; import MoinMoin
+Traceback (most recent call last):
+  File "&lt;stdin&gt;", line 1, in ?
+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="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> 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://master17.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://master17.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">
+<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">
+<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="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> <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="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> <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-33"></span><span class="anchor" id="HelpOnInstalling.2BAC8-WikiInstanceCreation.line-34"></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">
+<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">
+<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">
+<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://master17.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://master17.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
+&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">
+<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
+&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="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> 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">
+<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">
+<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
+&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">
+<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">
+<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="15" src="/moin_static170/modern/img/smile.png" title=":)" width="15" /> 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="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> <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://master17.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>
+<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://master17.moinmo.in/MoinMoin">MoinMoin</a> on Linux with the Apache web server. <strong>You should have already performed the <a href="http://master17.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://master17.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://master17.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://master17.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://master17.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><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.AdministratorScenario">Administrator Scenario</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Createawikiinstance">Create a wiki instance</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Installmoin.cgi">Install moin.cgi</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Configuremoin.cgi">Configure moin.cgi</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureApache">Configure Apache</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureMoinMoin">Configure MoinMoin</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Testthewiki">Test the wiki</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.SimpleUserScenario">Simple User Scenario</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Makesure.2BAC8Afg-usernameworks">Make sure /~username works</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Createawikiinstance-1">Create a wiki instance</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Installthehtdocsfiles">Install the htdocs files</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Installmoin.cgi-1">Install moin.cgi</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Configuremoin.cgi-1">Configure moin.cgi</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureMoinMoin-1">Configure MoinMoin</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Testthewiki-1">Test the wiki</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Troubleshooting">Troubleshooting</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheOnLinux.Addingpermissiontoservethehtdocsdirectory">Adding permission to serve the htdocs directory</a></li></ol></li></ol></li></ol></div><p class="line874"> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-25"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-26"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheOnLinux.AdministratorScenario">Administrator Scenario</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-27"></span><p class="line862">The exact location of the various Apache configs varies - often used locations are: <tt>/etc/httpd/,&nbsp;/etc/apache/&nbsp;or&nbsp;/etc/apache2/</tt>. You should have at least <em>some</em> know-how of how to set up and deal with Apache, especially when it comes to virtual host setup. If you do not know what we are talking about, please read about <em>Configuration Files</em> and <em>Apache Virtual Host documentation </em>in the <a class="http" href="http://httpd.apache.org/docs/">Apache documentation</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-28"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-29"></span><p class="line862">On Apache2 it is quite usual to have a directory (like /etc/httpd/conf.d) for virtual hosts. So every file ending with <em>.conf</em> will be included into the main Apache configuration file. To look if this is true for your configuration, search for the word "Include". <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-30"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-31"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Createawikiinstance">Create a wiki instance</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-32"></span><p class="line874">Creating a wiki instance involves copying files around and setting appropriate permissions. Before you can proceed, you need to know what user and group your Apache server runs as. The easiest way to know this is to issue this command: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-33"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-34"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-35"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-36"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-37"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-38"></span><pre>&gt; egrep "^User|^Group" /etc/httpd/httpd.conf
+User wwwrun
+Group nogroup</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-39"></span><p class="line862">This shows a typical result: "<tt class="backtick">wwwrun.nogroup</tt>". Other common results are "<tt class="backtick">nobody.nogroup</tt>", "<tt class="backtick">apache.apache</tt>" and "<tt class="backtick">www-data.www-data</tt>". You can of course use your own. What matters is that you know which ones are in use, because you will need them to set file permissions. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-40"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-41"></span><p class="line862">Once you have gathered this information, read <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> and follow the steps described there. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-42"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-43"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Installmoin.cgi">Install moin.cgi</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-44"></span><p class="line862">There is one last file you need to copy, the bridge between Apache and Moin<tt class="backtick"></tt>Moin: the CGI script that Apache will call every time a wiki page is requested, and that will in turn invoke all the Moin<tt class="backtick"></tt>Moin components to handle the request. You can actually put this script anywhere you like (all the paths to the files Moin<tt class="backtick"></tt>Moin needs can be configured to match your filesystem layout), but for the sake of simplicity and security, we suggest you follow the instructions below, unless you think you know better. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-45"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-46"></span><p class="line862">We will create a <tt class="backtick">cgi-bin</tt> subdirectory in the instance directory. Using the environment variables defined in <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a>, run the following commands: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-47"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-48"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-50"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-52"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-53"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-54"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-55"></span><pre>&gt; cd $WIKILOCATION/$INSTANCE
+&gt; mkdir cgi-bin
+&gt; cp $SHARE/server/moin.cgi cgi-bin
+&gt; chown -R $USER.$GROUP cgi-bin
+&gt; chmod -R ug+rx cgi-bin
+&gt; chmod -R o-rwx cgi-bin</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-56"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-57"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Configuremoin.cgi">Configure moin.cgi</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-58"></span><p class="line862">When <tt class="backtick">moin.cgi</tt> is launched, it imports a Moin<tt class="backtick"></tt>Moin module that in turn imports other modules and the configuration file. While the Moin<tt class="backtick"></tt>Moin modules should always be found in a properly configured system (as described in <a href="http://master17.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>), it is likely that the configuration file will not be found. Edit the <tt class="backtick">moin.cgi</tt> script to correct that. Add these lines near the top of the file: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-59"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-60"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-61"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-62"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-63"></span><pre>import sys
+sys.path.insert(0, '..')</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-64"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-65"></span><p class="line862">An even better way is to use the absolute path name of the directory that contains the <tt class="backtick">wikiconfig.py</tt> file instead of <tt class="backtick">'..'</tt>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-66"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-67"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureApache">Configure Apache</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-68"></span><p class="line874">Now that every file is in place and properly locked down (as far as the filesystem is concerned), we need to configure Apache so that it offers access to the right files, and no others. However, since the default Apache configuration varies a lot depending on the distribution you use, and since administrators often make important additions and changes to it, we cannot give exact instructions that cover all cases. Instead, we will first describe roughly what needs to be done, and then give a few specific lines that you should add at the appropriate place in your Apache config. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-69"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-70"></span><p class="line874">Your Apache should be set up so that: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-72"></span><ul><li>Access to your instance directory is denied (sane Apache installations should actually deny access to the whole server, and then only allow a few specific directories). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-73"></span></li><li><p class="line862">An <strong>Alias</strong> is set up to redirect requests from <tt class="backtick">/moin_static160/</tt> (in the URL - see also <tt class="backtick">url_prefix_static</tt> configuration variable) to the <tt class="backtick">htdocs</tt> directory (in the <tt class="backtick">share</tt> directory, as discussed at the bottom of <a href="http://master17.moinmo.in/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>). Please note that <tt class="backtick">url_prefix_static</tt> will change with every moin release! <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-74"></span></li><li><p class="line862">A <strong>ScriptAlias</strong> is set up to redirect requests from whatever you want (we suggest you use your instance name, for example <tt class="backtick">/mywiki</tt>) to the CGI script you just copied. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-76"></span></li></ul><p class="line874">The following commands will add two lines at the bottom of your Apache config file. These lines only cover the last two items listed above. You have to check the first one by yourself (there is too much variation in Linux distributions). Note that you may have to move the two lines to the appropriate place in your config file -- maybe near other similar lines. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-78"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-79"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-80"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-81"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-82"></span><pre>&gt; echo "" &gt;&gt;/etc/httpd/httpd.conf
+&gt; echo "Alias /moin_static160/ \"$SHARE/htdocs/\"" &gt;&gt;/etc/httpd/httpd.conf
+&gt; echo "ScriptAlias /mywiki \"$WIKILOCATION/$INSTANCE/cgi-bin/moin.cgi\"" &gt;&gt;/etc/httpd/httpd.conf</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-83"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-84"></span><p class="line874">So this would add two lines like the both below to a config file (possibly you use one for each virtual server): <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-85"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-86"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-87"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-89"></span><pre>Alias /moin_static160/ /usr/local/share/htdocs/
+ScriptAlias /mywiki /usr/local/share/moin/mywiki/cgi-bin/moin.cgi</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-91"></span><p class="line862">You only need to define the Alias for <tt class="backtick">htdocs</tt> once, no matter how many wikis you run with the 1.6.0 version of moin. You need to define a different script alias for each wiki instance you intend to run. So you could also define the Alias in a central Apache configuration file and only define the <a class="nonexistent" href="http://master17.moinmo.in/ScriptAlias">ScriptAlias</a> in virtual host configurations. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-92"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-93"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureMoinMoin">Configure MoinMoin</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-94"></span><p class="line862">Finally, check that the <tt class="backtick">wikiconfig.py</tt> file in the instance directory contains correct paths for: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-95"></span><ul><li><p class="line891"><tt class="backtick">url_prefix_static</tt> (static stuff like css/img/js) <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-96"></span></li><li><p class="line891"><tt class="backtick">data_dir</tt> (the instance data directory) and <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-97"></span></li><li><p class="line891"><tt class="backtick">data_underlay_dir</tt> (the instance underlay directory). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-98"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-99"></span></li></ul><p class="line862">You can use relative paths for the directories, but note that they are relative to the CGI script, not the configuration file! Better <strong>use absolute paths</strong>, and save yourself some headaches. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-100"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-101"></span><p class="line874">Here are the settings you should have in the config file if you followed all our suggestions: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-102"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-103"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-104"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-105"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-106"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-107"></span><pre>    data_dir = '../data/'  # better use absolute path
+    data_underlay_dir = '../underlay/'  # better use absolute path
+    url_prefix_static = '/moin_static160' # depends on moin version</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-108"></span><p class="line862">There are other settings you will likely want to alter, look at the bottom of <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> for more details about them. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-109"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-110"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Testthewiki">Test the wiki</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-111"></span><p class="line862">Everything should work fine now. It is time to <strong>restart the Apache server</strong> (usually with "<tt class="backtick">/etc/init.d/apache&nbsp;restart</tt>", sometimes with "<tt class="backtick">apachectl&nbsp;restart</tt>") and perform the following steps: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-112"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-113"></span><ul><li><p class="line862">Run the <em>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</em>: connect to "<tt class="backtick">http://127.0.0.1/mywiki?action=test</tt>" (or the name and port you have defined in the Apache configuration file). Verify that the displayed information is correct. Check that the directories listed under <em>Checking directories...</em> are <em>OK</em>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-114"></span></li><li><p class="line862">Access your new wiki with the URL "<tt class="backtick">http://127.0.0.1/mywiki/</tt>" (or the name and port you have defined in the Apache configuration file). You should see some wiki page - read it. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-115"></span></li><li><p class="line862">Then go to the <a href="http://master17.moinmo.in/WikiSandBox">WikiSandBox</a> page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-116"></span></li><li>Try to edit it and save your changes. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-117"></span></li><li><p class="line862">If that works, see if your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-118"></span></li><li><p class="line862">If you see them, congratulations, your new wiki works! <img alt=":)" height="15" src="/moin_static170/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-119"></span></li></ul><p class="line874">If something goes wrong, have a look at Troubleshooting, at the bottom of this page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-120"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-121"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-122"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheOnLinux.SimpleUserScenario">Simple User Scenario</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-123"></span><p class="line862">On machines shared by many people, simple users typically have no access to the root account, cannot modify the <tt class="backtick">httpd.conf</tt> file, and cannot copy files into the system-wide <tt class="backtick">cgi-bin</tt> and <tt class="backtick">htdocs</tt> directories. In that case, Apache can be set up so that each user can host a web site in the home directory of his or her shell account, using the <tt class="backtick">UserDir</tt> directive. If the machine administrator decides to use it, all URLs that start with "<tt class="backtick">/~username</tt>" will be redirected to a directory in the users' home directories, where they have write permission and can install Moin<tt class="backtick"></tt>Moin. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-124"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-125"></span><p class="line862">As an example, we will consider the case of a user named "<tt class="backtick">mm</tt>". Of course, wherever you see "<tt class="backtick">mm</tt>" below, you will replace it with your own username. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-126"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-127"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Makesure.2BAC8Afg-usernameworks">Make sure /~username works</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-128"></span><p class="line862">The home directory installation can only work if the administrator (root) has allowed it. So, the first step is of course to check that it works. Typically, Apache is set up so that the <tt class="backtick">public_html</tt> subdirectory in the home directory is used as the web site root. So, the first first step is to check if that directory exists. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-129"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-130"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-131"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-132"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-133"></span><pre>&gt; ls -ld ~/public_html
+drwxr-xr-x   2 mm       users        4096 Nov 30 00:29 public_html</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-134"></span><p class="line874">If the directory does not exist, create it, and be sure it can be read and entered by the web server. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-135"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-136"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-137"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-138"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-139"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-140"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-141"></span><pre>&gt; mkdir public_html
+&gt; chmod a+rx public_html
+&gt; ls -ld ~/public_html
+drwxr-xr-x   2 mm       users        4096 Nov 30 00:35 public_html</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-142"></span><p class="line862">Now, check if the "<tt class="backtick">/~mm</tt>" URL works: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-143"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-144"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-145"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-146"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-147"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-148"></span><pre>&gt; lynx -error_file=/dev/stderr -dump http://localhost/~mm/ &gt;/dev/null
+URL=http://localhost/~mm/ (GET)
+STATUS=HTTP/1.1 200 OK</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-149"></span><p class="line862">If you get a "<tt class="backtick">200&nbsp;OK</tt>" response code, then it works, and you can go on to the next check. If you get a "<tt class="backtick">403&nbsp;Forbidden</tt>" or a "<tt class="backtick">404&nbsp;Not&nbsp;Found</tt>" response, then maybe something is wrong with your directory, or maybe the whole thing has not been enabled by your administrator. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-150"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-151"></span><ul><li><p class="line862">Check the permissions for your home directory (<tt class="backtick">~</tt>) and your <tt class="backtick">public_html</tt> directory. The first one should at least end with "<tt class="backtick">--x</tt>", and the second one, as we saw above, with "<tt class="backtick">r-x</tt>". <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-152"></span></li><li><p class="line862">It also possible that the administrator has set up another name for the personal web site directory. "<tt class="backtick">public_html</tt>" is just the usual default, but anything can actually be used. There is no way to know, you have to ask the administrator (root). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-153"></span></li><li>Finally, if the personal web site feature is disabled, maybe you can ask the administrator to enable it? <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-154"></span></li></ul><p class="line874">Once you have checked you can read the files in the directory, you need to check that you are also able to execute CGI scripts in that directory. Use the following commands to create a simple CGI script in the appropriate location: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-155"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-156"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-157"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-158"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-159"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-160"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-161"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-162"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-163"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-164"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-165"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-166"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-167"></span><pre>&gt; mkdir -p ~/public_html/cgi-bin
+&gt; cat &gt; ~/public_html/cgi-bin/test.cgi
+#!/bin/sh
 echo Content-Type: text/plain
 echo
-echo "Your web server is running as:"
-id
 echo "CGI scripts work"
-echo "Now we try to invoke Python interpreters and get their versions:"
-echo "Your default version of python is:"
-python -V 2&gt;&amp;1
-echo 
-echo "Available versions of python are:"
-python2.2 -V 2&gt;&amp;1 &amp;&amp; which python2.2
-python2.3 -V 2&gt;&amp;1 &amp;&amp; which python2.3
-python2.4 -V 2&gt;&amp;1 &amp;&amp; which python2.4
-python2.5 -V 2&gt;&amp;1 &amp;&amp; which python2.5
-echo "Finished."
+&lt;CTRL-D&gt;
+&gt; chmod a+rx ~/public_html/cgi-bin/test.cgi
+&gt; lynx -dump http://localhost/~jh/cgi-bin/test.cgi
+CGI scripts work</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-168"></span><p class="line862">If you get anything else than "<tt class="backtick">CGI&nbsp;scripts&nbsp;work</tt>", then something went wrong. Check the directory permissions as above, try other names (or ask about them). The sad truth might be that you are not allowed to execute CGI scripts. You would then have to ask the administrator (root) for that permission. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-169"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-170"></span><p class="line862">Once you get it, you can set up your wiki instance in the <tt class="backtick">public_html</tt> directory. <img alt=":)" height="15" src="/moin_static170/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-171"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-172"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Createawikiinstance-1">Create a wiki instance</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-173"></span><p class="line862">Creating a wiki instance involves copying files around and setting appropriate permissions. Read <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> and follow the steps described there. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-174"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-175"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Installthehtdocsfiles">Install the htdocs files</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-176"></span><p class="line862">The web server needs to access these files, so we need to copy them into the "<tt class="backtick">public_html</tt>" directory. Just use this: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-177"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-178"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-179"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-180"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-181"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-182"></span><pre>&gt; cd ~/public_html
+&gt; cp -R ~/share/moin/htdocs moin_static160
+&gt; chmod -R a+rX moin_static160</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-183"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-184"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Installmoin.cgi-1">Install moin.cgi</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-185"></span><p class="line862">There is one last file you need to copy, the bridge between Apache and Moin<tt class="backtick"></tt>Moin: the CGI script that Apache will call every time a wiki page is requested, and that will in turn invoke all the Moin<tt class="backtick"></tt>Moin components to handle the request. You need to put this file in a directory for which CGI scripts execution is enabled. By default, this should work: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-186"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-187"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-188"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-189"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-190"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-191"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-192"></span><pre>&gt; cd ~/public_html
+&gt; mkdir cgi-bin
+&gt; cp $SHARE/server/moin.cgi cgi-bin
+&gt; chmod -R a+rx cgi-bin</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-193"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-194"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Configuremoin.cgi-1">Configure moin.cgi</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-195"></span><p class="line862">When <tt class="backtick">moin.cgi</tt> is launched, it imports a Moin<tt class="backtick"></tt>Moin module (that in turn imports other modules and the configuration file). Since everything has been installed in your home directory, it is likely none of these will be found. Edit the <tt class="backtick">moin.cgi</tt> script to correct that. Add these lines near the top of the file: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-196"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-197"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-198"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-199"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-200"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-201"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-202"></span><pre>import sys
+sys.path.insert(0, '/home/mm/lib/python2.4')
+sys.path.insert(0, '/home/mm/lib/python2.4/site-packages')
+sys.path.insert(0, '/home/mm/share/moin/mywiki')</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-203"></span><p class="line862">Of course, you need to adapt the paths to your situation. The first two lines should help locate the Moin<tt class="backtick"></tt>Moin modules, the last one should help locate the <tt class="backtick">wikiconfig.py</tt> file. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-204"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-205"></span><p class="line867"><strong>Note:</strong> You might also need to edit the first line of the file, to point to the correct version of Python. The default should be fine, but a line like "<tt class="backtick">#!&nbsp;/usr/bin/python2.4</tt>" might help you if the default does not work. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-206"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-207"></span><p class="line867"><strong>Note 2:</strong> In this file there is a line reading <tt>request&nbsp;=&nbsp;RequestCGI()</tt>. If you have a complex mod_rewrite case, you might want to add <tt>properties&nbsp;=&nbsp;{'script_name':&nbsp;'/mywiki'}&nbsp;</tt> in the parentheses. This will let <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> generate URLs that start with <tt>/mywiki</tt> and not the path that the webserver passed to <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a>: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-208"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-209"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-210"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-211"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-212"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-213"></span><pre>def handle_request(req, env, form):
+    request = RequestCGI(req, env, form, properties = {'script_name': '/mywiki'})
+    request.run()</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-214"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-215"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.ConfigureMoinMoin-1">Configure MoinMoin</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-216"></span><p class="line862">Finally, check that the <tt class="backtick">wikiconfig.py</tt> file in the instance directory contains correct paths for <tt class="backtick">url_prefix_static</tt> (the htdocs directory), <tt class="backtick">data_dir</tt> (the instance data directory) and <tt class="backtick">data_underlay_dir</tt> (the instance underlay directory). You can use relative paths for the directories, but note that they are relative to the CGI script, not the configuration file! It is better to use <strong>absolute paths</strong>, and save yourself some headaches. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-217"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-218"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-219"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-220"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-221"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-222"></span><pre>    data_dir = '/home/mm/share/moin/mywiki/data/'
+    data_underlay_dir = '/home/mm/share/moin/mywiki/underlay/'
+    url_prefix = '/~mm/moin_static160'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-223"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Testthewiki-1">Test the wiki</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-224"></span><p class="line874">Everything should work fine, now. It is time to perform the following steps: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-225"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-226"></span><ul><li><p class="line862">Run the <em>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</em>: <tt>&gt;&nbsp;lynx&nbsp;-dump&nbsp;http://localhost/~mm/cgi-bin/moin.cgi?action=test</tt> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-227"></span></li><li><p class="line862">If it worked, try to access your new-born wiki with the URL "<tt class="backtick">http://127.0.0.1/~mm/cgi-bin/moin.cgi</tt>". You should see some wiki page - read it. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-228"></span></li><li><p class="line862">Now go to the <a href="http://master17.moinmo.in/WikiSandBox">WikiSandBox</a> page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-229"></span></li><li>Try to edit it and save your changes. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-230"></span></li><li><p class="line862">If that works, see if your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-231"></span></li><li><p class="line862">If you see them, congratulations, you have a new wiki! <img alt=":)" height="15" src="/moin_static170/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-232"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-233"></span></li></ul><p class="line874">If something goes wrong, have a look at Troubleshooting, below. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-234"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-235"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Troubleshooting">Troubleshooting</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-236"></span><p class="line862">See also <a href="http://master17.moinmo.in/HelpOnInstalling/TroubleShooting">../TroubleShooting</a> for generic stuff. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-237"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-238"></span><p class="line862">The first thing to do when your wiki does not work as expected is to issue the command "<tt class="backtick">tail&nbsp;/var/log/httpd/error_log</tt>" to display the most recent errors. Usually, you will get a hint on what went wrong, like missing file system permissions. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-239"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-240"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-ApacheOnLinux.Addingpermissiontoservethehtdocsdirectory">Adding permission to serve the htdocs directory</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-241"></span><p class="line862">In some (sane) Linux distributions (like SuSE 9.0) serving directories other than the document-root "<tt class="backtick">/srv/www/htdocs</tt>" with Apache is switched off by default for security reasons in "<tt class="backtick">/etc/httpd/httpd.conf</tt>" (or for Apache2 "<tt class="backtick">/etc/apache2/httpd.conf</tt>"): <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-242"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-243"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-244"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-245"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-246"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-247"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-248"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-249"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-250"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-251"></span><pre># forbid access to the entire filesystem by default
+&lt;Directory /&gt;
+  Options None
+  AllowOverride None
+  Order deny,allow
+  Deny from all
+&lt;/Directory&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-252"></span><p class="line862">To allow Apache to serve directories outside of the document root you have to add these lines to "<tt class="backtick">/etc/httpd/httpd.conf</tt>" (in SuSE it is recommended to create a new "<tt class="backtick">http.conf.local</tt>" and include this file in "<tt class="backtick">/etc/sysconfig/apache2</tt>"): <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-253"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-254"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-255"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-256"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-257"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-258"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-259"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-260"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-261"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-262"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-263"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-264"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-265"></span><pre>Alias /wiki/ "/usr/share/moin/htdocs/"
+&lt;Directory "/usr/share/moin/htdocs/"&gt;
+   Order deny,allow
+   Allow from all
+&lt;/Directory&gt;
+ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi"
+&lt;Directory "/usr/share/moin/mywiki/cgi-bin"&gt;
+   Order deny,allow
+   Allow from all
+&lt;/Directory&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-266"></span><p class="line874">Of course, you need to adapt the paths to your particular situation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.line-267"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheOnLinux.bottom"></span></div> <span class="anchor" id="line-54"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-55"></span><span class="anchor" id="fastcgi-install"></span> <span class="anchor" id="line-56"></span>
+<h1>FastCGI Setup using Apache or Lighttpd</h1>
+<div dir="ltr" id="HelpOnInstalling.2BAC8-FastCgi.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.top"></span>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-9"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-10"></span><p class="line874">FastCGI is a method which enables a web server to communicate with long-running scripts. This has the advantage that the script is only <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-11"></span>started and initialized one time, and that data could be cached in memory from request to request, enhancing the performance of the CGI application. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-12"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-13"></span><ul><li style="list-style-type:none"><p class="line891"><img alt="/!\" height="15" src="/moin_static170/modern/img/alert.png" title="/!\" width="15" /> Follow the basic installation for your operating system as described in other parts of the <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> installation documentation. This is <a href="http://master17.moinmo.in/HelpOnInstalling/BasicInstallation">HelpOnInstalling/BasicInstallation</a> and <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">HelpOnInstalling/WikiInstanceCreation</a>, or <a href="http://master17.moinmo.in/HelpOnInstalling/ApacheOnLinux">HelpOnInstalling/ApacheOnLinux</a> in most cases.  <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-14"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-15"></span></li></ul><p class="line867"><div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li><ol><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.UsingMoinMoinwithFastCgi">Using MoinMoin with FastCgi</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.DeployingonApache">Deploying on Apache</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.Scriptoptions">Script options</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.FastCgiExternalServer">FastCgiExternalServer</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.FastCgiServer">FastCgiServer</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.ExampleforApache2onDebian">Example for Apache2 on Debian</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.Runningasanexternalapplicationand.2BAC8-oronWindows">Running as an external application and/or on Windows</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.FallbacktoCGIifFastCGIisnotavailable">Fallback to CGI if FastCGI is not available</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.Deployingonlighttpd">Deploying on lighttpd</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.UsingHTTPAuthentication">Using HTTP Authentication</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.MoinMoinStartupscript">MoinMoin Startup script</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-FastCgi.MacOSX.3AAddingMoinMoinstartupscript">Mac OS X: Adding MoinMoin startup script</a></li></ol></li></ol></li></ol></div><p class="line874"> <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-16"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-17"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-18"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-FastCgi.UsingMoinMoinwithFastCgi">Using MoinMoin with FastCgi</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-19"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-20"></span><p class="line874">For more general information: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-21"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-22"></span><ul><li><p class="line891"><a class="http" href="http://fastcgi.com">http://fastcgi.com</a> - FastCGI Homepage <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-23"></span></li><li><p class="line891"><a class="http" href="http://cryp.to/publications/fastcgi/">FastCGI — The Forgotten Treasure</a> (introduction) <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-24"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-25"></span></li></ul><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-FastCgi.DeployingonApache">Deploying on Apache</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-26"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-27"></span><p class="line862">To deploy <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> using FastCGI you need an apache with mod_fastcgi. Please refer to the documentation of mod_fastcgi ( <a class="http" href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi homepage</a> ). <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-28"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-29"></span><p class="line862">Don't forget to install the fastcgi Apache module (e.g. libapache2-mod-fastcgi). Then in places where the documentation refers to <tt class="backtick">moin.cgi</tt> you use <tt class="backtick">moin.fcg</tt> instead. Be sure that <strong>.fcg</strong> is handled by the FastCGI module (<tt class="backtick">AddHandler&nbsp;fastcgi-script&nbsp;.fcg</tt> in your apache config). <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-30"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-31"></span><p class="line862">Normally Apache will start CGI scripts with its own user and group, or with the user and group of the VirtualHost if you are using the suexec wrapper. To enable this with FastCGI you need to use <tt class="backtick">FastCgiWrapper&nbsp;On</tt> in your Apache config (check your distributions and/or FastCGI Documentation). <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-32"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-33"></span><p class="line874">Be sure to restart your Apache after you changed py files (i.e. the config) for a running FastCGI server, or you won't see any changes! <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-34"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-35"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.Scriptoptions">Script options</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-36"></span><p class="line874">No matter how and where you install or how you configure, you can add some options (in Apache config or as self-running process). Here is a list of some options. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-37"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-38"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-39"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.FastCgiExternalServer">FastCgiExternalServer</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-40"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-41"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-42"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-43"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-44"></span><pre>-host [hostname:port]     - The port and on what host name to respond.
+-idle-timeout [seconds]   - The number of seconds of inactivity allowed before request is aborted.</pre><p class="line874"> <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-45"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-46"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.FastCgiServer">FastCgiServer</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-47"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-48"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-50"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-51"></span><pre>-port [port]              - The port the application will use for communication with the web server.
+-idle-timeout [seconds]   - The number of seconds of inactivity allowed before request is aborted.</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-52"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-53"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-54"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.ExampleforApache2onDebian">Example for Apache2 on Debian</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-55"></span><p class="line874">Edit the /etc/apache2/conf.d/your_wiki: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-56"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-57"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-58"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-59"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-60"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-61"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-62"></span><pre>&lt;IfModule mod_fastcgi.c&gt;
+   AddHandler fastcgi-script .fcgi .fcg
+   FastCgiServer /your/path/to/moin.fcg -idle-timeout 60 -processes 1
+   ScriptAlias /your_wiki "/your/path/to/moin.fcg"
+&lt;/IfModule&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-63"></span><ul><li>number of processes depends on your hardware.. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-64"></span></li></ul><p class="line874">Expand the Apache installation: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-65"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-66"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-67"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-68"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-69"></span><pre>apt-get install libapache2-mod-fastcgi
+a2enmod fastcgi
+apache2ctl graceful</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-70"></span><p class="line874">Now, your wiki should respond a little faster. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-72"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.Runningasanexternalapplicationand.2BAC8-oronWindows">Running as an external application and/or on Windows</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-74"></span><p class="line867"><em>(see also <a href="http://master17.moinmo.in/HelpOnInstalling/ApacheOnWin32withFastCgi">../ApacheOnWin32withFastCgi</a> for a Windows-specific how-to)</em> <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-76"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-77"></span><p class="line867">MoinMoin can be run as an external application that answers FastCGI request via a local TCP/IP socket. This works on Windows as well. All you need to do (after having installed <tt class="backtick">mod_fastcgi</tt> and a working MoinMoin instance) is this: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-78"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-79"></span><ol type="1"><li>Select a port number for the internal communication. It should be larger than 1023. For this example, we chose 8888 (just for fun). <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-80"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-81"></span></li><li class="gap"><p class="line862">Add the following lines to your httpd.conf:<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-82"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-83"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-84"></span><pre>Alias /moin.fcg "/your/path/to/moin.fcg"
+FastCgiExternalServer "/your/path/to/moin.fcg" -host localhost:8888</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-85"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-86"></span></li><li class="gap"><p class="line862">Edit <tt class="backtick">moin.fcg</tt>. Replace<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-87"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-88"></span><pre>fcg = thfcgi.FCGI(handle_request, max_requests=max_requests, backlog=backlog, max_threads=max_threads)</pre><p class="line862"> with <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-89"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-90"></span><pre>fcg = thfcgi.FCGI(handle_request, 0, 8888, max_requests=max_requests, backlog=backlog, max_threads=max_threads)</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-91"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-92"></span></li><li class="gap"><p class="line862">Start the file <tt class="backtick">moin.fcg</tt> manually like a Python script:<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-94"></span><pre>python moin.fcg</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-95"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-96"></span></li><li class="gap">Start Apache. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-97"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-98"></span></li></ol><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.FallbacktoCGIifFastCGIisnotavailable">Fallback to CGI if FastCGI is not available</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-100"></span><p class="line862">Install and test <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> according to <a href="http://master17.moinmo.in/HelpOnInstalling/ApacheOnLinux">HelpOnInstalling/ApacheOnLinux</a>. Then make and test the changes to run mod_fastcgi. If you are satisfied, you can add the following block to your apache config: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-102"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-103"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-104"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-105"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-106"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-107"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-108"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-109"></span><pre>&lt;IfModule !mod_fastcgi.c&gt;
+    ScriptAlias /mywiki "/your/path/to/moin.cgi"
+&lt;/IfModule&gt;
+&lt;IfModule mod_fastcgi.c&gt;
+    AddHandler fastcgi-script .fcg
+    ScriptAlias /mywiki "/your/path/to/moin.fcg"
+&lt;/IfModule&gt;</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-110"></span><p class="line874">Now Apache will use mod_fastcgi if available and otherwise use the slow cgi script. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-111"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-112"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-FastCgi.Deployingonlighttpd">Deploying on lighttpd</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-113"></span><p class="line874">This is about running a wiki under "/" URL with lighttpd. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-114"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-115"></span><p class="line874">The moin.fcg processes will get spawned by lighttpd automatically (thus, if you want to restart moin, just restart lighttpd). <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-116"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-117"></span><p class="line874">It will also take care about handling robots.txt and favicon.ico correctly. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-118"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-119"></span><p class="line874">First add fastcgi and rewriting support to your lighttpd.conf (if you don't already have it): <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-120"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-121"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-122"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-123"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-124"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-125"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-126"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-127"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-128"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-129"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-130"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-131"></span><pre>server.modules              = (
+                                "mod_access",
+                                "mod_rewrite",      # &lt;--- IMPORTANT!
+                                "mod_status",
+                                "mod_fastcgi",      # &lt;--- IMPORTANT!
+                                "mod_accesslog",
+                                "mod_redirect",
+                                "mod_auth",
+                                "mod_expire",
+)</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-132"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-133"></span><p class="line874">Then configure it to run moin.fcg for your wiki site and also serve the static stuff: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-134"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-135"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-136"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-137"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-138"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-139"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-140"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-141"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-142"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-143"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-144"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-145"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-146"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-147"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-148"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-149"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-150"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-151"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-152"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-153"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-154"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-155"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-156"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-157"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-158"></span><pre>$HTTP["host"] =~ "^(www\.)?example\.org" {
+    url.rewrite-once = (
+        "^/robots.txt" =&gt; "/robots.txt",
+        "^/favicon.ico" =&gt; "/favicon.ico",
+        "^/moin_static161/(.*)" =&gt; "/moin_static161/$1",
+        "^/(.*)" =&gt; "/wiki-engine/$1"
+    )
+    server.document-root        = "/srv/org.example/htdocs/"
+    $HTTP["url"] =~ "^/wiki-engine/" {
+      fastcgi.server = ( "/wiki-engine" =&gt;
+        (( "docroot"   =&gt; "/",
+           "min-procs" =&gt; 10,
+           "max-procs" =&gt; 10,
+           "max-load-per-proc" =&gt; 2,
+           # allocate successive port numbers for each process, starting with "port"
+           "bin-path"  =&gt; "/srv/org.example/bin/moin.fcg",
+           "host"      =&gt; "127.0.0.1",
+           "port"      =&gt; 3060,
+           "check-local" =&gt; "disable",
+        ))
+      )
+    }
+}</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-159"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-160"></span><p class="line874">Finally adapt moin.fcg: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-161"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-162"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-163"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-164"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-165"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-166"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-167"></span><pre>class Config(FastCgiConfig):
+    loglevel_file = logging.INFO
+    logPath = '/srv/org.example/logs/moin.log'
+    max_requests = 1000
+    properties = {'script_name': '/'}  # &lt;--- IMPORTANT!</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-168"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-169"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.UsingHTTPAuthentication">Using HTTP Authentication</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-170"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-171"></span><p class="line874">lighttpd mod_fastcgi does not add the AUTH_TYPE variable to the cgi environment, which will cause http auth in moin to fail.   <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-172"></span>See <a class="http" href="http://trac.lighttpd.net/trac/ticket/889">http://trac.lighttpd.net/trac/ticket/889</a> for more information, and an attached diff file to correct to issue. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-173"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-174"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.MoinMoinStartupscript">MoinMoin Startup script</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-175"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-176"></span><p class="line862">Here is a startup script for Mac OS X, using <a class="nonexistent" href="http://master17.moinmo.in/DarwinPortsStartup">DarwinPortsStartup</a> system. It is probably useful for other unix like platforms. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-177"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-178"></span><p class="line867"><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-179"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-180"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-181"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-182"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-183"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-184"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-185"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-186"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-187"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-188"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-189"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-190"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-191"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-192"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-193"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-194"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-195"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-196"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-197"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-198"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-199"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-200"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-201"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-202"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-203"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-204"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-205"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-206"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-207"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-208"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-209"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-210"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-211"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-212"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-213"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-214"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-215"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-216"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-217"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-218"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-219"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-220"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-221"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-222"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-223"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-224"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-225"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-226"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-227"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-228"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-229"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-230"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-231"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-232"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-233"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-234"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-235"></span><pre># Start and stop multiple moin fast cgi instances runnings on PORTS
 
-</pre><a class="attachment" href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation?action=AttachFile&amp;do=get&amp;target=pythontest.cgi" title="attachment:pythontest.cgi">pythontest.cgi</a> <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><p class="line874" />If it doesn't display "CGI scripts work", well, then CGI scripts don't work. If it doesn't show one or more Python version numbers, then Python is not correctly installed. In both cases, before you can proceed, you will have to get in touch with the administrator of the server so that the problems get corrected. <span class="anchor" id="line-42"></span><span class="anchor" id="line-43"></span><p class="line862" />Also be sure to read <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/ApacheOnLinuxFtp">../ApacheOnLinuxFtp</a> after you've completed the <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> illustrated here. <span class="anchor" id="line-44"></span><span class="anchor" id="line-45"></span><p class="line867" />
-<h1 id="head-119b1acf8110bb618e4f366c3d1f8a35ad625f75">Download MoinMoin</h1>
-<span class="anchor" id="line-46"></span><span class="anchor" id="line-47"></span><p class="line862" />To download the distribution archive, go to the <a class="http" href="http://sourceforge.net/project/showfiles.php?group_id=8482">download area</a> and fetch the latest archive. <span class="anchor" id="line-48"></span><span class="anchor" id="line-49"></span><p class="line862" />The next step is to unpack the distribution archive (which you have done already if you are reading this text from your hard drive). If you read this on the web, the distribution comes in a versioned <tt class="backtick">.tar.gz</tt> archive, which you can unpack as shown below. <span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><ul><li>On Windows <span class="anchor" id="line-52"></span><ul><li><p class="line862" />You can use recent versions of programs like Win<tt class="backtick"></tt>Zip, Win<tt class="backtick"></tt>Rar, and Win<tt class="backtick"></tt>Ace, which handle .tar.gz kind of archives. <span class="anchor" id="line-53"></span></li><li><p class="line862" />At the command prompt, you can use <a class="http" href="http://gnuwin32.sourceforge.net/packages/gzip.htm">GNU gzip</a> and <a class="http" href="http://gnuwin32.sourceforge.net/packages/tar.htm">GNU tar</a> for Windows. <span class="anchor" id="line-54"></span></li></ul></li><li>On Linux <span class="anchor" id="line-55"></span><ul><li>You can use your favorite file manager -- it should be able to unpack them. <span class="anchor" id="line-56"></span></li><li><p class="line862" />At any shell prompt, you can use the <tt class="backtick">tar</tt> command. <span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span></li></ul></li></ul><p class="line862" />The distribution archive will always unpack into a directory named <tt class="backtick">moin-&lt;version&gt;</tt>, for example <tt class="backtick">moin-1.5</tt>. <span class="anchor" id="line-59"></span><span class="anchor" id="line-60"></span><p class="line862" />Here is how you would unpack the archive (using GNU tar) and enter the directory with the Moin<tt class="backtick"></tt>Moin files: <span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span><pre>&gt; tar xzf moin-1.5.0.tar.gz
-<span class="anchor" id="line-63"></span>&gt; cd moin-1.5.0
-<span class="anchor" id="line-64"></span></pre><span class="anchor" id="line-65"></span><span class="anchor" id="line-66"></span><p class="line867" />
-<h1 id="head-a84e58c8b4256bd645b9c47b5a900219a356259f">Install MoinMoin</h1>
-<span class="anchor" id="line-67"></span><span class="anchor" id="line-68"></span><p class="line862" />You can install Moin<tt class="backtick"></tt>Moin to either: <span class="anchor" id="line-69"></span><ul><li>a system location (if you have the necessary rights to do that -- on Linux you need to be root) <span class="anchor" id="line-70"></span></li><li><p class="line862" />some specific location, like your home directory (Linux) or <tt class="backtick">C:\moin</tt> (Windows). <span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span></li></ul><p class="line874" />The installation to a system location is easier, so choose that if possible. <span class="anchor" id="line-73"></span><span class="anchor" id="line-74"></span><p class="line867" /><img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> If you have several versions of Python installed, please use the same version for setup and for running the wiki. Usually, the latest Python version will get the best results. <span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><p class="line862" />If you have problems with the <tt class="backtick">setup.py</tt> install step, try using the command: <span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><pre>&gt; python -v setup.py --quiet install --record=install.log
-<span class="anchor" id="line-79"></span></pre><span class="anchor" id="line-80"></span><span class="anchor" id="line-81"></span><p class="line862" />The additional <tt class="backtick">-v</tt> flag should provide you detailed verbose messages every step of the way. <span class="anchor" id="line-82"></span><span class="anchor" id="line-83"></span><p class="line867" /><img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> On Linux, if u get an error like <tt class="backtick">Invalid&nbsp;Python&nbsp;installation:&nbsp;cannot&nbsp;find&nbsp;/usr/lib/Python2.x/config/Makefile</tt>, you may not have the python module <strong><tt class="backtick">distutils</tt></strong> installed, it's usually a part of the <strong>Python development libarary (<tt class="backtick">python-dev</tt>)</strong>. Some Linux distributions may not have installed it by default. For example, on Mandrake you need to install the <strong><tt class="backtick">python-devel</tt></strong> package, on Debian it's called <strong><tt class="backtick">python-dev</tt></strong>. <span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><p class="line867" />
-<h2 id="head-640b21abea127e7ac4b48c938607c233b7119bd5">Installing in the default system location</h2>
-<span class="anchor" id="line-86"></span><span class="anchor" id="line-87"></span><p class="line867" /><span class="anchor" id="line-88"></span><pre>&gt; python setup.py --quiet install --record=install.log
-<span class="anchor" id="line-89"></span></pre><span class="anchor" id="line-90"></span><span class="anchor" id="line-91"></span><p class="line862" />This installs Moin<tt class="backtick"></tt>Moin to the default system location (typically the Python directory, for example on Linux, inside <tt class="backtick">/usr/lib</tt> and <tt class="backtick">/usr/share</tt>). Look at the <tt class="backtick">install.log</tt> file to see what was installed, and where. <span class="anchor" id="line-92"></span><span class="anchor" id="line-93"></span><ul><li>Mac OS X note: use the command: <span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><pre>python setup.py install --install-data='/usr/local'
-<span class="anchor" id="line-96"></span></pre><span class="anchor" id="line-97"></span>This will install the shared files to '/usr/local/share/moin', instead of an inconvenient location in the System folder. <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span></li></ul><p class="line867" />
-<h2 id="head-ae8ab55eb5e8c11d4fd1eb06e12d69f1b33d411b">Installing in the home directory or another specific location</h2>
-<span class="anchor" id="line-100"></span><span class="anchor" id="line-101"></span><p class="line874" />Linux example, installing in the home directory: <span class="anchor" id="line-102"></span><span class="anchor" id="line-103"></span><pre>&gt; python setup.py --quiet install --prefix=$HOME --record=install.log
-<span class="anchor" id="line-104"></span></pre><span class="anchor" id="line-105"></span><span class="anchor" id="line-106"></span><p class="line862" />Windows example, installing in the <tt class="backtick">C:\moin</tt> directory: <span class="anchor" id="line-107"></span><span class="anchor" id="line-108"></span><pre>&gt; python setup.py --quiet install --prefix="C:\moin" --record=install.log
-<span class="anchor" id="line-109"></span></pre><span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><p class="line862" />All Moin<tt class="backtick"></tt>Moin files will then be installed inside those directories, see <tt class="backtick">install.log</tt> to know which files were installed, and where. <span class="anchor" id="line-112"></span><span class="anchor" id="line-113"></span><p class="line867" /><strong>Note:</strong> You will likely see the following warning: <span class="anchor" id="line-114"></span><span class="anchor" id="line-115"></span><ul><li style="list-style-type:none"><p class="line891" /><tt class="backtick">warning:&nbsp;install:&nbsp;modules&nbsp;installed&nbsp;to&nbsp;'C:\moin\',&nbsp;which</tt><br />
- <span class="anchor" id="line-116"></span><tt class="backtick">is&nbsp;not&nbsp;in&nbsp;Python's&nbsp;module&nbsp;search&nbsp;path&nbsp;(sys.path)&nbsp;--&nbsp;you'll</tt><br />
- <span class="anchor" id="line-117"></span><tt class="backtick">have&nbsp;to&nbsp;change&nbsp;the&nbsp;search&nbsp;path&nbsp;yourself</tt> <span class="anchor" id="line-118"></span><span class="anchor" id="line-119"></span></li></ul><p class="line862" />This means exactly what it says, you need to add your install directory to the search path of Python, or it won't find the Moin<tt class="backtick"></tt>Moin code. <span class="anchor" id="line-120"></span><span class="anchor" id="line-121"></span><p class="line862" />For example, if you are running using a webserver and standard CGI, edit <tt class="backtick">moin.cgi</tt> and add your installation directory to the Python path, like this: <span class="anchor" id="line-122"></span><span class="anchor" id="line-123"></span><pre>import sys
-<span class="anchor" id="line-124"></span>sys.path.insert(0, 'C:/moin')
-<span class="anchor" id="line-125"></span></pre><span class="anchor" id="line-126"></span><span class="anchor" id="line-127"></span><p class="line867" />
-<h1 id="head-d7d600c8dcfdd9270f4a6642566404ede510f46a">Test installation</h1>
-<span class="anchor" id="line-128"></span><span class="anchor" id="line-129"></span><p class="line862" />As a final step, if you have access to the shell or the command prompt, you can check that everything is correctly installed and ready to run. Start Python and type <tt class="backtick">import&nbsp;MoinMoin</tt>. Nothing should be displayed in response to this command. Example: <span class="anchor" id="line-130"></span><span class="anchor" id="line-131"></span><p class="line867" /><span class="anchor" id="line-132"></span><pre>&gt; python
-<span class="anchor" id="line-133"></span>Python 2.3.4 (#1, May 29 2004, 17:05:23)
-<span class="anchor" id="line-134"></span>[GCC 3.3.3] on linux2
-<span class="anchor" id="line-135"></span>Type "help", "copyright", "credits" or "license" for more information.
-<span class="anchor" id="line-136"></span>&gt;&gt;&gt; import MoinMoin
-<span class="anchor" id="line-137"></span>&gt;&gt;&gt;
-<span class="anchor" id="line-138"></span></pre><span class="anchor" id="line-139"></span><span class="anchor" id="line-140"></span><p class="line874" />If you get this instead: <span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span><p class="line867" /><span class="anchor" id="line-143"></span><pre>&gt;&gt;&gt; import MoinMoin
-<span class="anchor" id="line-144"></span>Traceback (most recent call last):
-<span class="anchor" id="line-145"></span>  File "&lt;stdin&gt;", line 1, in ?
-<span class="anchor" id="line-146"></span>ImportError: No module named MoinMoin
-<span class="anchor" id="line-147"></span>&gt;&gt;&gt;
-<span class="anchor" id="line-148"></span></pre><span class="anchor" id="line-149"></span><span class="anchor" id="line-150"></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="line-151"></span><span class="anchor" id="line-152"></span><p class="line867" />
-<h1 id="head-87a60f1d02c36fb1804b442815dba49cbc8adfe7">What has been installed</h1>
-<span class="anchor" id="line-153"></span><span class="anchor" id="line-154"></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="line-155"></span><span class="anchor" id="line-156"></span><p class="line867" /><img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> 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="line-157"></span><span class="anchor" id="line-158"></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> or <tt class="backtick">2.4</tt>. <span class="anchor" id="line-159"></span><span class="anchor" id="line-160"></span><p class="line862" />Look into <tt class="backtick">install.log</tt> to find out about following important locations: <span class="anchor" id="line-161"></span><span class="anchor" id="line-162"></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="line-163"></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="line-164"></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="line-165"></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="line-166"></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="line-167"></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="line-168"></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="line-169"></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="line-170"></span><span class="anchor" id="line-171"></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="line-172"></span><span class="anchor" id="bottom_Include_HelpOnInstalling/BasicInstallation"></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="Include_HelpOnInstalling/WikiInstanceCreation" lang="en"><span class="anchor" id="top_Include_HelpOnInstalling/WikiInstanceCreation"></span>
-<span class="anchor" id="line-8"></span><span class="anchor" id="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://moinmaster.wikiwikiweb.de/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="line-10"></span><span class="anchor" id="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 independant from the others, with a different configuration, different pages, different users, etc. <span class="anchor" id="line-12"></span><span class="anchor" id="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="line-14"></span><span class="anchor" id="line-15"></span><p class="line862" />You can use <a class="attachment" href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation?action=AttachFile&amp;do=get&amp;target=createinstance.sh" title="attachment:createinstance.sh">createinstance.sh</a> (a bash script that install the instance). <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867" />
-<h1 id="head-8c227c275465dec3f8e3b326d53f9566727c5648">Read this first</h1>
-<span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line867" />
-<h2 id="head-6e91ed0b234e903763a945b5249e7de8b726e5d7">Security warnings</h2>
-<span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862" /> <img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> <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="line-22"></span><span class="anchor" id="line-23"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862" /> <img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> <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="line-24"></span><span class="anchor" id="line-25"></span><p class="line867" />
-<h2 id="head-942d29849126a576afcc19bdbfd59c661739eb55">Note to Windows users</h2>
-<span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></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="line-28"></span><span class="anchor" id="line-29"></span><p class="line867" />
-<h1 id="head-66ec28f32e6870e96f6062a4a6ac77bbb4606109">Choose a wiki name</h1>
-<span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></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="line-32"></span><span class="anchor" id="line-33"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="&lt;!&gt;" height="15" src="wiki/htdocs/modern/img/attention.png" title="&lt;!&gt;" width="15" /> <strong>Do not use the name "wiki" - it is reserved for internal use. You would need a special setup to use this with CGI, and you can't use it at all with standalone or twisted server.</strong> <span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span></li></ul><p class="line862" />The name "<tt class="backtick">mywiki</tt>" is used as an example in the various commands below. <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><p class="line867" />
-<h1 id="head-379ea73c819b2c729ba9c2432b8a4c4b4c524f71">Choose a location</h1>
-<span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></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="line-40"></span><span class="anchor" id="line-41"></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="line-42"></span><span class="anchor" id="line-43"></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="line-44"></span><span class="anchor" id="line-45"></span><p class="line867" />
-<h1 id="head-951584cdd82db21218fc2ffd3945de602f8275c0">Collect some important information</h1>
-<span class="anchor" id="line-46"></span><span class="anchor" id="line-47"></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="line-48"></span><span class="anchor" id="line-49"></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="line-50"></span><span class="anchor" id="line-51"></span><ul><li><p class="line891" /><tt class="backtick">PREFIX</tt> is the prefix you used during the <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="line-52"></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://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a> <span class="anchor" id="line-53"></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="line-54"></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="line-55"></span><span class="anchor" id="line-56"></span></li></ul><p class="line874" />If you are an administrator, you also need to collect the following: <span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span><ul><li><p class="line891" /><tt class="backtick">USER</tt> is the user name of the web server <span class="anchor" id="line-59"></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="line-60"></span><span class="anchor" id="line-61"></span></li></ul><p class="line874" />Now, Linux folks, let's store these settings in memory: <span class="anchor" id="line-62"></span><span class="anchor" id="line-63"></span><pre>&gt; export PREFIX=/usr                # this might be something else
-<span class="anchor" id="line-64"></span>&gt; export SHARE=$PREFIX/share/moin   # this should be correct for most people
-<span class="anchor" id="line-65"></span>&gt; export WIKILOCATION=$SHARE        # this is just an example
-<span class="anchor" id="line-66"></span>&gt; export INSTANCE=mywiki            # this is just an example
-<span class="anchor" id="line-67"></span></pre><span class="anchor" id="line-68"></span><span class="anchor" id="line-69"></span><p class="line874" />Administrators also need the following two lines: <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><p class="line867" /><span class="anchor" id="line-72"></span><pre>&gt; export USER=www-data              # this is just an example
-<span class="anchor" id="line-73"></span>&gt; export GROUP=www-data             # this is just an example
-<span class="anchor" id="line-74"></span></pre><span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><p class="line867" />
-<h1 id="head-c3fc33e072973371ea739841440fb52175ddb9f6">Copy the files</h1>
-<span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></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="line-79"></span><span class="anchor" id="line-80"></span><p class="line874" />Linux folks need just type these commands: <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><pre>&gt; cd $WIKILOCATION
-<span class="anchor" id="line-83"></span>&gt; mkdir $INSTANCE                   # make a directory for this instance
-<span class="anchor" id="line-84"></span>&gt; cp -R $SHARE/data $INSTANCE       # copy template data directory
-<span class="anchor" id="line-85"></span>&gt; cp -R $SHARE/underlay $INSTANCE   # copy underlay data directory
-<span class="anchor" id="line-86"></span>&gt; cp $SHARE/config/wikiconfig.py $INSTANCE   # copy wiki configuration sample file
-<span class="anchor" id="line-87"></span></pre><span class="anchor" id="line-88"></span><span class="anchor" id="line-89"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> 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="line-90"></span><span class="anchor" id="line-91"></span></li></ul><p class="line867" />
-<h1 id="head-027e3666aea4dc02569ad386901ae9456bad5ae1">Set permissions</h1>
-<span class="anchor" id="line-92"></span><span class="anchor" id="line-93"></span><p class="line867" />
-<h2 id="head-3b8b040007c209e4621b176c8724b3bbcb755957">Administrators</h2>
-<span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></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="line-96"></span><span class="anchor" id="line-97"></span><p class="line874" />On Linux, the following commands should be enough: <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><pre>&gt; chown -R $USER.$GROUP $INSTANCE   # check that USER and GROUP are correct
-<span class="anchor" id="line-100"></span>&gt; chmod -R ug+rwX $INSTANCE         # USER.GROUP may read and write
-<span class="anchor" id="line-101"></span>&gt; chmod -R o-rwx $INSTANCE          # everybody else is rejected
-<span class="anchor" id="line-102"></span></pre><span class="anchor" id="line-103"></span><span class="anchor" id="line-104"></span><p class="line867" />
-<h2 id="head-19c5987edf26a8517fbf6cbee5ba5dd5f36ec280">Normal users</h2>
-<span class="anchor" id="line-105"></span><span class="anchor" id="line-106"></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 Unix, 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="line-107"></span><span class="anchor" id="line-108"></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="line-109"></span><span class="anchor" id="line-110"></span><p class="line874" />On Linux, the following commands will open the instance directory to the whole world: <span class="anchor" id="line-111"></span><span class="anchor" id="line-112"></span><pre>&gt; chmod -R a+rwX $INSTANCE
-<span class="anchor" id="line-113"></span></pre><span class="anchor" id="line-114"></span><span class="anchor" id="line-115"></span><p class="line867" /><strong>Note:</strong> <span class="anchor" id="line-116"></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="line-117"></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="line-118"></span><span class="anchor" id="line-119"></span><span class="anchor" id="line-120"></span></li></ul><p class="line867" />
-<h1 id="head-442871161f523855f2162b426248f0bb0523c289">Tune configuration</h1>
-<span class="anchor" id="line-121"></span><span class="anchor" id="line-122"></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="line-123"></span><span class="anchor" id="line-124"></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="15" src="wiki/htdocs/modern/img/smile.png" title=":)" width="15" /> Read the comments inside <tt class="backtick">wikiconfig.py</tt>, they will guide you through this process.  (Start with "Wiki identity", around line 25.) <span class="anchor" id="line-125"></span><span class="anchor" id="line-126"></span><div><table style="color: red"><tbody><tr>  <td><p class="line862" /> <img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> <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="line-127"></span><span class="anchor" id="line-128"></span><p class="line867" /><a href="http://moinmaster.wikiwikiweb.de/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="line-129"></span><span class="anchor" id="bottom_Include_HelpOnInstalling/WikiInstanceCreation"></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="Include_HelpOnInstalling/ApacheOnLinux" lang="en"><span class="anchor" id="top_Include_HelpOnInstalling/ApacheOnLinux"></span>
-<span class="anchor" id="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://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> on Linux with the Apache web server. <strong>You should have already performed the <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>. </strong>Installations on other Unices like FreeBSD are very similar. <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line874" />Two scenarios are possible. You might be the administrator (root) of the server, able to install and modify files almost anywhere on the machine, and notably able to modifiy the Apache configuration. You might also be a simple user, only able to write files into your home directory, and unable to alter the master Apache config file. The two scenarios are discussed below. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867" /><strong>Table of contents</strong> <div class="table-of-contents"><p class="table-of-contents-heading" />Contents<ol><li><a href="#head-5a61f5b0107edba120089e4251cd633be60b6e15">Administrator (root)</a><ol><li><a href="#head-c27688fbe7f65d67190a47ce8d32eba244ab0d01">Create a wiki instance</a></li><li><a href="#head-e3e9e08058bb0ae34c33f53367cd58d6c7411998">Install moin.cgi</a></li><li><a href="#head-408a7a283b2406c4e6b24646b25ec7996d5ff459">Configure moin.cgi</a></li><li><a href="#head-b02e2f66403a66cc3b1ff0ce2c7261cf44e4f0d4">Configure Apache</a></li><li><a href="#head-ffa39b171f9d130bb07a8481a5fff1a5a9065e86">Configure MoinMoin</a></li><li><a href="#head-0f7a0fb8dccf6a13b6042fa17e0d7cda751fe3f3">Test the wiki</a></li><li><a href="#head-52920da3312438e6a484347d4dfaa369b86cb521">Apache tricks</a></li></ol><li><a href="#head-e559f024646d8751eee1135ad5423247d72ab7fd">Simple user (home directory installation)</a><ol><li><a href="#head-6a39e2829f37fd34c569c2ffa768c9b3ec2289cc">Make sure /~username works</a></li><li><a href="#head-c27688fbe7f65d67190a47ce8d32eba244ab0d01-2">Create a wiki instance</a></li><li><a href="#head-ec9ce458a3f08281e5906f6d1e2e5cc008d620db">Install the htdocs files</a></li><li><a href="#head-e3e9e08058bb0ae34c33f53367cd58d6c7411998-2">Install moin.cgi</a></li><li><a href="#head-408a7a283b2406c4e6b24646b25ec7996d5ff459-2">Configure moin.cgi</a></li><li><a href="#head-ffa39b171f9d130bb07a8481a5fff1a5a9065e86-2">Configure MoinMoin</a></li><li><a href="#head-0f7a0fb8dccf6a13b6042fa17e0d7cda751fe3f3-2">Test the wiki</a></li></ol><li><a href="#head-3f286acb05ce4ad64240f788c78a8f915f59e34e">Troubleshooting</a><ol><li><a href="#head-b8c0d1c1aba9cd39d0d15f86ea33025f7f25d48d">Adding permission to serve the htdocs directory</a></li></ol></li></ol></div> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867" />
-<h2 id="head-5a61f5b0107edba120089e4251cd633be60b6e15">Administrator (root)</h2>
-<span class="anchor" id="line-16"></span><p class="line874" />Most GNU/Linux distributions come with Apache pre-installed. There is, however, some variation as to where exactly the various Apache files are located. You should consult your distribution manual, or ask on the appropriate discussion board. In the following paragraphs, we assume a (quite standard) file system layout with: <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><ul><li><p class="line891" /><tt class="backtick">/etc/httpd/httpd.conf</tt> - the main Apache configuration file <span class="anchor" id="line-19"></span></li><li><p class="line891" /><tt class="backtick">/var/log/httpd/error_log</tt> - the log file containing Apache error messages <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span></li></ul><p class="line862" />Some distributions use <tt class="backtick">apache</tt> instead of <tt class="backtick">httpd</tt> for the directory names, others may use weirder settings. <span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line867" />
-<h3 id="head-c27688fbe7f65d67190a47ce8d32eba244ab0d01">Create a wiki instance</h3>
-<span class="anchor" id="line-24"></span><p class="line874" />Creating a wiki instance involves copying files around and setting appropriate permissions. Before you can proceed, you need to know what user and group your Apache server runs as. The easiest way to know this is to issue this command: <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><p class="line867" /><span class="anchor" id="line-27"></span><pre>&gt; egrep "^User|^Group" /etc/httpd/httpd.conf
-<span class="anchor" id="line-28"></span>User wwwrun
-<span class="anchor" id="line-29"></span>Group nogroup
-<span class="anchor" id="line-30"></span></pre><span class="anchor" id="line-31"></span><span class="anchor" id="line-32"></span><p class="line862" />This shows a typical result: "<tt class="backtick">wwwrun.nogroup</tt>". Other common results are "<tt class="backtick">nobody.nogroup</tt>", "<tt class="backtick">apache.apache</tt>" and "<tt class="backtick">www-data.www-data</tt>". You can of course use your own. What matters is that you know which ones are in use, because you will need them to set file permissions. <span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span><p class="line862" />Once you have gathered this information, read <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> and follow the steps described there. <span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span><p class="line867" />
-<h3 id="head-e3e9e08058bb0ae34c33f53367cd58d6c7411998">Install moin.cgi</h3>
-<span class="anchor" id="line-37"></span><p class="line862" />There is one last file you need to copy, the bridge between Apache and Moin<tt class="backtick"></tt>Moin: the CGI script that Apache will call every time a wiki page is requested, and that will in turn invoke all the Moin<tt class="backtick"></tt>Moin components to handle the request. You can actually put this script anywhere you like (all the paths to the files Moin<tt class="backtick"></tt>Moin needs can be configured to match your filesystem layout), but for the sake of simplicity and security, we suggest you follow the instructions below, unless you think you know better. <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line862" />We will create a <tt class="backtick">cgi-bin</tt> subdirectory in the instance directory. Using the environment variables defined in <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a>, run the following commands: <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><p class="line867" /><span class="anchor" id="line-42"></span><pre>&gt; cd $WIKILOCATION/$INSTANCE
-<span class="anchor" id="line-43"></span>&gt; mkdir cgi-bin
-<span class="anchor" id="line-44"></span>&gt; cp $SHARE/server/moin.cgi cgi-bin
-<span class="anchor" id="line-45"></span>&gt; chown -R $USER.$GROUP cgi-bin
-<span class="anchor" id="line-46"></span>&gt; chmod -R ug+rx cgi-bin
-<span class="anchor" id="line-47"></span>&gt; chmod -R o-rwx cgi-bin
-<span class="anchor" id="line-48"></span></pre><span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><p class="line867" />
-<h3 id="head-408a7a283b2406c4e6b24646b25ec7996d5ff459">Configure moin.cgi</h3>
-<span class="anchor" id="line-51"></span><p class="line862" />When <tt class="backtick">moin.cgi</tt> is launched, it imports a Moin<tt class="backtick"></tt>Moin module that in turn imports other modules and the configuration file. While the Moin<tt class="backtick"></tt>Moin modules should always be found in a properly configured system (as described in <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>), it is likely that the configuration file will not be found. Edit the <tt class="backtick">moin.cgi</tt> script to correct that. Add these lines near the top of the file: <span class="anchor" id="line-52"></span><span class="anchor" id="line-53"></span><p class="line867" /><span class="anchor" id="line-54"></span><pre>import sys
-<span class="anchor" id="line-55"></span>sys.path.insert(0, '..')
-<span class="anchor" id="line-56"></span></pre><span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span><p class="line862" />You can also use the absolute name of the directory that contains the <tt class="backtick">wikiconfig.py</tt> file instead of <tt class="backtick">'..'</tt>. <span class="anchor" id="line-59"></span><span class="anchor" id="line-60"></span><p class="line867" />
-<h3 id="head-b02e2f66403a66cc3b1ff0ce2c7261cf44e4f0d4">Configure Apache</h3>
-<span class="anchor" id="line-61"></span><p class="line874" />Now that every file is in place and properly locked down (as far as the filesystem is concerned), we need to configure Apache so that it offers access to the right files, and no others. However, since the default Apache configuration varies a lot according to the distribution you use, and since administrators often make important additions and changes to it, we cannot give exact instructions that cover all cases. Instead, we will first describe roughly what needs to be done, and then give a few specific lines that you should add at the appropriate place in your Apache config. <span class="anchor" id="line-62"></span><span class="anchor" id="line-63"></span><p class="line874" />Your Apache should be set up so that: <span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><ul><li>Access to your instance directory is denied (sane Apache installations should actually deny access to the whole server, and then only allow a few specific directories). <span class="anchor" id="line-66"></span></li><li><p class="line862" />An alias is set up to redirect requests from <tt class="backtick">/wiki/</tt> (in the URL) to the <tt class="backtick">htdocs</tt> directory (in the <tt class="backtick">share</tt> directory, as discussed at the bottom of <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/BasicInstallation">../BasicInstallation</a>) <span class="anchor" id="line-67"></span></li><li><p class="line862" />A script alias is set up to redirect requests from whatever you want (we suggest you use your instance name, for example <tt class="backtick">/mywiki</tt>) to the CGI script you just copied. <span class="anchor" id="line-68"></span><span class="anchor" id="line-69"></span></li></ul><p class="line874" />The following commands will add two lines at the bottom of your Apache config file. These lines only cover the last two items listed above. You have to check the first one by yourself (there is too much variation in Linux distributions). Note that you may have to move the two lines to the appropriate place in your config file -- maybe near other similar lines. <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><p class="line867" /><span class="anchor" id="line-72"></span><pre>&gt; echo "" &gt;&gt;/etc/httpd/httpd.conf
-<span class="anchor" id="line-73"></span>&gt; echo "Alias /wiki/ \"$SHARE/htdocs/\"" &gt;&gt;/etc/httpd/httpd.conf
-<span class="anchor" id="line-74"></span>&gt; echo "ScriptAlias /mywiki \"$WIKILOCATION/$INSTANCE/cgi-bin/moin.cgi\"" &gt;&gt;/etc/httpd/httpd.conf
-<span class="anchor" id="line-75"></span></pre><span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span><p class="line862" />You only need to define the alias for <tt class="backtick">htdocs</tt> once. You need to define a different script alias for each wiki instance you intend to run. <span class="anchor" id="line-78"></span><span class="anchor" id="line-79"></span><p class="line867" />
-<h3 id="head-ffa39b171f9d130bb07a8481a5fff1a5a9065e86">Configure MoinMoin</h3>
-<span class="anchor" id="line-80"></span><p class="line862" />Finally, check that the <tt class="backtick">wikiconfig.py</tt> file in the instance directory contains correct paths for the htdocs prefix, the instance data directory, and the instance underlay directory. You can use relative paths for the directories, but note that they are relative to the CGI script, not the configuration file! You can also use absolute paths, and save yourself some headaches. <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><p class="line874" />Here are the settings you should have in the config file if you followed all our suggestions: <span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span><p class="line867" /><span class="anchor" id="line-85"></span><pre>    data_dir = '../data/'
-<span class="anchor" id="line-86"></span>    data_underlay_dir = '../underlay/'
-<span class="anchor" id="line-87"></span>    url_prefix = '/wiki'
-<span class="anchor" id="line-88"></span></pre><span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span><p class="line862" />There are other settings you will likely want to alter, look at the bottom of <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> for more details about them. <span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><p class="line867" />
-<h3 id="head-0f7a0fb8dccf6a13b6042fa17e0d7cda751fe3f3">Test the wiki</h3>
-<span class="anchor" id="line-93"></span><p class="line862" />Everything should work fine now. It is time to <strong>restart the Apache server</strong> (usually with "<tt class="backtick">/etc/init.d/apache&nbsp;restart</tt>", sometimes with "<tt class="backtick">apachectl&nbsp;restart</tt>") and perform the following steps: <span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><ul><li><p class="line862" />Run the <em>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</em>: connect to "<tt class="backtick">http://127.0.0.1/mywiki?action=test</tt>" (or the name and port you have defined in the Apache configuration file). Verify that the displayed information is correct. Check that the directories listed under <em>Checking directories...</em> are <em>OK</em>. <span class="anchor" id="line-96"></span></li><li><p class="line862" />Access your new wiki with the URL "<tt class="backtick">http://127.0.0.1/mywiki/</tt>" (or the name and port you have defined in the Apache configuration file). You should see the Front<tt class="backtick"></tt>Page. <span class="anchor" id="line-97"></span></li><li>If this is the case, try to edit it and save your changes. <span class="anchor" id="line-98"></span></li><li><p class="line862" />If that works, see if your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="line-99"></span></li><li><p class="line862" />If you see them, congratulations, your new wiki works! <img alt=":)" height="15" src="wiki/htdocs/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="line-100"></span><span class="anchor" id="line-101"></span></li></ul><p class="line874" />If something goes wrong, have a look at Troubleshooting, at the bottom of this page. <span class="anchor" id="line-102"></span><span class="anchor" id="line-103"></span><p class="line867" />
-<h3 id="head-52920da3312438e6a484347d4dfaa369b86cb521">Apache tricks</h3>
-<span class="anchor" id="line-104"></span><p class="line862" />For more advanced configuration and some tricks see <a href="http://moinmaster.wikiwikiweb.de/HelpMiscellaneous">HelpMiscellaneous</a>. <span class="anchor" id="line-105"></span><span class="anchor" id="line-106"></span><p class="line867" />
-<h2 id="head-e559f024646d8751eee1135ad5423247d72ab7fd">Simple user (home directory installation)</h2>
-<span class="anchor" id="line-107"></span><p class="line862" />On machines shared by many people, simple users typically have no access to the root account, cannot modify the <tt class="backtick">httpd.conf</tt> file, and cannot copy files into the system-wide <tt class="backtick">cgi-bin</tt> and <tt class="backtick">htdocs</tt> directories. In that case, Apache can be set up so that each user can host a web site in the home directory of his or her shell account, using the <tt class="backtick">UserDir</tt> directive. If the machine administrator decides to use it, all URLs that start with "<tt class="backtick">/~username</tt>" will be redirected to a directory in the users' home directories, where they have write permission and can install Moin<tt class="backtick"></tt>Moin. <span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><p class="line862" />As an example, we will consider the case of a user named "<tt class="backtick">mm</tt>". Of course, wherever you see "<tt class="backtick">mm</tt>" below, you will replace it with your own username. <span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><p class="line867" />
-<h3 id="head-6a39e2829f37fd34c569c2ffa768c9b3ec2289cc">Make sure /~username works</h3>
-<span class="anchor" id="line-112"></span><p class="line862" />The home directory installation can only work if the administrator (root) has allowed it. So, the first step is of course to check that it works. Typically, Apache is set up so that the <tt class="backtick">public_html</tt> subdirectory in the home directory is used as the web site root. So, the first first step is to check if that directory exists. <span class="anchor" id="line-113"></span><span class="anchor" id="line-114"></span><p class="line867" /><span class="anchor" id="line-115"></span><pre>&gt; ls -ld ~/public_html
-<span class="anchor" id="line-116"></span>drwxr-xr-x   2 mm       users        4096 Nov 30 00:29 public_html
-<span class="anchor" id="line-117"></span></pre><span class="anchor" id="line-118"></span><span class="anchor" id="line-119"></span><p class="line874" />If the directory does not exist, create it, and be sure it can be read and entered by the web server. <span class="anchor" id="line-120"></span><span class="anchor" id="line-121"></span><p class="line867" /><span class="anchor" id="line-122"></span><pre>&gt; mkdir public_html
-<span class="anchor" id="line-123"></span>&gt; chmod a+rx public_html
-<span class="anchor" id="line-124"></span>&gt; ls -ld ~/public_html
-<span class="anchor" id="line-125"></span>drwxr-xr-x   2 mm       users        4096 Nov 30 00:35 public_html
-<span class="anchor" id="line-126"></span></pre><span class="anchor" id="line-127"></span><span class="anchor" id="line-128"></span><p class="line862" />Now, check if the "<tt class="backtick">/~mm</tt>" URL works: <span class="anchor" id="line-129"></span><span class="anchor" id="line-130"></span><p class="line867" /><span class="anchor" id="line-131"></span><pre>&gt; lynx -error_file=/dev/stderr -dump http://localhost/~mm/ &gt;/dev/null
-<span class="anchor" id="line-132"></span>URL=http://localhost/~mm/ (GET)
-<span class="anchor" id="line-133"></span>STATUS=HTTP/1.1 200 OK
-<span class="anchor" id="line-134"></span></pre><span class="anchor" id="line-135"></span><span class="anchor" id="line-136"></span><p class="line862" />If you get a "<tt class="backtick">200&nbsp;OK</tt>" response code, then it works, and you can go on to the next check. If you get a "<tt class="backtick">403&nbsp;Forbidden</tt>" or a "<tt class="backtick">404&nbsp;Not&nbsp;Found</tt>" response, then maybe something is wrong with your directory, or maybe the whole thing has not been enabled by your administrator. <span class="anchor" id="line-137"></span><span class="anchor" id="line-138"></span><ul><li><p class="line862" />Check the permissions for your home directory (<tt class="backtick">~</tt>) and your <tt class="backtick">public_html</tt> directory. The first one should at least end with "<tt class="backtick">--x</tt>", and the second one, as we saw above, with "<tt class="backtick">r-x</tt>". <span class="anchor" id="line-139"></span></li><li><p class="line862" />It also possible that the administrator has set up another name for the personal web site directory. "<tt class="backtick">public_html</tt>" is just the usual default, but anything can actually be used. There is no way to know, you have to ask the administrator (root). <span class="anchor" id="line-140"></span></li><li>Finally, if the personal web site feature is disabled, maybe you can ask the administrator to enable it? <span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span></li></ul><p class="line874" />Once you have checked you can read the files in the directory, you need to check that you are also able to execute CGI scripts in that directory. Use the following commands to create a simple CGI script in the appropriate location: <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line867" /><span class="anchor" id="line-145"></span><pre>&gt; mkdir -p ~/public_html/cgi-bin
-<span class="anchor" id="line-146"></span>&gt; cat &gt; ~/public_html/cgi-bin/test.cgi
-<span class="anchor" id="line-147"></span>#!/bin/sh
-<span class="anchor" id="line-148"></span>echo Content-Type: text/plain
-<span class="anchor" id="line-149"></span>echo
-<span class="anchor" id="line-150"></span>echo "CGI scripts work"
-<span class="anchor" id="line-151"></span>&lt;CTRL-D&gt;
-<span class="anchor" id="line-152"></span>&gt; chmod a+rx ~/public_html/cgi-bin/test.cgi
-<span class="anchor" id="line-153"></span>&gt; lynx -dump http://localhost/~jh/cgi-bin/test.cgi
-<span class="anchor" id="line-154"></span>CGI scripts work
-<span class="anchor" id="line-155"></span></pre><span class="anchor" id="line-156"></span><span class="anchor" id="line-157"></span><p class="line862" />If you get anything else than "<tt class="backtick">CGI&nbsp;scripts&nbsp;work</tt>", then something went wrong. Check the directory permissions as above, try other names (or ask about them). The sad truth might be that you are not allowed to execute CGI scripts. You would then have to ask the administrator (root) for that permission. <span class="anchor" id="line-158"></span><span class="anchor" id="line-159"></span><p class="line862" />Once you get it, you can set up your wiki instance in the <tt class="backtick">public_html</tt> directory. <img alt=":)" height="15" src="wiki/htdocs/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="line-160"></span><span class="anchor" id="line-161"></span><p class="line867" />
-<h3 id="head-c27688fbe7f65d67190a47ce8d32eba244ab0d01-2">Create a wiki instance</h3>
-<span class="anchor" id="line-162"></span><p class="line862" />Creating a wiki instance involves copying files around and setting appropriate permissions. Read <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation">../WikiInstanceCreation</a> and follow the steps described there. <span class="anchor" id="line-163"></span><span class="anchor" id="line-164"></span><p class="line867" />
-<h3 id="head-ec9ce458a3f08281e5906f6d1e2e5cc008d620db">Install the htdocs files</h3>
-<span class="anchor" id="line-165"></span><p class="line862" />The web server needs to access these files, so we need to copy them in the "<tt class="backtick">public_html</tt>" directory. Just use this: <span class="anchor" id="line-166"></span><span class="anchor" id="line-167"></span><p class="line867" /><span class="anchor" id="line-168"></span><pre>&gt; cd ~/public_html
-<span class="anchor" id="line-169"></span>&gt; cp -R ~/share/moin/htdocs wiki
-<span class="anchor" id="line-170"></span>&gt; chmod -R a+rX wiki
-<span class="anchor" id="line-171"></span></pre><span class="anchor" id="line-172"></span><span class="anchor" id="line-173"></span><p class="line867" />
-<h3 id="head-e3e9e08058bb0ae34c33f53367cd58d6c7411998-2">Install moin.cgi</h3>
-<span class="anchor" id="line-174"></span><p class="line862" />There is one last file you need to copy, the bridge between Apache and Moin<tt class="backtick"></tt>Moin: the CGI script that Apache will call every time a wiki page is requested, and that will in turn invoke all the Moin<tt class="backtick"></tt>Moin components to handle the request. You need to put this file in a directory for which CGI scripts execution is enabled. By default, this should work: <span class="anchor" id="line-175"></span><span class="anchor" id="line-176"></span><p class="line867" /><span class="anchor" id="line-177"></span><pre>&gt; cd ~/public_html
-<span class="anchor" id="line-178"></span>&gt; mkdir cgi-bin
-<span class="anchor" id="line-179"></span>&gt; cp $SHARE/server/moin.cgi cgi-bin
-<span class="anchor" id="line-180"></span>&gt; chmod -R a+rx cgi-bin
-<span class="anchor" id="line-181"></span></pre><span class="anchor" id="line-182"></span><span class="anchor" id="line-183"></span><p class="line867" />
-<h3 id="head-408a7a283b2406c4e6b24646b25ec7996d5ff459-2">Configure moin.cgi</h3>
-<span class="anchor" id="line-184"></span><p class="line862" />When <tt class="backtick">moin.cgi</tt> is launched, it imports a Moin<tt class="backtick"></tt>Moin module (that in turn imports other modules and the configuration file). Since everything has been installed in your home directory, it is likely none of these will be found. Edit the <tt class="backtick">moin.cgi</tt> script to correct that. Add these lines near the top of the file: <span class="anchor" id="line-185"></span><span class="anchor" id="line-186"></span><p class="line867" /><span class="anchor" id="line-187"></span><pre>import sys
-<span class="anchor" id="line-188"></span>sys.path.insert(0, '/home/mm/lib/python2.3')
-<span class="anchor" id="line-189"></span>sys.path.insert(0, '/home/mm/lib/python2.3/site-packages')
-<span class="anchor" id="line-190"></span>sys.path.insert(0, '/home/mm/share/moin/mywiki')
-<span class="anchor" id="line-191"></span></pre><span class="anchor" id="line-192"></span><span class="anchor" id="line-193"></span><p class="line862" />Of course, you need to adapt the paths to your situation. The first two lines should help locate the Moin<tt class="backtick"></tt>Moin modules, the last one should help locate the <tt class="backtick">wikiconfig.py</tt> file. <span class="anchor" id="line-194"></span><span class="anchor" id="line-195"></span><p class="line867" /><strong>Note:</strong> You might also need to edit the first line of the file, to point to the correct version of Python. The default should be fine, but a line like "<tt class="backtick">#!&nbsp;/usr/bin/python2.3</tt>" might help you if the default does not work. <span class="anchor" id="line-196"></span><span class="anchor" id="line-197"></span><p class="line867" /><strong>Note 2:</strong> In this file there is a line reading <tt>request&nbsp;=&nbsp;RequestCGI()</tt>. If you have a complex mod_rewrite case, you might want to add <tt>properties&nbsp;=&nbsp;{'script_name':&nbsp;'/mywiki'}&nbsp;</tt> in the parenthesis. This will let <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> generate URLs that start with <tt>/mywiki</tt> and not the path that the webserver passed to <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a>: <span class="anchor" id="line-198"></span><span class="anchor" id="line-199"></span><p class="line867" /><span class="anchor" id="line-200"></span><pre>def handle_request(req, env, form):
-<span class="anchor" id="line-201"></span>    request = RequestCGI(req, env, form, properties = {'script_name': '/mywiki'})
-<span class="anchor" id="line-202"></span>    request.run()
-<span class="anchor" id="line-203"></span></pre><span class="anchor" id="line-204"></span><span class="anchor" id="line-205"></span><p class="line867" />
-<h3 id="head-ffa39b171f9d130bb07a8481a5fff1a5a9065e86-2">Configure MoinMoin</h3>
-<span class="anchor" id="line-206"></span><p class="line862" />Finally, check that the <tt class="backtick">wikiconfig.py</tt> file in the instance directory contains correct paths for the htdocs directory, the instance data directory, and the instance underlay directory. You can use relative paths for the directories, but note that they are relative to the CGI script, not the configuration file! You can also use absolute paths, and save yourself some headaches. <span class="anchor" id="line-207"></span><span class="anchor" id="line-208"></span><p class="line867" /><span class="anchor" id="line-209"></span><pre>    data_dir = '/home/mm/share/moin/mywiki/data/'
-<span class="anchor" id="line-210"></span>    data_underlay_dir = '/home/mm/share/moin/mywiki/underlay/'
-<span class="anchor" id="line-211"></span>    url_prefix = '/~mm/wiki'
-<span class="anchor" id="line-212"></span></pre><span class="anchor" id="line-213"></span><span class="anchor" id="line-214"></span><p class="line867" />
-<h3 id="head-0f7a0fb8dccf6a13b6042fa17e0d7cda751fe3f3-2">Test the wiki</h3>
-<span class="anchor" id="line-215"></span><p class="line874" />Everything should work fine, now. It is time to perform the following steps: <span class="anchor" id="line-216"></span><span class="anchor" id="line-217"></span><ul><li><p class="line862" />Run the <em>Moin<tt class="backtick"></tt>Moin CGI Diagnosis</em>: <tt>&gt;&nbsp;lynx&nbsp;-dump&nbsp;http://localhost/~mm/cgi-bin/moin.cgi?action=test</tt> <span class="anchor" id="line-218"></span></li><li><p class="line862" />If it worked, try to access your new-born wiki with the URL "<tt class="backtick">http://127.0.0.1/~mm/cgi-bin/moin.cgi</tt>". You should see the Front<tt class="backtick"></tt>Page. <span class="anchor" id="line-219"></span></li><li>If this is the case, try to edit it and save your changes. <span class="anchor" id="line-220"></span></li><li><p class="line862" />If that works, see if your edit is reflected on the Recent<tt class="backtick"></tt>Changes page. <span class="anchor" id="line-221"></span></li><li><p class="line862" />If you see them, congratulations, you have a new wiki! <img alt=":)" height="15" src="wiki/htdocs/modern/img/smile.png" title=":)" width="15" /> <span class="anchor" id="line-222"></span><span class="anchor" id="line-223"></span></li></ul><p class="line874" />If something goes wrong, have a look at Troubleshooting, below. <span class="anchor" id="line-224"></span><span class="anchor" id="line-225"></span><p class="line867" />
-<h2 id="head-3f286acb05ce4ad64240f788c78a8f915f59e34e">Troubleshooting</h2>
-<span class="anchor" id="line-226"></span><p class="line862" />See also <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/TroubleShooting">../TroubleShooting</a> for generic stuff. <span class="anchor" id="line-227"></span><span class="anchor" id="line-228"></span><p class="line862" />The first thing to do when your wiki does not work as expected is to issue the command "<tt class="backtick">tail&nbsp;/var/log/httpd/error_log</tt>" to display the most recent errors. Usually, you will get a hint on what went wrong, like missing file system permissions. <span class="anchor" id="line-229"></span><span class="anchor" id="line-230"></span><p class="line867" />
-<h3 id="head-b8c0d1c1aba9cd39d0d15f86ea33025f7f25d48d">Adding permission to serve the htdocs directory</h3>
-<span class="anchor" id="line-231"></span><p class="line862" />In some (sane) Linux distributions (like SuSE 9.0) serving directories other than the document-root "<tt class="backtick">/srv/www/htdocs</tt>" with Apache is switched off by default for security reasons in "<tt class="backtick">/etc/httpd/httpd.conf</tt>" (or for Apache2 "<tt class="backtick">/etc/apache2/httpd.conf</tt>"): <span class="anchor" id="line-232"></span><span class="anchor" id="line-233"></span><p class="line867" /><span class="anchor" id="line-234"></span><pre># forbid access to the entire filesystem by default
-<span class="anchor" id="line-235"></span>&lt;Directory /&gt;
-<span class="anchor" id="line-236"></span>  Options None
-<span class="anchor" id="line-237"></span>  AllowOverride None
-<span class="anchor" id="line-238"></span>  Order deny,allow
-<span class="anchor" id="line-239"></span>  Deny from all
-<span class="anchor" id="line-240"></span>&lt;/Directory&gt;
-<span class="anchor" id="line-241"></span></pre><span class="anchor" id="line-242"></span><span class="anchor" id="line-243"></span><p class="line862" />To allow Apache to serve directories outside of the document root you have to add these lines to "<tt class="backtick">/etc/httpd/httpd.conf</tt>" (in SuSE it is recommended to create a new "<tt class="backtick">http.conf.local</tt>" and include this file in "<tt class="backtick">/etc/sysconfig/apache2</tt>"): <span class="anchor" id="line-244"></span><span class="anchor" id="line-245"></span><p class="line867" /><span class="anchor" id="line-246"></span><pre>Alias /wiki/ "/usr/share/moin/htdocs/"
-<span class="anchor" id="line-247"></span>&lt;Directory "/usr/share/moin/htdocs/"&gt;
-<span class="anchor" id="line-248"></span>   Order deny,allow
-<span class="anchor" id="line-249"></span>   Allow from all
-<span class="anchor" id="line-250"></span>&lt;/Directory&gt;
-<span class="anchor" id="line-251"></span>
-<span class="anchor" id="line-252"></span>ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi"
-<span class="anchor" id="line-253"></span>&lt;Directory "/usr/share/moin/mywiki/cgi-bin"&gt;
-<span class="anchor" id="line-254"></span>   Order deny,allow
-<span class="anchor" id="line-255"></span>   Allow from all
-<span class="anchor" id="line-256"></span>&lt;/Directory&gt;
-<span class="anchor" id="line-257"></span></pre><span class="anchor" id="line-258"></span><span class="anchor" id="line-259"></span><p class="line874" />Of course, you need to adapt the paths to your particular situation. <span class="anchor" id="line-260"></span><span class="anchor" id="bottom_Include_HelpOnInstalling/ApacheOnLinux"></span></div> <span class="anchor" id="line-54"></span><hr class="hr2" /><p class="line874" /> <span class="anchor" id="line-55"></span><span class="anchor" id="fastcgi-install"></span> <span class="anchor" id="line-56"></span> <span class="anchor" id="line-57"></span><hr class="hr2" /><p class="line874" /> <span class="anchor" id="line-58"></span><span class="anchor" id="modpy-install"></span> <span class="anchor" id="line-59"></span>
+NAME="moin"
+DIR="/www/org.mywiki/bin"
+FCGIAPP="./moin.fcg"
+PREFIX="/usr/local"
+
+# List of ports to start moin instances on, separated with whitesapce
+# Keep in sync with fastcgi.server in lighttpd.conf
+PORTS="1080 1081"
+
+start_on_port () {
+    # Start moin instance on port, leaving pid file
+    port=$1
+    
+    cd "${DIR}" &amp;&amp; sudo -u www "${PREFIX}/bin/spawn-fcgi" \
+        -f "${FCGIAPP}" \
+        -p $port \
+        -P "${NAME}-${port}.pid" \
+        &gt; /dev/null
+}
+
+kill_on_port () {
+    # Try to kill process using pid in pid file, then remove the pid file
+    pidFile="${DIR}/${NAME}-$1.pid"
+    kill `cat "$pidFile"` &amp;&amp; rm -f "$pidFile" &gt; /dev/null 
+}
+
+start () {
+    for port in $PORTS; do start_on_port $port; done 
+}
+
+stop () {
+    for port in $PORTS; do kill_on_port $port; done
+}
+
+case "$1" in
+start)
+    # XXX starting twice will break pid files (bug in spawn-fcgi)
+    start &amp;&amp; echo -n " $NAME"
+        ;;
+stop)
+        stop &amp;&amp; echo -n " $NAME"
+        ;;
+restart)
+    stop
+    start &amp;&amp; echo -n " $NAME"
+        ;;
+*)
+        echo "Usage: `basename $0` {start|stop|restart}" &gt;&amp;2
+        ;;
+esac
+
+exit 0</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-236"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-237"></span><p class="line867">
+<h3 id="HelpOnInstalling.2BAC8-FastCgi.MacOSX.3AAddingMoinMoinstartupscript">Mac OS X: Adding MoinMoin startup script</h3>
+<span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-238"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-239"></span><p class="line874">With this script, moin instances will be started automatically on startup. <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-240"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-241"></span><ol type="1"><li><p class="line862">Install <a class="http" href="http://darwinports.opendarwin.org/getdp/">darwinports</a> <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-242"></span></li><li><p class="line862">Install DarwinPortsStartup package: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-243"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-244"></span><pre>sudo port install DarwinPortsStartup</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-245"></span></li><li><p class="line862">Copy moin.sh into <tt class="backtick">/opt/local/etc/rc.d</tt>: <span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-246"></span><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-247"></span><pre>sudo cp moin.sh /opt/local/etc/rc.d</pre><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.line-248"></span></li></ol><span class="anchor" id="HelpOnInstalling.2BAC8-FastCgi.bottom"></span></div> <span class="anchor" id="line-57"></span><hr class="hr2" /><p class="line874"> <span class="anchor" id="line-58"></span><span class="anchor" id="modpy-install"></span> <span class="anchor" id="line-59"></span>
 <h1>mod_python Setup using Apache</h1>
-<div dir="ltr" id="Include_HelpOnInstalling/ApacheWithModPython" lang="en"><span class="anchor" id="top_Include_HelpOnInstalling/ApacheWithModPython"></span>
-<span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867" /><div class="table-of-contents"><p class="table-of-contents-heading" />Contents<ol><li><a href="#head-4e6235e8e3535359b4aa9df9722961dfd62a685a">Why Use mod_python</a></li><li><a href="#head-52f515a2448d32357136b23a188dd227330baeb2">Basic configuring</a><ol><li><a href="#head-8cd6758d1fcc77b433f6584bcc34e24469568d75">Install mod_python</a></li><li><a href="#head-671adcfb8441deb9daa6ba877d59cc69d5e9d25e">Set up a wiki instance</a></li><li><a href="#head-08923628c7a5b449b5f210251334c431791adec9">Edit `wikiconfig.py`</a></li><li><a href="#head-b628477f88ab294636a22af4ee665656a8897b3a">Changes to Apache `httpd.conf`</a></li></ol><li><a href="#head-2dba68d0d0ad069f1c4a2a46bcdbd07cb21d3887">Solving problems for non-root-mounted wikis</a></li><li><a href="#head-e7e935fbfb5a81ceb0698ef82b5b7a897aa5e157">Configuring root wiki</a></li><li><a href="#head-53a11a51ff1c262df8f1f287084f8700685446d4">Older mod_python versions</a><ol><li><a href="#head-7b2283d5184932488fe551b2cee08e28fb18230c">Use a wrapper script</a></li><li><a href="#head-f2a32b29f0aff0101a91c87d692d063a6e0a4ec2">Fix mod_python</a></li></ol><li><a href="#head-17313e33f7320af70773f484730b290d86b62ee5">Troubleshooting</a></li></ol></div> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867" />
-<h1 id="head-4e6235e8e3535359b4aa9df9722961dfd62a685a">Why Use mod_python</h1>
-<span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867" /><a class="http" href="http://modpython.org/">mod_python</a> embeds the python interpreter into <span class="anchor" id="line-14"></span>the apache server. This saves initialization time and the need of <span class="anchor" id="line-15"></span>forking cgi scripts. It doesn't have the ability to run as different <span class="anchor" id="line-16"></span>users. It will always run as the main apache user and group. Be sure <span class="anchor" id="line-17"></span>that your wiki data files are accessible and writable by your apache <span class="anchor" id="line-18"></span>server. <span class="anchor" id="line-19"></span><span class="anchor" id="line-20"></span><p class="line867" /><img alt="&lt;!&gt;" height="15" src="wiki/htdocs/modern/img/attention.png" title="&lt;!&gt;" width="15" /> The basic configuration is suitable for mod_python 3.1.3 and later. If you use older version, see the section "Older mod_python versions" <span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span><p class="line867" /><img alt="&lt;!&gt;" height="15" src="wiki/htdocs/modern/img/attention.png" title="&lt;!&gt;" width="15" /> mod_python will cause your apache processes to increase their <span class="anchor" id="line-23"></span>memory requirements considerably - especially as apache runs many <span class="anchor" id="line-24"></span>separate processes which will each need to have their own copy of the <span class="anchor" id="line-25"></span>python code and data in the process memory space.  You may find that <span class="anchor" id="line-26"></span>FastCGI, as detailed in <a class="nonexistent" href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/ApacheWithFastCgi">HelpOnInstalling/ApacheWithFastCgi</a> is rather <span class="anchor" id="line-27"></span>more efficient in this respect. <span class="anchor" id="line-28"></span><span class="anchor" id="line-29"></span><p class="line867" />
-<h1 id="head-52f515a2448d32357136b23a188dd227330baeb2">Basic configuring</h1>
-<span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span><ol type="1"><li>Install mod_python <span class="anchor" id="line-32"></span></li><li>Set up a wiki instance <span class="anchor" id="line-33"></span></li><li><p class="line862" />Edit <tt class="backtick">wikiconfig.py</tt> <span class="anchor" id="line-34"></span></li><li><p class="line862" />Changes to Apache <tt class="backtick">httpd.conf</tt> <span class="anchor" id="line-35"></span></li><li>Restart Apache <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span></li></ol><p class="line862" />The sample configurations below are for a wiki instance called <tt class="backtick">mywiki</tt> installed in a directory <tt class="backtick">/var/www/moin/mywiki</tt> with the main <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> installation installed in python's default site library path. The wiki appears as URL <tt class="backtick">/mywiki</tt> under the server - ie <tt class="backtick">http://my.ser.ver/mywiki</tt>.  You will need to change these to reflect your installation. <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line867" />
-<h2 id="head-8cd6758d1fcc77b433f6584bcc34e24469568d75">Install mod_python</h2>
-<span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><p class="line862" />Most people will just add a <tt class="backtick">mod_python</tt> package to their current operating system installation.  If you are building from source then you should consult the <a class="http" href="http://modpython.org/live/current/doc-html/">mod_python documentation</a>. <span class="anchor" id="line-42"></span><span class="anchor" id="line-43"></span><p class="line862" />The mod_python installation should have added some lines to the Apache configuration file - either in the file itself or in an included configuration file (for example on Red Hat or Fedora linux the mod_python configuration is in <tt class="backtick">/etc/httpd/conf.d/python.conf</tt>). <span class="anchor" id="line-44"></span><span class="anchor" id="line-45"></span><p class="line862" />Make sure you have this line in <tt class="backtick">httpd.conf</tt> or mod_python will not work: <span class="anchor" id="line-46"></span><span class="anchor" id="line-47"></span><pre>LoadModule python_module modules/mod_python.so
-<span class="anchor" id="line-48"></span></pre><span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><p class="line874" />After this restart Apache and make sure that it starts successfully, and that the error log has a line similar to this:- <span class="anchor" id="line-51"></span><span class="anchor" id="line-52"></span><pre>[Sat Jan 01 15:40:49 2005] [notice] mod_python: Creating 4 session mutexes based on 150 max processes and 0 max threads.
-<span class="anchor" id="line-53"></span></pre><span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><p class="line874" />You may need to change some environment variables on (eg) FreeBSD - this is detailed in the port installation message. <span class="anchor" id="line-56"></span><span class="anchor" id="line-57"></span><p class="line867" />
-<h2 id="head-671adcfb8441deb9daa6ba877d59cc69d5e9d25e">Set up a wiki instance</h2>
-<span class="anchor" id="line-58"></span><span class="anchor" id="line-59"></span><p class="line862" />This is done as shown in <a href="http://moinmaster.wikiwikiweb.de/HelpOnInstalling/WikiInstanceCreation">WikiInstanceCreation</a>. Its recommended to first configure the wiki with cgi and check that it works, then change the configuratin to use mod_python. This allows you be sure that any problems are in the mod_python transition rather than the basic <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> installation. <span class="anchor" id="line-60"></span><span class="anchor" id="line-61"></span><ol type="1"><li>Copy moin.cgi into your wiki directory <span class="anchor" id="line-62"></span></li><li><p class="line862" />Configure <tt class="backtick">httpd.conf</tt> as cgi first: <span class="anchor" id="line-63"></span><ul><li style="list-style-type:none"><span class="anchor" id="line-64"></span><pre>Alias /wiki/ "/usr/share/moin/htdocs/"
-<span class="anchor" id="line-65"></span>ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"
-<span class="anchor" id="line-66"></span></pre><span class="anchor" id="line-67"></span><span class="anchor" id="line-68"></span></li></ul></li></ol><p class="line874" />Restart Apache and make test that your wiki works. <span class="anchor" id="line-69"></span><span class="anchor" id="line-70"></span><p class="line867" />
-<h2 id="head-08923628c7a5b449b5f210251334c431791adec9">Edit `wikiconfig.py`</h2>
-<span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><p class="line874" />Make sure you use only absolute paths - relative paths will not work! <span class="anchor" id="line-73"></span><span class="anchor" id="line-74"></span><pre>data_dir = '/var/www/moin/mywiki/data/'
-<span class="anchor" id="line-75"></span>data_underlay_dir = '/var/www/moin/mywiki/underlay/'
-<span class="anchor" id="line-76"></span></pre><span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><p class="line874" />If you do not want to use absolute paths, you can use Python's os module to construct the relative paths: <span class="anchor" id="line-79"></span><pre>import os 
-<span class="anchor" id="line-80"></span>data_dir = os.path.join(os.path.dirname(__file__), 'data/')
-<span class="anchor" id="line-81"></span>data_underlay_dir = os.path.join(os.path.dirname(__file__), 'underlay/')
-<span class="anchor" id="line-82"></span></pre><span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span><p class="line874" />Test that the wiki works after this change. <span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="(!)" height="15" src="wiki/htdocs/modern/img/idea.png" title="(!)" width="15" /> In 1.2 and earlyer, the configuration file is called <tt class="backtick">moin_config.py</tt>. <span class="anchor" id="line-87"></span><span class="anchor" id="line-88"></span></li></ul><p class="line867" />
-<h2 id="head-b628477f88ab294636a22af4ee665656a8897b3a">Changes to Apache `httpd.conf`</h2>
-<span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span><p class="line874" />After your wiki is running as cgi script, convert it to run with mod_python.  <span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><p class="line862" />If you run your wiki as cgi as we recommended before, remove or comment the <a class="nonexistent" href="http://moinmaster.wikiwikiweb.de/ScriptAlias">ScriptAlias</a> directive: <span class="anchor" id="line-93"></span><span class="anchor" id="line-94"></span><pre>#ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"
-<span class="anchor" id="line-95"></span></pre><span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><p class="line862" />Add a <tt class="backtick">Location</tt> directive: <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><pre>&lt;Location /mywiki&gt;
-<span class="anchor" id="line-100"></span>    SetHandler python-program
-<span class="anchor" id="line-101"></span>    # Add the path of your wiki directory
-<span class="anchor" id="line-102"></span>    PythonPath "['/var/www/moin/mywiki'] + sys.path"
-<span class="anchor" id="line-103"></span>    PythonHandler MoinMoin.request::RequestModPy.run
-<span class="anchor" id="line-104"></span>&lt;/Location&gt;
-<span class="anchor" id="line-105"></span></pre><span class="anchor" id="line-106"></span><span class="anchor" id="line-107"></span><p class="line862" />If you have multiple <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> instances then add one location directive for each one (changing the paths as appropriate) and add a line with the directive <tt class="backtick">PythonInterpreter&nbsp;mywiki</tt> to each Location section. With this directive different subinterpreters with completely separate namespaces will be used for each wiki (see <a class="http" href="http://modpython.org/live/current/doc-html/pyapi-interps.html">here</a> for details). <span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><p class="line862" />If you did not install <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> in the default location, you will have to add the path to <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> to the system path: <span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><pre>    PythonPath "['/var/www/moin/mywiki', '/prefix/lib/python2.x/site-packages'] + sys.path"
-<span class="anchor" id="line-112"></span></pre><span class="anchor" id="line-113"></span><span class="anchor" id="line-114"></span><p class="line874" />Restart Apache - everything should now work correctly. <span class="anchor" id="line-115"></span><span class="anchor" id="line-116"></span><p class="line867" />
-<h1 id="head-2dba68d0d0ad069f1c4a2a46bcdbd07cb21d3887">Solving problems for non-root-mounted wikis</h1>
-<span class="anchor" id="line-117"></span><span class="anchor" id="line-118"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="/!\" height="15" src="wiki/htdocs/modern/img/alert.png" title="/!\" width="15" /> If your wiki does not have a root URL (like <tt class="backtick">http://www.example.com/FrontPage</tt>), then you might need to follow the next steps: <span class="anchor" id="line-119"></span><span class="anchor" id="line-120"></span></li></ul><p class="line862" />On some installations, mod_python hands <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> incorrect script_name and path_info. It usually happens when using the Apache Location directive, with a wiki in an arbitary path: <span class="anchor" id="line-121"></span><span class="anchor" id="line-122"></span><pre>&lt;Location /farm/mywiki&gt;
-<span class="anchor" id="line-123"></span>    ...
-<span class="anchor" id="line-124"></span>&lt;/Location&gt;
-<span class="anchor" id="line-125"></span></pre><span class="anchor" id="line-126"></span><p class="line874" />This will not work, because its not clear what is the script name, since with location setup, there is no real script. <span class="anchor" id="line-127"></span><span class="anchor" id="line-128"></span><p class="line862" />To solve this problem, use a <tt class="backtick">PythonOption</tt> directive: <span class="anchor" id="line-129"></span><span class="anchor" id="line-130"></span><pre>&lt;Location /farm/mywiki&gt;
-<span class="anchor" id="line-131"></span>    # Location value must match the Apache Location value!
-<span class="anchor" id="line-132"></span>    PythonOption Location /farm/mywiki
-<span class="anchor" id="line-133"></span>    ...
-<span class="anchor" id="line-134"></span>&lt;/Location&gt;
-<span class="anchor" id="line-135"></span></pre><span class="anchor" id="line-136"></span><ul><li style="list-style-type:none"><p class="line891" /><img alt="(!)" height="15" src="wiki/htdocs/modern/img/idea.png" title="(!)" width="15" /> New in release 1.3.5 <span class="anchor" id="line-137"></span><span class="anchor" id="line-138"></span></li></ul><p class="line867" />
-<h1 id="head-e7e935fbfb5a81ceb0698ef82b5b7a897aa5e157">Configuring root wiki</h1>
-<span class="anchor" id="line-139"></span><span class="anchor" id="line-140"></span><p class="line862" />You may wish to have your wiki appearing at the root of your webserver - for example so that <tt class="backtick">http://wiki.example.com/</tt> will map to your wiki rather than having to use <tt class="backtick">http://wiki.example.com/mywiki/</tt>.  This requires a slightly different form of configuration using <tt class="backtick">mod_rewrite</tt> - this is a standard module of recent Apache distributions, and is often enabled by default. <span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span><p class="line862" />You need to set up your wiki instance as described above, and also copy <tt class="backtick">moinmodpy.py</tt> from the Moin installation directory to the wiki instance directory (<tt class="backtick">/var/www/moin/mywiki</tt> in these examples). <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line862" />The Apache configuration needs <tt class="backtick">mod_rewrite</tt> enabled - so the line <span class="anchor" id="line-145"></span><span class="anchor" id="line-146"></span><pre>LoadModule rewrite_module modules/mod_rewrite.so
-<span class="anchor" id="line-147"></span></pre><span class="anchor" id="line-148"></span><p class="line862" />should appear in the first part of the <tt class="backtick">httpd.conf</tt> configuration file. <span class="anchor" id="line-149"></span><span class="anchor" id="line-150"></span><p class="line874" />The wiki and virtual host configuration sould look like this:- <span class="anchor" id="line-151"></span><span class="anchor" id="line-152"></span><pre>&lt;VirtualHost *:80&gt;
-<span class="anchor" id="line-153"></span>  ServerAdmin postmaster@example.com
-<span class="anchor" id="line-154"></span>  DocumentRoot /var/www/html
-<span class="anchor" id="line-155"></span>  ServerName wiki.example.com
-<span class="anchor" id="line-156"></span>  Alias /wiki/ "/usr/share/moin/htdocs/"
-<span class="anchor" id="line-157"></span>
-<span class="anchor" id="line-158"></span>  # Rewrite urls
-<span class="anchor" id="line-159"></span>  RewriteEngine On
-<span class="anchor" id="line-160"></span>  RewriteLogLevel 0
-<span class="anchor" id="line-161"></span>  # map /wiki static files to Moin htdocs
-<span class="anchor" id="line-162"></span>  RewriteRule ^/wiki/(.*)$ /usr/share/moin/htdocs/$1 [last]
-<span class="anchor" id="line-163"></span>  RewriteRule ^/robots.txt$ /usr/share/moin/htdocs/robots.txt [last]
-<span class="anchor" id="line-164"></span>  RewriteRule ^/favicon.ico$ /usr/share/moin/htdocs/favicon.ico [last]
-<span class="anchor" id="line-165"></span>  # map everything else to server script
-<span class="anchor" id="line-166"></span>  RewriteRule ^(.*)$ /var/www/moin/mywiki/moinmodpy.py$1
-<span class="anchor" id="line-167"></span>
-<span class="anchor" id="line-168"></span>  &lt;Directory "/var/www/moin/testwiki"&gt;
-<span class="anchor" id="line-169"></span>    # Modpy stuff
-<span class="anchor" id="line-170"></span>    AddHandler python-program .py
-<span class="anchor" id="line-171"></span>    # Add the path to the wiki directory, where
-<span class="anchor" id="line-172"></span>    # moinmodpy.py and wikiconfig.py are located.
-<span class="anchor" id="line-173"></span>    PythonPath "['/var/www/moin/mywiki'] + sys.path"
-<span class="anchor" id="line-174"></span>    PythonHandler moinmodpy
-<span class="anchor" id="line-175"></span>  &lt;/Directory&gt;
-<span class="anchor" id="line-176"></span>&lt;/VirtualHost&gt;
-<span class="anchor" id="line-177"></span></pre><span class="anchor" id="line-178"></span><span class="anchor" id="line-179"></span><p class="line862" />Apache should be restarted, and the FrontPage of <tt class="backtick">mywiki</tt> should now appear at <tt class="backtick">http://wiki.example.com/</tt>. <span class="anchor" id="line-180"></span><span class="anchor" id="line-181"></span><p class="line862" />Other ways of handling root level wikis with Apache are detailed in the appropriately named <a href="http://moinmaster.wikiwikiweb.de/HelpOnConfiguration/ApacheVoodoo">HelpOnConfiguration/ApacheVoodoo</a>. <span class="anchor" id="line-182"></span><span class="anchor" id="line-183"></span><p class="line867" />
-<h1 id="head-53a11a51ff1c262df8f1f287084f8700685446d4">Older mod_python versions</h1>
-<span class="anchor" id="line-184"></span><span class="anchor" id="line-185"></span><p class="line862" />mod_python versions 2.7.10, 3.0.4 and 3.1.2b have a bug in <tt class="backtick">apache.resolve_object</tt>. This bug was reported to the mod_python <span class="anchor" id="line-186"></span>maintainers and has been fixed in the 3.1.3 release. The best fix for this is to update to the current release. However if you are unable to do this there are 2 possible solutions: <span class="anchor" id="line-187"></span><span class="anchor" id="line-188"></span><p class="line867" />
-<h2 id="head-7b2283d5184932488fe551b2cee08e28fb18230c">Use a wrapper script</h2>
-<span class="anchor" id="line-189"></span><span class="anchor" id="line-190"></span><p class="line867" /><a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> come with a <tt class="backtick">moinmodpy.py</tt> wrapper script, and this could be used by changing the <tt class="backtick">PythonPath</tt> and <tt class="backtick">PythonHandler</tt> directives as shown in the <tt class="backtick">moinmodpy.htaccess</tt> file. The wrapper was named <tt class="backtick">moin_modpy.py</tt> in <a href="http://moinmaster.wikiwikiweb.de/MoinMoin">MoinMoin</a> 1.2. <span class="anchor" id="line-191"></span><span class="anchor" id="line-192"></span><p class="line867" />
-<h2 id="head-f2a32b29f0aff0101a91c87d692d063a6e0a4ec2">Fix mod_python</h2>
-<span class="anchor" id="line-193"></span><p class="line874" />mod_python has a small resolver bug in versions 2.7.10, 3.0.4 and 3.1.2b. <span class="anchor" id="line-194"></span>The method <tt class="backtick">resolve_object</tt> in <tt class="backtick">mod_python/apache.py</tt> checks the wrong <span class="anchor" id="line-195"></span>object, and so the lookup for <tt class="backtick">RequestModPy.run</tt> fails. <span class="anchor" id="line-196"></span><span class="anchor" id="line-197"></span><p class="line862" />To fix it you need to change the method <tt class="backtick">resolve_object</tt> (around line 551 for <span class="anchor" id="line-198"></span>mod_python 3.1.2b) from <span class="anchor" id="line-199"></span><span class="anchor" id="line-200"></span><p class="line867" /><span class="anchor" id="line-201"></span><pre>        if silent and not hasattr(module, obj_str):
-<span class="anchor" id="line-202"></span>            return None
-<span class="anchor" id="line-203"></span></pre><span class="anchor" id="line-204"></span><span class="anchor" id="line-205"></span><p class="line874" />to <span class="anchor" id="line-206"></span><span class="anchor" id="line-207"></span><p class="line867" /><span class="anchor" id="line-208"></span><pre>        if silent and not hasattr(obj, obj_str):
-<span class="anchor" id="line-209"></span>            return None
-<span class="anchor" id="line-210"></span></pre><span class="anchor" id="line-211"></span><span class="anchor" id="line-212"></span><span class="anchor" id="line-213"></span><p class="line867" />
-<h1 id="head-17313e33f7320af70773f484730b290d86b62ee5">Troubleshooting</h1>
-<span class="anchor" id="line-214"></span><span class="anchor" id="line-215"></span><p class="line874" />Page access gives apache error:: <span class="anchor" id="line-216"></span><ul><li style="list-style-type:none"><p class="line891" /><tt>PythonHandler&nbsp;MoinMoin.request::RequestModPy.run:&nbsp;OSError:&nbsp;[Errno&nbsp;2]&nbsp;No&nbsp;such&nbsp;file&nbsp;or&nbsp;directory:&nbsp;'data/user'</tt> <span class="anchor" id="line-217"></span>This appears to be caused by you not having an absolute path for <tt class="backtick">data_dir</tt> in <tt class="backtick">moin_config.py</tt>.  There are several other lines of error traceback preceding this one in the apache error log.  Fix the path in <tt class="backtick">moin_config.py</tt>. <span class="anchor" id="line-218"></span></li></ul><span class="anchor" id="bottom_Include_HelpOnInstalling/ApacheWithModPython"></span></div> <span class="anchor" id="line-60"></span><hr class="hr2" /><p class="line874" /> <span class="anchor" id="line-61"></span><span class="anchor" id="twisted-install"></span> <span class="anchor" id="line-62"></span>
+<div dir="ltr" id="HelpOnInstalling.2BAC8-ApacheWithModPython.content" lang="en"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.top"></span>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-8"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-9"></span><p class="line867"><div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.WhyUsemodpython">Why Use mod_python</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Basicconfiguring">Basic configuring</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Installmodpython">Install mod_python</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Setupawikiinstance">Set up a wiki instance</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Edit.60wikiconfig.py.60">Edit `wikiconfig.py`</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.ChangestoApache.60httpd.conf.60">Changes to Apache `httpd.conf`</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Solvingproblemsfornon-root-mountedwikis">Solving problems for non-root-mounted wikis</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Configuringrootwiki">Configuring root wiki</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Oldermodpythonversions">Older mod_python versions</a><ol><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Useawrapperscript">Use a wrapper script</a></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Fixmodpython">Fix mod_python</a></li></ol></li><li>
+<a href="#HelpOnInstalling.2BAC8-ApacheWithModPython.Troubleshooting">Troubleshooting</a></li></ol></div><p class="line874"> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-10"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-11"></span><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-ApacheWithModPython.WhyUsemodpython">Why Use mod_python</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-12"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-13"></span><p class="line867"><a class="http" href="http://modpython.org/">mod_python</a> embeds the python interpreter into <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-14"></span>the apache server. This saves initialization time and the need of <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-15"></span>forking cgi scripts. It doesn't have the ability to run as different <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-16"></span>users. It will always run as the main apache user and group. Be sure <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-17"></span>that your wiki data files are accessible and writable by your apache <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-18"></span>server. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-19"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-20"></span><p class="line867"><img alt="&lt;!&gt;" height="15" src="/moin_static170/modern/img/attention.png" title="&lt;!&gt;" width="15" /> The basic configuration is suitable for mod_python 3.1.3 and later. If you use older version, see the section "Older mod_python versions" <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-21"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-22"></span><p class="line867"><img alt="&lt;!&gt;" height="15" src="/moin_static170/modern/img/attention.png" title="&lt;!&gt;" width="15" /> mod_python will cause your apache processes to increase their <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-23"></span>memory requirements considerably - especially as apache runs many <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-24"></span>separate processes which will each need to have their own copy of the <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-25"></span>python code and data in the process memory space.  You may find that <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-26"></span>FastCGI, as detailed in <a href="http://master17.moinmo.in/HelpOnInstalling/FastCgi">HelpOnInstalling/FastCgi</a> is rather <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-27"></span>more efficient in this respect. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-28"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-29"></span><p class="line867">
+<h1 id="HelpOnInstalling.2BAC8-ApacheWithModPython.Basicconfiguring">Basic configuring</h1>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-30"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-31"></span><ol type="1"><li>Install mod_python <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-32"></span></li><li>Set up a wiki instance <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-33"></span></li><li><p class="line862">Edit <tt class="backtick">wikiconfig.py</tt> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-34"></span></li><li><p class="line862">Changes to Apache <tt class="backtick">httpd.conf</tt> <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-35"></span></li><li>Restart Apache <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-36"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-37"></span></li></ol><p class="line862">The sample configurations below are for a wiki instance called <tt class="backtick">mywiki</tt> installed in a directory <tt class="backtick">/var/www/moin/mywiki</tt> with the main <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> installation installed in python's default site library path. The wiki appears as URL <tt class="backtick">/mywiki</tt> under the server - ie <tt class="backtick">http://my.ser.ver/mywiki</tt>.  You will need to change these to reflect your installation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-38"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-39"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheWithModPython.Installmodpython">Install mod_python</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-40"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-41"></span><p class="line862">Most people will just add a <tt class="backtick">mod_python</tt> package to their current operating system installation.  If you are building from source then you should consult the <a class="http" href="http://modpython.org/live/current/doc-html/">mod_python documentation</a>. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-42"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-43"></span><p class="line862">The mod_python installation should have added some lines to the Apache configuration file - either in the file itself or in an included configuration file (for example on Red Hat or Fedora linux the mod_python configuration is in <tt class="backtick">/etc/httpd/conf.d/python.conf</tt>). <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-44"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-45"></span><p class="line862">Make sure you have this line in <tt class="backtick">httpd.conf</tt> or mod_python will not work: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-46"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-47"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-48"></span><pre>LoadModule python_module modules/mod_python.so</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-49"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-50"></span><p class="line874">After this restart Apache and make sure that it starts successfully, and that the error log has a line similar to this:- <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-51"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-52"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-53"></span><pre>[Sat Jan 01 15:40:49 2005] [notice] mod_python: Creating 4 session mutexes based on 150 max processes and 0 max threads.</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-54"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-55"></span><p class="line874">You may need to change some environment variables on (eg) FreeBSD - this is detailed in the port installation message. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-56"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-57"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheWithModPython.Setupawikiinstance">Set up a wiki instance</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-58"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-59"></span><p class="line862">This is done as shown in <a href="http://master17.moinmo.in/HelpOnInstalling/WikiInstanceCreation">WikiInstanceCreation</a>. Its recommended to first configure the wiki with cgi and check that it works, then change the configuratin to use mod_python. This allows you be sure that any problems are in the mod_python transition rather than the basic <a href="http://master17.moinmo.in/MoinMoin">MoinMoin</a> installation. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-60"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-61"></span><ol type="1"><li>Copy moin.cgi into your wiki directory <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-62"></span></li><li><p class="line862">Configure <tt class="backtick">httpd.conf</tt> as cgi first (the shown Alias is for moin version 1.6.0): <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-63"></span><ul><li style="list-style-type:none"><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-64"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-65"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-66"></span><pre>Alias /moin_static160/ "/usr/share/moin/htdocs/"
+ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-67"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-68"></span></li></ul></li></ol><p class="line874">Restart Apache and make test that your wiki works. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-69"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-70"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheWithModPython.Edit.60wikiconfig.py.60">Edit `wikiconfig.py`</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-71"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-72"></span><p class="line874">Make sure you use only absolute paths - relative paths will not work! <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-73"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-74"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-75"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-76"></span><pre>data_dir = '/var/www/moin/mywiki/data/'
+data_underlay_dir = '/var/www/moin/mywiki/underlay/'</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-77"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-78"></span><p class="line874">If you do not want to use absolute paths, you can use Python's os module to construct the relative paths: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-79"></span>{{{import os <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-80"></span>data_dir = os.path.join(os.path.dirname(<span class="u">file</span>), 'data/') <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-81"></span>data_underlay_dir = os.path.join(os.path.dirname(<span class="u">file</span>), 'underlay/') <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-82"></span>}}} <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-83"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-84"></span><p class="line874">Test that the wiki works after this change. <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-85"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-86"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-87"></span><p class="line867">
+<h2 id="HelpOnInstalling.2BAC8-ApacheWithModPython.ChangestoApache.60httpd.conf.60">Changes to Apache `httpd.conf`</h2>
+<span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-88"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-89"></span><p class="line874">After your wiki is running as cgi script, convert it to run with mod_python.  <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-90"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-91"></span><p class="line862">If you run your wiki as cgi as we recommended before, remove or comment the <a class="nonexistent" href="http://master17.moinmo.in/ScriptAlias">ScriptAlias</a> directive: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-92"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-93"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-94"></span><pre>#ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"</pre><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-95"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-96"></span><p class="line862">Add a <tt class="backtick">Location</tt> directive: <span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-97"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-98"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-99"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-100"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-101"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-102"></span><span class="anchor" id="HelpOnInstalling.2BAC8-ApacheWithModPython.line-103"></span><span class=&quo