3

I am trying to set up a MoinMoin Wiki install on our nginx/uWSGI server using a sub-directory.

We already have a Django app running on :80. Initially I setup the Moin app with it's own server block running on :8000. This worked perfectly, however, what we want is to run MoinMoin under /wiki.

The problem is that when I try to do so, MoinMoin still assumes that is it's root, such that it thinks /wiki is a page named wiki. All the links are also relative to so clicking them fails because nginx doesn't see a location for /FrontPage etc.

I have looked, but cannot find any obvious method of configuring MoinMoin to use /wiki. This is what I need, either that or some way to map /wiki to :8000

Here is the http section of our nginx.conf file (NB: paths replaced with /path/to prefix)

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" t=$request_time';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /media {
            alias /path/to/lib/python2.6/site-packages/django/contrib/admin/media/;
        }

        location /static {
            alias           /path/to/static/;
        }

        location /tmp/reports {
        internal;
        alias   /tmp/reports;
        }

        location / {
            include        uwsgi_params;
            uwsgi_pass     127.0.0.1:9001;
        }

        location /wiki/moin_static193 {
            alias /path/to/lib/python2.6/site-packages/MoinMoin/web/static/htdocs;
        }

        location /wiki {
            uwsgi_pass  127.0.0.1:9002;
            include     wiki_params;
        }
    }
}

And here is the, mostly unedited, wikiconfig.py file:

import os

from MoinMoin.config import multiconfig, url_prefix_static


class Config(multiconfig.DefaultConfig):

# Critical setup  ---------------------------------------------------

# Directory containing THIS wikiconfig:
wikiconfig_dir = os.path.abspath(os.path.dirname(__file__))

# We assume that this config file is located in the instance directory, like:
# instance_dir/
#              wikiconfig.py
#              data/
#              underlay/
# If that's not true, feel free to just set instance_dir to the real path
# where data/ and underlay/ is located:
#instance_dir = '/where/ever/your/instance/is'
instance_dir = wikiconfig_dir

# Where your own wiki pages are (make regular backups of this directory):
data_dir = os.path.join(instance_dir, 'data', '') # path with trailing /

# Where system and help pages are (you may exclude this from backup):
data_underlay_dir = os.path.join(instance_dir, 'underlay', '') # path with trailing /

# The URL prefix we use to access the static stuff (img, css, js).
# Note: moin runs a static file server at url_prefix_static path (relative
# to the script url).
# If you run your wiki script at the root of your site (/), just do NOT
# use this setting and it will automatically work.
# If you run your wiki script at /mywiki, you need to use this:
url_prefix_static = '/wiki' + url_prefix_static


# Wiki identity ----------------------------------------------------

# Site name, used by default for wiki name-logo [Unicode]
sitename = u'Our Wiki'

# Wiki logo. You can use an image, text or both. [Unicode]
# For no logo or text, use '' - the default is to show the sitename.
# See also url_prefix setting below!
logo_string = u'<img src="%s/common/moinmoin.png" alt="MoinMoin Logo">' % url_prefix_static

# name of entry page / front page [Unicode], choose one of those:

# a) if most wiki content is in a single language
#page_front_page = u"MyStartingPage"

# b) if wiki content is maintained in many languages
#page_front_page = u"FrontPage"

# The interwiki name used in interwiki links
#interwikiname = u'UntitledWiki'
# Show the interwiki name (and link it to page_front_page) in the Theme,
# nice for farm setups or when your logo does not show the wiki's name.
#show_interwiki = 1


# Security ----------------------------------------------------------

# This is checked by some rather critical and potentially harmful actions,
# like despam or PackageInstaller action:
superuser = [u"UserName", ]

# IMPORTANT: grant yourself admin rights! replace YourName with
# your user name. See HelpOnAccessControlLists for more help.
# All acl_rights_xxx options must use unicode [Unicode]
acl_rights_before = u"UserName:read,write,delete,revert,admin"

# The default (ENABLED) password_checker will keep users from choosing too
# short or too easy passwords. If you don't like this and your site has
# rather low security requirements, feel free to DISABLE the checker by:
#password_checker = None # None means "don't do any password strength checks"

# Link spam protection for public wikis (Uncomment to enable)
# Needs a reliable internet connection.
#from MoinMoin.security.antispam import SecurityPolicy


# Mail --------------------------------------------------------------

# Configure to enable subscribing to pages (disabled by default)
# or sending forgotten passwords.

# SMTP server, e.g. "mail.provider.com" (None to disable mail)
#mail_smarthost = ""

# The return address, e.g u"J?rgen Wiki <noreply@mywiki.org>" [Unicode]
#mail_from = u""

# "user pwd" if you need to use SMTP AUTH
#mail_login = ""


# User interface ----------------------------------------------------

# Add your wikis important pages at the end. It is not recommended to
# remove the default links.  Leave room for user links - don't use
# more than 6 short items.
# You MUST use Unicode strings here, but you need not use localized
# page names for system and help pages, those will be used automatically
# according to the user selected language. [Unicode]
navi_bar = [
    # If you want to show your page_front_page here:
    #u'%(page_front_page)s',
    u'RecentChanges',
    u'FindPage',
    u'HelpContents',
]

# The default theme anonymous or new users get
theme_default = 'modern'


# Language options --------------------------------------------------

# See http://moinmo.in/ConfigMarket for configuration in
# YOUR language that other people contributed.

# The main wiki language, set the direction of the wiki pages
language_default = 'en'

# the following regexes should match the complete name when used in free text
# the group 'all' shall match all, while the group 'key' shall match the key only
# e.g. CategoryFoo -> group 'all' ==  CategoryFoo, group 'key' == Foo
# moin's code will add ^ / $ at beginning / end when needed
# You must use Unicode strings here [Unicode]
page_category_regex = ur'(?P<all>Category(?P<key>(?!Template)\S+))'
page_dict_regex = ur'(?P<all>(?P<key>\S+)Dict)'
page_group_regex = ur'(?P<all>(?P<key>\S+)Group)'
page_template_regex = ur'(?P<all>(?P<key>\S+)Template)'

# Content options ---------------------------------------------------

# Show users hostnames in RecentChanges
show_hosts = 1

# Enable graphical charts, requires gdchart.
#chart_options = {'width': 600, 'height': 300}
Corey Farwell
  • 135
  • 1
  • 9
n0wl
  • 31
  • 1
  • 2
  • The moinmoin/uWSGI example has been updated to include suburi configuration http://projects.unbit.it/uwsgi/wiki/Example#MoinMoinonlinenow – Corey Farwell Sep 02 '11 at 05:11
  • Possible duplicate of [How do I add a URL prefix (/wiki) to MoinMoin running on uWSGI and nginx?](http://serverfault.com/questions/307304/how-do-i-add-a-url-prefix-wiki-to-moinmoin-running-on-uwsgi-and-nginx) – lofidevops Jan 21 '16 at 14:19

1 Answers1

1

add

uwsgi_param SCRIPT_NAME /wiki;

uwsgi_modifier1 30;

in location /wiki directive

Then add

--ignore-script-name

in uWSGI command line

roberto
  • 11
  • 1
  • Hi,this didn't work for me I'm afraid. When I followed your config exactly, I get a 502 Bad gateway error. If I ommit the --ignore-script-name then I get a uWSGI error. Removing SCRIPT_NAME from the location directive is the only thing that fixes that, but then I am right back where I started. – n0wl Feb 11 '11 at 16:32