It's common to name the [[cgi]] "ikiwiki.cgi", and put it somewhere
like ~/public_html/ikiwiki.cgi
, or /var/www/wiki/ikiwiki.cgi
.
If you do that, you may find that when trying to edit a page in your wiki,
you see the raw contents of the ikiwiki.cgi program. Or get a permission
denied problem.
This is because web servers are generally not configured to run cgi scripts
unless they're in /usr/lib/cgi-bin/
. While you can put ikiwiki.cgi in
there if you like, it's better to configure your web server to
run .cgi
programs from anywhere.
These instructions are for Debian systems, but the basic
configuration changes should work anywhere.
apache 2
-
Edit /etc/apache2/apache2.conf and add a line like this:
AddHandler cgi-script .cgi
-
Find the "Options" line for the directory where you've put the
ikiwiki.cgi, and add "ExecCGI" to the list of options. For example, if
ikiwiki.cgi is in /var/www/, edit /etc/apache2/sites-enabled/000-default
and add it to the "Options" line in the "Directory /var/www/" stanza.
Or, if you've put it in a ~/public_html
, edit
/etc/apache2/mods-available/userdir.conf
.
-
You may also want to enable the [[plugins/404]] plugin.
To make apache use it, the apache config file will need a further
modification to make it use ikiwiki's CGI as the apache 404 handler.
Something like this, with the path adjusted to where you've put the CGI:
ErrorDocument 404 /cgi-bin/ikiwiki.cgi
lighttpd
Here is how to enable cgi on lighttpd and
configure it in order to execute ikiwiki.cgi wherever it is located.
-
Activate cgi by linking /etc/lighttpd/conf-available/10-cgi.conf
into /etc/lighttpd/conf-enabled
(doc).
-
Create /etc/lighttpd/conf-available/90-ikiwiki-cgi.conf
and add a line like this:
cgi.assign = ( "ikiwiki.cgi" => "", )
-
Activate ikiwiki-cgi by linking /etc/lighttpd/conf-available/90-ikiwiki-cgi.conf
into /etc/lighttpd/conf-enabled
.
-
Restart lighttpd server with something like /etc/init.d/lighttpd restart
.
Note that the first part enables cgi server wide but depending on default
configuration, it may be not enough. The second part creates a specific
rule that allow ikiwiki.cgi
to be executed.
Warning: I only use this lighttpd configuration on my development
server (offline). I am not sure of how secure this approach is.
If you have any thought about it, feel free to let me know.