The following 411 words could not be found in the dictionary of 615 words (including 615 LocalSpellingWords) and are highlighted below:

2b   ability   above   absolute   accessible   Add   add   added   Admin   Alias   allows   always   an   and   Apache   apache   appear   appearing   appears   appropriate   appropriately   arbitary   around   at   based   Basic   basic   Be   be   because   been   before   below   best   bug   building   by   called   can   cause   caused   Changes   changing   check   checks   clear   come   comment   completely   conf   config   configuratin   configuration   Configuration   configurations   configure   Configure   Configuring   configuring   considerably   construct   consult   Contents   convert   correctly   Creating   Creation   current   default   described   detailed   details   did   different   dir   directive   directives   dirname   distributions   doc   Document   documentation   does   done   each   earlyer   Edit   efficient   eg   either   else   embeds   enabled   Engine   environment   Errno   especially   etc   everything   example   examples   fails   farm   Fast   favicon   Fedora   file   files   find   Fix   fix   fixed   follow   for   forking   form   from   Front   gives   group   Handler   handling   hands   happens   hasattr   Hat   having   Help   Host   host   However   htaccess   htdocs   httpd   ico   ie   if   If   import   in   In   included   incorrect   increase   initialization   install   Install   installation   installations   installed   Installing   Instance   instance   instances   interpreter   Interpreter   interps   into   its   Its   itself   Jan   join   just   last   later   level   Level   lib   library   like   line   lines   linux   live   Load   located   Location   location   Log   log   look   lookup   main   maintainers   make   Make   many   map   match   max   memory   message   method   might   Mod   mod   modpy   Modpy   modpython   Module   module   modules   moinmodpy   more   Most   mounted   multiple   must   mutexes   my   mywiki   name   Name   named   namespaces   need   needs   New   next   No   no   non   None   notice   now   obj   object   Of   of   often   Older   older   On   on   one   only   operating   Option   or   os   Other   other   own   package   packages   Page   part   path   Path   paths   people   port   possible   postmaster   preceding   prefix   problem   problems   process   processes   program   pyapi   python   Python   python2   rather   real   recent   recommended   Red   reflect   relative   release   remove   reported   Request   request   requirements   requires   resolve   resolver   respect   Restart   restart   restarted   return   rewrite   Rewrite   robots   root   Root   Rule   run   running   runs   sample   Sat   saves   script   Script   scripts   section   see   separate   ser   Server   server   session   Set   set   setup   several   share   should   shown   silent   similar   since   site   slightly   small   so   solutions   solve   Solving   some   sould   source   space   standard   starts   static   steps   str   stuff   subinterpreters   successfully   such   suitable   sure   sys   system   Table   Test   test   testwiki   than   that   The   the   their   then   There   there   these   this   This   threads   time   to   To   traceback   transition   Troubleshooting   unable   under   underlay   up   update   urls   use   Use   used   user   users   using   usr   usually   value   var   variables   ver   version   versions   Virtual   virtual   Voodoo   want   was   ways   we   webserver   what   when   where   which   Why   wikiconfig   will   wish   With   with   work   works   wrapper   writable   wrong   You   you   your  

Clear message

Why Use mod_python

mod_python embeds the python interpreter into the apache server. This saves initialization time and the need of forking cgi scripts. It doesn't have the ability to run as different users. It will always run as the main apache user and group. Be sure that your wiki data files are accessible and writable by your apache server.

<!> 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"

<!> mod_python will cause your apache processes to increase their memory requirements considerably - especially as apache runs many separate processes which will each need to have their own copy of the python code and data in the process memory space. You may find that FastCGI, as detailed in HelpOnInstalling/ApacheWithFastCgi is rather more efficient in this respect.

Basic configuring

  1. Install mod_python
  2. Set up a wiki instance
  3. Edit wikiconfig.py

  4. Changes to Apache httpd.conf

  5. Restart Apache

The sample configurations below are for a wiki instance called mywiki installed in a directory /var/www/moin/mywiki with the main MoinMoin installation installed in python's default site library path. The wiki appears as URL /mywiki under the server - ie http://my.ser.ver/mywiki. You will need to change these to reflect your installation.

Install mod_python

Most people will just add a mod_python package to their current operating system installation. If you are building from source then you should consult the mod_python documentation.

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 /etc/httpd/conf.d/python.conf).

Make sure you have this line in httpd.conf or mod_python will not work:

LoadModule python_module modules/mod_python.so

After this restart Apache and make sure that it starts successfully, and that the error log has a line similar to this:-

[Sat Jan 01 15:40:49 2005] [notice] mod_python: Creating 4 session mutexes based on 150 max processes and 0 max threads.

You may need to change some environment variables on (eg) FreeBSD - this is detailed in the port installation message.

Set up a wiki instance

This is done as shown in WikiInstanceCreation. 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 MoinMoin installation.

  1. Copy moin.cgi into your wiki directory
  2. Configure httpd.conf as cgi first:

    • Alias /wiki/ "/usr/share/moin/htdocs/"
      ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"
      

Restart Apache and make test that your wiki works.

