5 (html-file-page ("readme")
8 (:title "cl-modlisp readme")
9 ((:meta :http-equiv "Content-Type" :content "text/html; charset=iso-8859-1"))
10 ((:meta :name "Copyright" :content "Kevin Rosenberg 2002 <kevin@rosenberg.net>"))
11 ((:meta :name "description" :content "cl-modlisp documentation"))
12 ((:meta :name "author" :content "Kevin Rosenberg"))
13 ((:meta :name "keywords" :content "Common Lisp, mod_lisp, cl-modlisp, apache")))
16 (:h1 "cl-modlisp Documentation")
19 "cl-modlisp provides the Lisp side of the interface to Marc Battyani's mod_lisp apache module ("
20 ((:a :href "http://www.fractalconcept.com") "http://www.fractalconcept.com")
24 (:li "support for AllegroCL, CMUCL, SBCL with sb-thread, and Lispworks.")
25 (:li "listener and worker socket/process management so that shutting down the listener closes all related open sockets and terminates all related proceses.")
26 (:li "support for running multiple command processors on multiple ports.")
27 (:li "transparent support for precomputing the HTML or XML response to take advantage of HTTP/1.1's Keep-Alive feature. This is switchable with a single keyword argument to the macro "
30 (:li "Optional timeout of worker processes")
31 (:li "Two process models for flexibility")
32 (:li "Demonstration processor included"))
36 (:li "mod_lisp apache module ("
37 ((:a :href "http://www.fractalconcept.com")
38 "http://www.fractalconcept.com")
40 (:li "kmrcl library ("
41 ((:a :href "http://files.b9.com/kmrcl")
42 "http://files.b9.com/kmrcl")
45 ((:a :href "http://www.sf.net/projects/cclan")
46 "http://www.sf.net/projects/cclan")
49 (:h2 "Supported Platforms")
53 (:li "Lispworks v4.2")
54 (:li "SBCL 0.8.1 with sb-thread (multi-threading)"))
58 (:li "The easiest way to install is to use the Debian GNU/Linux operating system. Using the testing or unstable distributions, you can give the command:"
60 (:tt "apt-get install libapache-mod-lisp cl-modlisp cl-kmrcl"))
62 "If you are not using Debian, you will need to download and install
63 mod_lisp, cl-modlisp, and cl-kmrcl manually."))
65 "Add something like the below to httpd.conf and then restart apache"
66 (:div (:tt "LispServer 127.0.0.1 20123 \"localhost\""))
67 (:div (:tt "AddHandler lisp-handler .lsp")))
69 "Start your Lisp implementation and load cl-modlisp with"
70 (:div (:tt "(asdf:operate 'asdf:load-op 'modlisp)")))
72 "Start the server with"
73 (:div (:tt "(ml:modlisp-start :port 20123)")))
74 (:li "Try some demostration pages"
75 (:div (:tt "links http://localhost/fixed.lsp"))
76 (:div (:tt "links http://localhost/debug.lsp")))
77 (:li "Shutdown the all cl-modlisp servers with"
78 (:div (:tt "(ml:modlisp-stop-all)"))))
80 (:h2 "Process Models")
81 (:p "There are two process models")
83 (:li (:div (:b "Each connection spawns a new thread"))
84 (:div "This is the default model. Each new connection to listener socket spawns a new connection. This allows for an arbitrary number of concurrent connections. This has advantages if the workers require a long execution time."))
85 (:li (:div (:b "Fixed pool of workers"))
86 (:div "This model is selected by passing the number of worker processes to "
89 (:tt "number-fixed-workers")
90 ". This model has a lower overhead since new processes are not created and destroyed with each connection. It has advantages when the workers have a short execution time.")))
93 (:p "The demo.lisp file for examples of using cl-modlisp.")