r5283: *** empty log message ***
[cl-modlisp.git] / doc / readme.lml
1 ;;; -*- Mode: Lisp -*-
2
3 (in-package #:lml2)
4
5 (html-file-page ("readme")
6   (html      
7    (:head
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")))
14
15    (:body
16     (:h1 "cl-modlisp Documentation")
17     (:h2 "Overview")
18     (:p
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")
21      ").")
22     (:h2 "Features")
23     (:ul
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 "
28          (:tt "with-ml-page")
29          ".")
30      (:li "Optional timeout of worker processes")
31      (:li "Two process models for flexibility")
32      (:li "Demonstration processor included"))
33     (:h2 "Prerequisites")
34     (:ul
35      (:li "Apache 1.3.x")
36      (:li "mod_lisp apache module ("
37          ((:a :href "http://www.fractalconcept.com")
38            "http://www.fractalconcept.com")
39          ").")
40      (:li "kmrcl library ("
41          ((:a :href "http://files.b9.com/kmrcl")
42            "http://files.b9.com/kmrcl")
43          ").")
44      (:li "asdf ("
45          ((:a :href "http://www.sf.net/projects/cclan")
46            "http://www.sf.net/projects/cclan")
47          ")."))
48
49     (:h2 "Supported Platforms")
50     (:ul
51      (:li "Allegro v6.2")
52      (:li "CMUCL 18e")
53      (:li "Lispworks v4.2")
54      (:li "SBCL 0.8.1 with sb-thread (multi-threading)"))
55
56     (:h2 "Quickstart")
57     (:ul
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:"
59      (:div
60       (:tt "apt-get install libapache-mod-lisp cl-modlisp cl-kmrcl"))
61      (:div
62       "If you are not using Debian, you will need to download and install
63 mod_lisp, cl-modlisp, and cl-kmrcl manually."))
64      (:li
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")))
68      (:li
69       "Start your Lisp implementation and load cl-modlisp with"
70       (:div (:tt "(asdf:operate 'asdf:load-op 'modlisp)")))
71      (:li
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)"))))
79
80     (:h2 "Process Models")
81     (:p "There are two process models")
82     (:ul
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 "
87               (:tt "init/listener")
88               " with the keyword "
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."))) 
91                 
92     (:h2 "Usage")
93     (:p "The demo.lisp file for examples of using cl-modlisp.")
94     )))
95
96
97          
98
99