mod_lisp Apache module is a module to easily write web applications in Lisp.
mod_lisp talk from Apache to lisp processes by sockets with a very straightforward protocol to handle a request. It now reuses the Apache to Lisp sockets for improved performance. Future versions will probably be more Lisp specific, but for now it can be used by any other language.
· The Lisp servers are application servers. I don't want to bother the Lisp applications with things like serving gif or jpeg files or even static pages in some cases. Using mod_lisp I can separate the HTTP servers from the application servers.
· The architecture I am promoting is like this: One or more Apache front ends to serve static content (like images), one or more Lisp application servers to process the application logic and databases servers to store the data.
· Time is the scarcest resource so I don't want to waste it to implement things like SSL, keeping up to date with HTTP protocols etc. The Apache people do this with a sufficient quality, I don't see any interest to do it myself.
· I can benefit from the Apache modules if I need them (mod_gzip for instance)
· The market acceptance is quite better. It's really easier to sell an Apache + FreeBSD + (Postgresql or Oracle) + Lisp solution than a Lisp + FreeBSD + (Postgresql or Oracle) solution. In the first case Lisp is perceived as yet another web language like Perl, Python and others. In the second case you have to advocate the use of Lisp.
· mod_lisp is released under a FreeBSD style license.
· It's easier to work on a project where the Lisp web application is only a part of a web site.
· Apache 1.3/2.x
just type: apxs -i -c mod_lisp.cthis will compile and install it.
Configuring Apache with mod_lisp
In the Apache config file (httpd.conf or apache.conf):
First, add the mod_lisp module (change the path to where you have put mod_lisp):
LoadModule lisp_module libexec/apache/mod_lisp.so (for unixes and similar)
LoadModule lisp_module modules/mod_lisp.dll (for Win32)
Then add a LispServer directive (LispServer ip-address-of-lisp-computer ip-port-of-lisp-process user-defined-name):
ip-address-of-lisp-computer is the ip address of the computer where the Lisp process is.
ip-port-of-lisp-process is the ip port of the computer where the Lisp process is.
user-defined-name is a string that will be passed from Apache to the Lisp process. It is useful when you have several virtual servers or directories, defined within an Apache server, to be processed by mod_lisp.
example: LispServer 127.0.0.1 3000 "fractal"
Finally add a SetHanlder directive:
< Location /asp >
< /Location >
All the url located in /asp (like /asp/index.html) will be sent to mod_lisp
Your httpd.conf should be like that :
LoadModule lisp_module libexec/apache/mod_lisp.so
LispServer 127.0.0.1 3000 "fractal"
< Location /asp >
< /Location >
if you use mod_ssl you should put this in your SSL directives:
to have the ssl-session-id sent to the Lisp process
Restart Apache and it should be OK.
What's New in This Release:
· Moved back the LispSocket and UnsafeLispSocket variables as global variables instead of config struct variables.
· The struct is reset at each new request so the sockets were lost instead of reused. (Found and fixed by Edi Weitz)