aboutsummaryrefslogtreecommitdiff
path: root/doc/tips/dot_cgi.mdwn
blob: ffcbf95d42533e7a593c4c0848535a474c491dd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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/apache404]]
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](http://www.lighttpd.net/) 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](http://trac.lighttpd.net/trac/wiki/Docs%3AModCGI)). 

* 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 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.