ledsign

mod_lisp is not like mod_otherlanguages

What's mod_otherlanguage like?

  • mod_perl: "...gives you a persistent Perl interpreter embedded in your web server."
  • mod_python: "...is an Apache module that embeds the Python interpreter within the server."
  • mod_tcl: "...includes a Tcl interpreter into an Apache web servers memory space, thus combining Tcl and Apache web server together."
  • ruby, PHP, Lua, Haskell, etc: all similar

mod_lisp isn't like that at all. It doesn't embed a Lisp system in Apache in any way. So what does it do?

mod_lisp is more like FastCGI. It's a small C module for Apache that handles a request by converting it to a simple text format, sending it over a socket to a Lisp system, and sending the Lisp system's response to the client. The socket is established on demand and can be kept alive for multiple requests.

If all you have is mod_lisp, you still need software to process the mod_lisp protocol and send a response. mod_lisp doesn't come bundled with any Lisp code to do that. There are several Lisp packages that make it easy, though. I use an old variation of Hunchentoot. Bill Clementson surveyed the Lisp web options a few years ago and mentions a few other options.

mod_lisp is not even really Lisp-specific; if you can multiplex network connections and parse simple text, you can write something in any language that works with mod_lisp. It's pretty likely that your language already has an Apache module or an interface to FastCGI, though, unless it's even more obscure than Lisp.

Tags:

Comments

(Anonymous)

Re: Optimal Combination

xach,

thanks for tips.

most interesting that you would not use lighttpd.

Very helpful.

Giaccomo

Re: Optimal Combination

I didn't list lighttpd because I don't know anything about it. If it can act as a proxy for some requests, it would be a fine candidate for working with Hunchentoot.

Re: Optimal Combination

It can. You can set it up to serve static content, and proxy dynamic requests to apache+mod_favoritelanguage or some other HTTP server pretty easily.

(Anonymous)

Re: Optimal Combination - examples

As xach said:
pound (as a proxy), lighttpd (static content) and hunchentoot (dynamic creatures)

check the following links for a general idea ...
(Note: replace ruby with common-lisp and mongrel with hunchentoot)

http://www.theblatherskite.com/articles/2006/11/20/pounding-mongrel-light-tpd-ly
http://www.aidanf.net/node/36
http://blog.tupleshop.com/2006/7/8/deploying-rails-with-pound-in-front-of-mongrel-lighttpd-and-apache

regards,

cmo-0