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 <[email protected]>" [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}