Installing MoinMoin with Apache using ftp

This document describes how to install MoinMoin:MoinMoin on the webserver of your ISP if you only have FTP access.

Please be warned that installing just by FTP (and not having shell access) is the least comfortable and most work intensive method to do it. If you need to change a file, you will have to ftp it back and forth. If you need to change many files (like your complete data_dir like when having to run some migration script) you will have to ftp many files back and forth. So if you like to have it comfortable, better get some server with shell access.

Download the latest distribution of MoinMoin

Download the latest distribution of MoinMoin from MoinMoin:MoinMoinDownload. Unpack it into a local directory. We do not need to run the setup.py script, we just work with the source code!

Explore the webserver configuration

Now it is time to find out how your ISP supports Python. If they support Python at all, they probably support the Common Gateway Interface (CGI). As noted above, I describe only this installation option. Now there is some homework for you to do:

Find out where the Python binary resides on your webserver. You should be able to find some hints in the ISPs online documentation, or you can ask their support team, or you can guess. Common locations are /usr/bin/python, /usr/bin/pythonX.X (X.X means the version number of Python like 2.3, 2.4 or newer) or /usr/local/bin/python. Sometimes, an ISP chooses to support more than one Python version, usually indicated by a version number in the search path. If possible, choose the latest version. Modify the first line of the explore script and the moin.cgi file to match the path of the python executable.

Try to find a place where Python scripts can be executed. To help you with that task, I have written a small script. Upload it to your webserver and see whether it gets executed or not. Here are some hints:

Use your favorite FTP-client and transfer your script to your webserver's cgi-bin directory, using the .cgi file extension. Try to call its URL via a web browser. If you don't have a cgi-bin,

copy the script into your favorite directory on your webserver, using the .py or .cgi file extension. Try to call its URL via a web browser.

First check it using the .cgi extension, then try the .py extension if necessary.

If only the source code appears in your browser window, your file has not been processed by the CGI. Probably some kind of apache configuration is required to make things work. Consult your ISPs documentation.

If you encounter a 404 Not found error, that probably means what it says: you have chosen the wrong URL.

If you have errors in your script, apache usually reports an Internal Server Error.

If your script has wrong file privileges, apache may report a Premature End of Script Headers. Set the file permission so as to allow execution of the script. Your FTP-client will do the job.

If everything works, a table should appear on your screen. It gives you some basic information on your webserver. Later we will need Python version, absolute path of this script, DOCUMENT_ROOT and SITE_URI.

Copy directories

You have to transfer four directories in the moin directory to your webserver.

./wiki/htdocs contains static files (e. g. css stylesheets and icons). Place this directory on your server somewhere under apache's DOCUMENT_ROOT and rename it to 'moin_static180'. Apache has to deliver them directly.

./wiki/underlay contains wiki templates and help pages. Place this directory on your server outside the DOCUMENT_ROOT, if possible. Apache should not be able to deliver these files directly.

./wiki/data is going to contain your wiki pages. Place this outside apache's DOCUMENT_ROOT.

Choose a location for these files on your webserver. You are free to choose, but apache must be able to execute moin.cgi. If necessary, you can even rename moin.cgi, for example to moin.py. I would recommend placing wikiconfig.py in a separate config directory that is not accessible by apache. Do not start uploading, we are going to make some modifications first.#

If you want to host more than one Wiki you need to work with farmconfig.py !

moin.cgi

Now open ./wiki/server/moin.cgi in your favorite editor.

(1) Adjust python path. First you have to adjust your python path in line 1. The new value depends on your ISPs setup.

(2) Set the path to MoinMoin. You will find a line

## sys.path.insert(0, 'PREFIX/lib/pythonX.X/site-packages')

Uncomment this line and replace the path information. If you have run explore.py on your webserver, you may use your knowledge of absolute path of this script to guess the absolute path to the MoinMoin directory.

Example: You transfered explore.py with your FTP-client into /public_html on your webserver. Absolute path of this script reveals /home/nowhere.com/public_html. You transfered MoinMoin to /MoinMoin. You plan to place moin.cgi as /pubic_html/index.py on your webserver. You would have to insert

sys.path.insert(0, '/home/nowhere.com') # REPLACED!

Of course a relative path will be allright, too. So, sticking to our example, you could also insert

sys.path.insert(0, '..')

(3) Set the path to wikiconfig.py. Now search for

sys.path.insert(0, '/path/to/wikiconfig')

Insert the path to wikiconfig.py on your webserver.

Example: You transfered explore.py with your FTP-client into /public_html on your webserver. Absolute path of this script reveals /home/nowhere.com/public_html. Your planned location for wikiconfig.py is /config. You plan to place moin.cgi as /pubic_html/index.py on your webserver. You would have to insert

wikiconfig.py

Open ./wiki/config/wikiconfig.py.

(1) Set the path to your data directory. Try to find

data_dir = './data/'

Replace './data/' with whatever leads to your data directory.

Example: You transfered explore.py with your FTP-client into /public_html on your webserver. Absolute path of this script reveals /home/nowhere.com/public_html. You transfered data to /data. You plan to place moin.cgi as /pubic_html/index.py on your webserver. You would have to insert

Replace './underlay/' with whatever leads to the underlay directory on your webserver.

Example: You transfered explore.py with your FTP-client into /public_html on your webserver. Absolute path of this script reveals /home/nowhere.com/public_html. You transfered underlay to /underlay. You plan to place moin.cgi as /pubic_html/index.py on your webserver. You would have to insert

Static files like images and css files are served by Apache, not by moin. You install them in a location accessible by Apache, and tell moin what is the url of those files.

url_prefix = '/moin_static180' # depends on moin version

If you copied your htdocs directory to /moin_static180 under your document root, you don't need to change this.

Important: url_prefix_static must start with a slash

Example: You placed explore.py under /public_html and called it with http://www.your-domain.com/explore.py. You placed htdocs as /public_html/moin_static180. So url_prefix is correct as it is, don't change it.

(4) Set configuration options. If you browse through wikiconfig.py, you will see a bunch of options. Set these options as you like. See HelpOnConfiguration for details.

Upload moin.cgi and wikiconfig.py

You are done! Upload moin.cgi and wikiconfig.py and test your wiki by calling moin.cgi through your webbrowser. You may have to set file permissions manually to allow the execution of moin.cgi. Be sure to upload both files to the directories described above.

Summary

Here is a short summary of an example installation. Having read this document, I hope you see what I did and why I did it.