Step-by-step installtion of cGit on nginx without funky rewrite rules.
This is for
sudo aptitude install build-essential
autoconf
automake
libtool
libfcgi-dev
spawn-fcgi
fcgiwrap
Now lets install fcgiwrap. Alternatively, you can
git clone https://github.com/gnosek/fcgiwrap.git cd fcgiwrap/ autoreconf -i ./configure make sudo make install cp fcgiwrap /usr/bin/.
Then, I pasted this perl script into /usr/bin/spawn-fcgi which will create a socket to pass .cgi to it
cat > /usr/bin/spawn-fcgi
#!/usr/bin/perl
use strict;
use warnings FATAL => qw( all );
use IO::Socket::UNIX;
my $bin_path = '/usr/bin/fcgiwrap';
my $socket_path = $ARGV[0] || '/tmp/cgi.sock';
my $num_children = $ARGV[1] || 1;
close STDIN;
unlink $socket_path;
my $socket = IO::Socket::UNIX->new(
Local => $socket_path,
Listen => 100,
);
die "Cannot create socket at $socket_path: $!\n" unless $socket;
for (1 .. $num_children) {
my $pid = fork;
die "Cannot fork: $!" unless defined $pid;
next if $pid;
exec $bin_path;
die "Failed to exec $bin_path: $!\n";
}
Then make sure to give it executable permissions
chmod +x /usr/bin/spawn-fcgi
The following script will be use to automate the respawning of FastCGI(fcgi) socket
cat > /etc/init.d/spawn-fcgi
#!/bin/bash
C_SCRIPT=/usr/bin/spawn-fcgi
USER=www-data
GROUP=www-data
RETVAL=0
case "$1" in
start)
echo "Starting fastcgi"
sudo -u $USER $C_SCRIPT
chown $USER:$GROUP /tmp/cgi.sock
RETVAL=$?
;;
stop)
echo "Stopping fastcgi"
killall -9 fcgiwrap
RETVAL=$?
;;
restart)
echo "Restarting fastcgi"
killall -9 fcgiwrap
$sudo -u $USER $C_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL