====== Python FastCGI Application and LiteSpeed ======
This is a generic FCGI how-to for Python applications. Although we use Jon's fcgi python library for this example, you can use any valid Python FCGI module for your own setup.
===== Requirements =====
- LiteSpeed
- Python
- Jon's Python FCGI library: [[http://jonpy.sourceforge.net/|jonpy.sourceforge.net]]
===== Setup =====
1) Create a Virtual Host for this setup. From now on we will refer to this vhost as PythonVhost.
2) Save the following sample Python FCGI application to a path of your choice. We will call this app "demoapp.py" for tutorial purposes.
#!/usr/bin/python
import jon.cgi as cgi
import jon.fcgi as fcgi
from cgi import escape
import traceback
class Handler(cgi.Handler):
def process(self, req):
req.set_header("Content-Type", "text/html")
req.write("Hello Python! Hello LiteSpeed!
")
keys = req.environ.keys()
keys.sort()
for k in keys:
req.write(escape(k) + " = " + escape(req.environ[k]) + "
")
req.write(traceback.print_exc())
fcgi.Server({fcgi.FCGI_RESPONDER: Handler}).run()
3) Go "PythonVhost -> External Apps" tab and create a new "External Application".
Name: MyPythonFCGI
Address: uds://tmp/lshttpd/mypythonfcgi.sock
Max Connections: 10
Initial Request Timeout (secs): 10
Retry Timeout (secs): 0
Persistent Connection Yes
Connection Keepalive Timeout: 30
Response Bufferring: No
Start By Server: Yes
Command: /absolutepathto/demoapp.py <--- path to python fcgi app
Back Log: 50
Instances: 10
4) Go to "PythonVhost -> Contexts" and create a new "FCGI Context".
URI: /python/ <--- URI path to bind to python fcgi app we created
Fast CGI App: [VHost Level] MyPythonFCGI <--- select the python extapp we just created
5) Restart LiteSpeed, "lswsctrl restart", and access your new Pythyon FCGI application with /python/ url to your vhost. Enjoy! =)