]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/tips/dot_cgi.mdwn
(no commit message)
[git.ikiwiki.info.git] / doc / tips / dot_cgi.mdwn
index 7fbe278a4c2c6ac9cf0b672df42af80afc88150c..b66406f66e9edc58d9d7f797010cb4d7f05e7267 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`.
 
 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.
 
 These instructions are for Debian systems, but the basic
 configuration changes should work anywhere.
 
+[[!toc]]
+
 ## apache 2
 
 ## 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
 
 
        AddHandler cgi-script .cgi
 
@@ -26,8 +34,10 @@ configuration changes should work anywhere.
   Or, if you've put it in a `~/public_html`, edit
   `/etc/apache2/mods-available/userdir.conf`.
 
   Or, if you've put it in a `~/public_html`, edit
   `/etc/apache2/mods-available/userdir.conf`.
 
-  You may also want to install some dependencies to enable CGI in apache2 setup as: `libcgi-formbuilder-perl` and `libcgi-session-perl`.
-
+* 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.
 * 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.
@@ -35,6 +45,8 @@ configuration changes should work anywhere.
 
        ErrorDocument 404 /cgi-bin/ikiwiki.cgi
 
 
        ErrorDocument 404 /cgi-bin/ikiwiki.cgi
 
+* On Fedora (and RHEL, CentOS, and derivatives) you may need to change CGI mode from `06755` to `755` as suid/sgid bit is prohibited by `suexec`. ([Bug 1341568](https://bugzilla.redhat.com/show_bug.cgi?id=1341658))
+
 ## lighttpd
 
 Here is how to enable cgi on [lighttpd](http://www.lighttpd.net/) and
 ## lighttpd
 
 Here is how to enable cgi on [lighttpd](http://www.lighttpd.net/) and
@@ -68,7 +80,35 @@ 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
     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`.
+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
+
+If you have [systemd](https://en.wikipedia.org/wiki/Systemd), you may use a service file like so:
+
+Edit/create a service file (in Debian it would be: `sudo vim /lib/systemd/system/ikiwiki.service`
+
+Content of `ikiwiki.service`:
+
+    [Unit]
+    Description=Ikiwiki fcgi socket wrap
+    After=network.target
+    
+    [Service]
+    Type=simple
+    User=www-data
+    Group=www-data
+    ExecStart=/usr/bin/spawn-fcgi -s /tmp/fcgi.socket -n -- /usr/sbin/fcgiwrap
+    
+    [Install]
+    WantedBy=multi-user.target
+
+Then run:
+
+    # This enables the service at startup
+    sudo systemctl enable ikiwiki.service
+    # This attempts to start the service
+    sudo systemctl start ikiwiki.service
 
 Then you need an nginx config plugged in that wrapper. Here's an
 example virtual host configuration:
 
 Then you need an nginx config plugged in that wrapper. Here's an
 example virtual host configuration:
@@ -97,6 +137,24 @@ example virtual host configuration:
 
 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]]
 
 
 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]]
 
+2016-09-23 [[alexjj]]: On Debian Jessie creating the fcgi ikiwiki.service is not necessary. Install fcgiwrap, it'll auto start the fcgiwrap systemd service and then add the parameters in the virtual host:
+
+        location / {
+                try_files $uri $uri/ =404;
+        }
+        
+        # Max size of file upload
+        client_max_body_size 10m;
+
+        location ~ .cgi {
+                #gzip off is recommended in /usr/share/doc/fcgiwrap/README.Debian
+                gzip off;
+                fastcgi_pass unix:/var/run/fcgiwrap.socket;
+                include /etc/nginx/fastcgi_params;
+        }
+
+Here's a [[complete site.conf|tips/nginx]] for nginx if that helps.
+
 ## boa
 
 Edit /etc/boa/boa.conf and make sure the following line is not commented:
 ## boa
 
 Edit /etc/boa/boa.conf and make sure the following line is not commented: