summaryrefslogtreecommitdiff
path: root/doc/tips/dot_cgi.mdwn
blob: 64d7a07578edf569a4456f227e6ab08134be8566 (plain)

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.