2008-07-21 16:15:17 +00:00
|
|
|
|
|
|
|
<style language="text/css">
|
|
|
|
pre { margin-left: 2em; border: 1px dashed black; padding: 2px }
|
|
|
|
pre.code { border: 1px solid blue }
|
|
|
|
pre.shell { border: 1px dashed green }
|
|
|
|
</style>
|
|
|
|
|
2008-07-21 17:14:31 +00:00
|
|
|
To clone this repository, issue the following command:
|
2008-07-21 16:15:17 +00:00
|
|
|
<pre class="shell">
|
|
|
|
$ git-clone <a href="git://stbuehler.de/spawn-fcgi.git">git://stbuehler.de/spawn-fcgi.git</a>
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<h3>Branches</h3>
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
master: master branch<br />
|
|
|
|
debian: patch for debian package - will be rebased, so you may need to force updates with -f<br />
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2>Original home</h2>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
Source based on spawn-fcgi from <a href="http://www.lighttpd.net/">lighttpd</a>,
|
|
|
|
rewritten for external packaging and some extra features:
|
|
|
|
<ul>
|
|
|
|
<li>chown/chmod the unix-domain socket</li>
|
|
|
|
<li>use /etc/security/limits.conf for limits</li>
|
|
|
|
<li>use glib2</li>
|
|
|
|
</ul>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
Includes modified code from the <a href="http://www.kernel.org/pub/linux/libs/pam/">Linux-PAM</a> project
|
|
|
|
for the limits.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2>Description</h2>
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
spawn-fcgi prepares the environment for fastcgi applications; it opens a socket (tcp / unix-domain)
|
|
|
|
on filedescriptor 0, changes uid/gid for process and unix-domain socket, closes STDIN/STDOUT, ...
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2>Usage</h2>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
Examples for daemontools (with lighttpd on debian): <br/>
|
|
|
|
|
|
|
|
For php5:
|
|
|
|
</p>
|
|
|
|
<pre class="code">
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
exec 2>&1
|
|
|
|
exec /usr/bin/spawn-fcgi -s /var/run/lighttpd/php-webuser.sock -n -u webuser -U www-data -l -- /usr/bin/php5-cgi
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
For turbogears:
|
|
|
|
<p>
|
|
|
|
<pre class="code">
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
exec 2>&1
|
|
|
|
cd /var/www/tgapp
|
|
|
|
exec /usr/bin/spawn-fcgi -s /var/run/lighttpd/tgapp.sock -n -u tg-user -U www-data -- /var/www/tg-app/start-tgapp-fcgi.py prod.cfg
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
/var/www/tg-app/start-tgapp-fcgi.py:<br/>
|
|
|
|
<p>
|
|
|
|
<pre class="code">
|
|
|
|
#!/usr/bin/env python
|
|
|
|
import pkg_resources
|
|
|
|
import cherrypy
|
|
|
|
import sys
|
|
|
|
|
|
|
|
cherrypy.lowercase_api = True
|
|
|
|
|
|
|
|
pkg_resources.require("TurboGears")
|
|
|
|
|
|
|
|
from cherrypy._cpwsgi import wsgiApp
|
|
|
|
from flup.server.fcgi import WSGIServer
|
|
|
|
from os.path import *
|
|
|
|
|
|
|
|
import turbogears
|
|
|
|
|
|
|
|
if len(sys.argv) > 1:
|
|
|
|
configfile = sys.argv[1]
|
|
|
|
elif exists(join(dirname(__file__), "setup.py")):
|
|
|
|
configfile = "dev.cfg"
|
|
|
|
else:
|
|
|
|
configfile = "prod.cfg"
|
|
|
|
|
|
|
|
turbogears.update_config(configfile=configfile, modulename="tgapp.config")
|
|
|
|
|
|
|
|
from tgapp.controllers import Root
|
|
|
|
|
|
|
|
cherrypy.root = Root()
|
|
|
|
|
|
|
|
cherrypy.server.start(initOnly=True, serverClass=None)
|
|
|
|
|
|
|
|
WSGIServer(application=wsgiApp).run()
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p style='padding-left: 1em;'>
|
|
|
|
spawn-fcgi is released under a BSD license, which may be found in the source files:
|
|
|
|
<pre>
|
|
|
|
<a href="http://cgit.stbuehler.de/gitosis/spawn-fcgi/tree/spawn-fcgi.c">spawn-fcgi.c</a>:
|
|
|
|
Copyright (c) 2004, Jan Kneschke, incremental
|
|
|
|
All rights reserved.
|
|
|
|
<a href="http://cgit.stbuehler.de/gitosis/spawn-fcgi/tree/pam_limits.c">pam_limits.c</a>:
|
|
|
|
Copyright (c) Cristian Gafton, 1996-1997, >gafton@redhat.com<
|
|
|
|
All rights reserved.
|
|
|
|
</pre>
|
|
|
|
</p>
|