]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/tips/dot_cgi.mdwn
Process .md like .mdwn, but disallow web creation.
[git.ikiwiki.info.git] / doc / tips / dot_cgi.mdwn
index ffcbf95d42533e7a593c4c0848535a474c491dd9..a33c8f385a91377804aaa087a56b00cfabd00d8a 100644 (file)
@@ -1,3 +1,5 @@
+[[!meta date="2009-01-12 20:01:03 -0500"]]
+
 It's common to name the [[cgi]] "ikiwiki.cgi", and put it somewhere
 like `~/public_html/ikiwiki.cgi`, or `/var/www/wiki/ikiwiki.cgi`.
 
@@ -13,9 +15,15 @@ run `.cgi`  programs from anywhere.
 These instructions are for Debian systems, but the basic
 configuration changes should work anywhere.
 
+[[!toc]]
+
 ## apache 2
 
-* Edit /etc/apache2/apache2.conf and add a line like this:
+* Make sure the cgi module is loaded. (Ie, `a2enmod cgi`).
+  Note that the cgid module will not work.
+
+* Edit /etc/apache2/apache2.conf (or /etc/apache2/mods-available/mime.conf)
+  and add a line like this:
 
        AddHandler cgi-script .cgi
 
@@ -26,11 +34,14 @@ configuration changes should work anywhere.
   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:
+* If your wiki is in `~/public_html` and does not appear when you enter the URL given by the installer, check that you have 
+  the userdir mod enabled (there should be simlinks to userdir.load and userdir.conf in /etc/apache2/modes-enabled).  If not,
+  run `a2enmod userdir` and reload apache2.
+  
+* 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
 
@@ -53,6 +64,53 @@ 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.
+**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.
+
+## nginx
+
+To run CGI under nginx, you need to use a FastCGI wrapper. The wrapper must be started somehow just like any other FastCGI program. You can use launchd on OSX.
+
+In Linux, you will need the spawn-fcgi and fcgiwrap packages and start
+them with:
+
+    spawn-fcgi -s /tmp/fcgi.socket -n -- /usr/sbin/fcgiwrap
+
+This needs to be ran as your user. It can be added to `inittab` or
+made into a startup script in `init.d`. You may also need to make this file writable by the webserver, if that's running as a different user, e.g.:
+
+    chmod a+w /tmp/fcgi.socket
+
+Then you need an nginx config plugged in that wrapper. Here's an
+example virtual host configuration:
+
+    server {
+        #listen   80; ## listen for ipv4; this line is default and implied
+        #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
+
+        root /home/anarcat/public_html/wiki.reseaulibre.ca/;
+        index index.html index.htm;
+
+        # Make site accessible from http://localhost/
+        server_name wiki.reseaulibre.ca;
+
+        location / {
+                try_files $uri $uri/ /index.html;
+        }
+        location /ikiwiki.cgi {
+                fastcgi_pass  unix:/tmp/fcgi.socket;
+                fastcgi_index ikiwiki.cgi;
+                fastcgi_param SCRIPT_FILENAME   /home/anarcat/public_html/ikiwiki.cgi;
+                fastcgi_param  DOCUMENT_ROOT      /home/anarcat/public_html/wiki.reseaulibre.ca;
+                include /etc/nginx/fastcgi_params;
+        }
+    }
+
+Also, note that the `/tmp/fcgi.socket` file needs to be writable by the webserver. I am also unsure as to the security of this setup, as I am using this only on my dev server. Needless to say that [[real fastcgi support|todo/fastcgi_or_modperl_installation_instructions]] would be great. ;) --[[anarcat]]
+
+## boa
+
+Edit /etc/boa/boa.conf and make sure the following line is not commented:
+
+    AddType application/x-httpd-cgi cgi