Generally, I deploy Hunchentoot behind a reverse proxy (just nginx for single-instance deployments, or HAProxy and nginx for more complex setups).
In either case, I let nginx serve the static content (no need to waste the relatively expensive Lisp threads for serving images). In the single-hunchentoot case, nginx can serve a static error page when the hunchentoot instance is down. On the other hand, if you have a HAProxy in front of multiple hunchentoots, then as long as one hunchentoot is still up your site can continue with no downtime.
-Shaneal
On Fri, Sep 17, 2010 at 1:08 AM, Ron Garret ron@flownet.com wrote:
I'm getting close to deploying CCL on a production server, which has forced me to reluctantly reach the following conclusion: the fact that Lisp allows code to be changed dynamically means that unless you are extremely disciplined about how you patch the code in your server, it is not at all difficult to end up in a situation where the server needs to be restarted. When that happens, it would be nice not to have the server machine go completely dead, but instead to respond with a nice "Server temporarily unavailable" page, and maybe even continue to serve static content. So much as I'm a fan of Lisp and Hunchentoot, it seems to me that it's not a good idea to use that combination as the front-end of a production application, but instead to deploy the Lisp app as a FastCGI or the back-end of a proxy server setup.