Edit `wikiconfig.py`

Make sure you use only absolute paths - relative paths will not work!

data_dir = '/var/www/moin/mywiki/data/'
data_underlay_dir = '/var/www/moin/mywiki/underlay/'

If you do not want to use absolute paths, you can use Python's os module to construct the relative paths:

import os 
data_dir = os.path.join(os.path.dirname(__file__), 'data/')
data_underlay_dir = os.path.join(os.path.dirname(__file__), 'underlay/')

Test that the wiki works after this change.

Changes to Apache `httpd.conf`

After your wiki is running as cgi script, convert it to run with mod_python.

If you run your wiki as cgi as we recommended before, remove or comment the ScriptAlias directive:

#ScriptAlias /mywiki "/var/www/moin/mywiki/moin.cgi"

Add a Location directive:

<Location /mywiki>
    SetHandler python-program
    # Add the path of your wiki directory
    PythonPath "['/var/www/moin/mywiki'] + sys.path"
    PythonHandler MoinMoin.request::RequestModPy.run
</Location>

If you have multiple MoinMoin instances then add one location directive for each one (changing the paths as appropriate) and add a line with the directive PythonInterpreter mywiki to each Location section. With this directive different subinterpreters with completely separate namespaces will be used for each wiki (see here for details).

If you did not install MoinMoin in the default location, you will have to add the path to MoinMoin to the system path:

    PythonPath "['/var/www/moin/mywiki', '/prefix/lib/python2.x/site-packages'] + sys.path"

Restart Apache - everything should now work correctly.

Solving problems for non-root-mounted wikis

On some installations, mod_python hands MoinMoin incorrect script_name and path_info. It usually happens when using the Apache Location directive, with a wiki in an arbitary path:

<Location /farm/mywiki>
    ...
</Location>

This will not work, because its not clear what is the script name, since with location setup, there is no real script.

To solve this problem, use a PythonOption directive:

<Location /farm/mywiki>
    # Location value must match the Apache Location value!
    PythonOption Location /farm/mywiki
    ...
</Location>

Configuring root wiki

You may wish to have your wiki appearing at the root of your webserver - for example so that http://wiki.example.com/ will map to your wiki rather than having to use http://wiki.example.com/mywiki/. This requires a slightly different form of configuration using mod_rewrite - this is a standard module of recent Apache distributions, and is often enabled by default.

You need to set up your wiki instance as described above, and also copy moinmodpy.py from the Moin installation directory to the wiki instance directory (/var/www/moin/mywiki in these examples).

The Apache configuration needs mod_rewrite enabled - so the line

LoadModule rewrite_module modules/mod_rewrite.so

should appear in the first part of the httpd.conf configuration file.

The wiki and virtual host configuration sould look like this:-

<VirtualHost *:80>
  ServerAdmin postmaster@example.com
  DocumentRoot /var/www/html
  ServerName wiki.example.com
  Alias /wiki/ "/usr/share/moin/htdocs/"

  # Rewrite urls
  RewriteEngine On
  RewriteLogLevel 0
  # map /wiki static files to Moin htdocs
  RewriteRule ^/wiki/(.*)$ /usr/share/moin/htdocs/$1 [last]
  RewriteRule ^/robots.txt$ /usr/share/moin/htdocs/robots.txt [last]
  RewriteRule ^/favicon.ico$ /usr/share/moin/htdocs/favicon.ico [last]
  # map everything else to server script
  RewriteRule ^(.*)$ /var/www/moin/mywiki/moinmodpy.py$1

  <Directory "/var/www/moin/testwiki">
    # Modpy stuff
    AddHandler python-program .py
    # Add the path to the wiki directory, where
    # moinmodpy.py and wikiconfig.py are located.
    PythonPath "['/var/www/moin/mywiki'] + sys.path"
    PythonHandler moinmodpy
  </Directory>
</VirtualHost>

Apache should be restarted, and the FrontPage of mywiki should now appear at http://wiki.example.com/.

Other ways of handling root level wikis with Apache are detailed in the appropriately named HelpOnConfiguration/ApacheVoodoo.

Older mod_python versions

mod_python versions 2.7.10, 3.0.4 and 3.1.2b have a bug in apache.resolve_object. This bug was reported to the mod_python 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:

Use a wrapper script

MoinMoin come with a moinmodpy.py wrapper script, and this could be used by changing the PythonPath and PythonHandler directives as shown in the moinmodpy.htaccess file. The wrapper was named moin_modpy.py in MoinMoin 1.2.

Fix mod_python

mod_python has a small resolver bug in versions 2.7.10, 3.0.4 and 3.1.2b. The method resolve_object in mod_python/apache.py checks the wrong object, and so the lookup for RequestModPy.run fails.

To fix it you need to change the method resolve_object (around line 551 for mod_python 3.1.2b) from

        if silent and not hasattr(module, obj_str):
            return None

to

        if silent and not hasattr(obj, obj_str):
            return None

Troubleshooting

Page access gives apache error::

HelpOnInstalling/ApacheWithModPython (last modified 2007-04-01 02:20:37)