s-http-server 安装全过程
时间:2006-04-02 来源:albertlee
S-HTTP-SERVER 是一个 standalone HTTP web server,作者是Sven Van Caekenberghe。 这个东西大概和 Python 中的 cherrypy, Quoxite 是一类的程序。
1.本文涉及 MacOSX LispWorks ASDF S-HTTP-SERVER。这里使用 MacOSX10.3,其他BSD/Linux系统应该也区别不大。最近有很多Web开发框架的podcast 都是在Mac上面,他们商量好的?
2. 安装 LispWorks
比较简单,到 www.lispworks.com 添一个表单,下载一个Personal Edition的 dmg安装文件,直接安装,没什么好说的。
3. 安装 ASDF
asdf 是 clisp 的一种包管理工具,我也是今天头次听说,按照文档装下来到也不难。
(1)下载 asdf.lisp 文件:
http://cvs.sourceforge.net/viewcvs.py/cclan/asdf/
(2)在 Lisp 环境下:
(load (compile-file "/Users/albert/lisp/asdf.lisp")) ; load asdf
; 设置 asdf 包文件所在的目录,以后把那些 asd 文件链接进去就可以
1.本文涉及 MacOSX LispWorks ASDF S-HTTP-SERVER。这里使用 MacOSX10.3,其他BSD/Linux系统应该也区别不大。最近有很多Web开发框架的podcast 都是在Mac上面,他们商量好的?
2. 安装 LispWorks
比较简单,到 www.lispworks.com 添一个表单,下载一个Personal Edition的 dmg安装文件,直接安装,没什么好说的。
3. 安装 ASDF
asdf 是 clisp 的一种包管理工具,我也是今天头次听说,按照文档装下来到也不难。
(1)下载 asdf.lisp 文件:
http://cvs.sourceforge.net/viewcvs.py/cclan/asdf/
(2)在 Lisp 环境下:
(load (compile-file "/Users/albert/lisp/asdf.lisp")) ; load asdf
; 设置 asdf 包文件所在的目录,以后把那些 asd 文件链接进去就可以
(pushnew "/Users/albert/lisp/" asdf:*central-registry* :test #'equal)
4. 安装 asdf-install
我也不知道具体是什么东西。http://www.cliki.net/ASDF-Install ,下载tar.gz文件,解压缩扔到一个目录去,然后
ln -s /path/asdf-install.asd .
这里 . 就是上面设置的那个 *central-registry*
然后在 lisp 环境:
(asdf:operate 'asdf:compile-op :asdf-install)
(asdf:operate 'asdf:load-op :asdf-install) ; 使用asdf载入asdf-install
5. 安装s-http-server及其依赖包
下载,ln asd文件,lisp中载入。几个包如下:
(asdf:oos 'asdf:load-op :s-sysdeps)
(asdf:oos 'asdf:load-op :s-base64)
(asdf:oos 'asdf:load-op :puri)
(asdf:oos 'asdf:load-op :s-utils)
(asdf:oos 'asdf:load-op :s-http-server)
安装完成,可以使用了,写个简单的 hello world 吧:
; 使用 s-http-server 包
(in-package :s-http-server)
; 生成一个 s-http-server 实例
(defvar *server* (make-s-http-server :name "Hello-world Server"))
; 启动服务器
(start-server *server*)
; s-http-server 默认服务器端口是1701
; 注册一个静态的 handler ,将一个url映射到一个目录中
(register-context-handler *server*
"/my-site"
'static-resource-handler
:arguments
'("/Users/albert/html"))
; 在浏览其中访问 http://localhost:1701/my-site/index.html 就可以查看你的网页了(前提是目录里有这个文件)
; 一个复杂点的动态 handler , 文档里给出的例子,没仔细研究,贴出来
(defun dynamic-context-handler (s-http-server handler http-request stream)
"The Dynamic Version that takes over when no default applies."
(logm s-http-server "Running dynamic s-http-server handler")
(let ((body (with-output-to-string (out)
(format out "<p>Active handler binding is ~s for path ~s</p>"
handler
(get-path http-request)))))
(standard-http-html-message-response http-request stream
4. 安装 asdf-install
我也不知道具体是什么东西。http://www.cliki.net/ASDF-Install ,下载tar.gz文件,解压缩扔到一个目录去,然后
ln -s /path/asdf-install.asd .
这里 . 就是上面设置的那个 *central-registry*
然后在 lisp 环境:
(asdf:operate 'asdf:compile-op :asdf-install)
(asdf:operate 'asdf:load-op :asdf-install) ; 使用asdf载入asdf-install
5. 安装s-http-server及其依赖包
下载,ln asd文件,lisp中载入。几个包如下:
(asdf:oos 'asdf:load-op :s-sysdeps)
(asdf:oos 'asdf:load-op :s-base64)
(asdf:oos 'asdf:load-op :puri)
(asdf:oos 'asdf:load-op :s-utils)
(asdf:oos 'asdf:load-op :s-http-server)
安装完成,可以使用了,写个简单的 hello world 吧:
; 使用 s-http-server 包
(in-package :s-http-server)
; 生成一个 s-http-server 实例
(defvar *server* (make-s-http-server :name "Hello-world Server"))
; 启动服务器
(start-server *server*)
; s-http-server 默认服务器端口是1701
; 注册一个静态的 handler ,将一个url映射到一个目录中
(register-context-handler *server*
"/my-site"
'static-resource-handler
:arguments
'("/Users/albert/html"))
; 在浏览其中访问 http://localhost:1701/my-site/index.html 就可以查看你的网页了(前提是目录里有这个文件)
; 一个复杂点的动态 handler , 文档里给出的例子,没仔细研究,贴出来
(defun dynamic-context-handler (s-http-server handler http-request stream)
"The Dynamic Version that takes over when no default applies."
(logm s-http-server "Running dynamic s-http-server handler")
(let ((body (with-output-to-string (out)
(format out "<p>Active handler binding is ~s for path ~s</p>"
handler
(get-path http-request)))))
(standard-http-html-message-response http-request stream
"S-HTTP-SERVER" body)
t))
(register-context-handler *server*
"/"
'dynamic-context-handler
:arguments
'("no one cares, really")
:at-end-p t)
t))
(register-context-handler *server*
"/"
'dynamic-context-handler
:arguments
'("no one cares, really")
:at-end-p t)
相关阅读 更多 +