parent
d8a5d7d384
commit
dc27ffe949
1 changed files with 114 additions and 0 deletions
@ -0,0 +1,114 @@ |
||||
|
||||
<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> |
||||
|
||||
To clone this repository, issue the following command: |
||||
<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> |
Loading…
Reference in new issue