Why use mod_wsgi?

See the mod_wsgi homepage.

Info (!) Please note that its "daemon mode" should be the preferred way to use it (and this is the reason to prefer mod_wsgi over mod_python).

Basic configuring

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

  4. Changes to Apache configuration
  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_wsgi

Most people will just add a mod_wsgi package to their current operating system installation. If you are building from source then you should consult the mod_wsgi documentation (it is rather easy if you have a development environment installed).

Make sure you have this line in your apache configuration or mod_wsgi will not work:

LoadModule wsgi_module modules/mod_wsgi.so

After this restart Apache and make sure that it starts successfully (also check the the error log).

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_wsgi. This allows you be sure that any problems are in the mod_wsgi transition rather than the basic MoinMoin installation.

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

    • Alias /moin_static160/ "/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:

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

Test that the wiki works after this change.

Changes to Apache configuration

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

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 this to the same virtualhost definition (for Windows or Apache 1.3, comment out the WSGIDaemonProcess and WSGIProcessGroup statements):

    # this is for icons, css, js (and must match url_prefix from wiki config):
    Alias       /moin_static160/ /usr/share/moin/htdocs/

    # this is the URL http://servername/mywiki/ you will use later to invoke moin:
    WSGIScriptAlias /mywiki /var/www/moin/mywiki/moin.wsgi
    # in case you want your wiki under the root url (http://servername/), use this instead:
    #WSGIScriptAlias / /var/www/moin/mywiki/moin.wsgi

    # create some wsgi daemons - use someuser.somegroup same as your data_dir:
    WSGIDaemonProcess daemonname user=someuser group=somegroup home=/home/someuser processes=5 threads=10 maximum-requests=1000 umask=0007

    # use the daemons we defined above to process requests!
    WSGIProcessGroup daemonname

Please also have a look into moin.wsgi - you maybe have to change some sys.path.insert instructions so Python can find the MoinMoin code and the wiki configuration.

Restart Apache - everything should now work correctly.