很多人学习Lisp的时候都觉得Lisp学习起来很枯燥,不能用来写俄罗斯方块,不能用来写画图板,来来回回都是写一些基于文本的样例,很是无聊。其实Lisp可以用来写很多东西,而且写起来很有意思。因为Lisp文本处理能力很强,很适合写网站,所以对初学者来讲,如果希望做一些实际一点的小应用,写个Lisp网站是个不错的选择。
要写Lisp网站的话第一个问题就是如何搭建一个支持Lisp的web服务器,下面就详细讲述搭建Lisp web 服务器的过程。
搭建一个Lisp web 服务器可以使用很多中不同的工具,这里选择hunchentoot,原因是搭建起来不是很费事。有关hunchentoot的项目背景在这里就不详述了,有兴趣的读者可以参考相关网站。
就搭建hunchentoot服务器而言,也有很多方法,这里采用最简单的方式,目的是让各位可以快速搭建环境,开始建构Lisp网站。
第一步是安装sbcl
在ubuntu上可以通过apt-get直接安装,安装命令是 sudo apt-get install sbcl,下面是命令执行截图:
第二步是下载quicklisp.lisp文件
因为我们将通过quicklisp来安装载入hunchentoot,所以需要下载quicklisp.lisp文件。
quicklisp.lisp文件可以通过以下链接下载:
http://beta.quicklisp.org/quicklisp.lisp
在ubuntu上可以通过以下命令将quicklisp.lisp文件下载保存到本地:
sudo curl -0 http://beta.quicklisp.org/quicklisp.lisp > ~/workspace/quicklisp.lisp
注意这里将文件保存为~/workspace/quicklisp.lisp,大家可以根据自己的情况调整这个路径,下面是命令执行截图:
第三步是在sbcl中安装hunchentoot
首先是启动sbcl,然后载入刚才下载的quicklisp.lisp文件,载入quicklisp.lisp文件的命令和之前提到的载入样例lisp文件的方式是相同的,使用(load "<文件路径>")
下面是命令执行截图:
载入quicklisp后,在Lisp命令界面依次执行下面的Lisp命令:
(quicklisp-quickstart:install) (ql:add-to-init-file) (ql:quickload "swank") (ql:quickload "hunchentoot") (ql:quickload "cl-who")
quicklisp会帮你安装好hunchentoot
安装完成后通过(quit)命令退出sbcl(其实可以不退出继续执行后面的操作,不过这步是安装过程,后面是编写页面和服务器启动,所以退出一下,区分不同步骤)
第四步是编写hello world页面
安装好hunchentoot后通过vim或者是任意编辑器新建一个Lisp文件,我的文件名为:“~/workspace/lisp/hunchentoot.lisp”,大家可以根据喜好使用不同的文件名。
在该文件中写入一下代码:
(defun myserver () (start (make-instance 'easy-acceptor :port 8080)) (define-easy-handler (greet :uri "/hello") () (format nil "<html><body><h1>Hello world!</h1></body></html>")))上面的代码首先启动hunchentoot的一个实例,帧听8080端口,然后定义uri,指定访问“/hello”时执行后面的(format)代码输出一个简单的网页。
第五步是启动服务器
先通过sbcl命令启动sbcl界面,然后通过以下命令加载hunchentoot
(ql:quickload "hunchentoot")
加载完成后执行以下命令:
(use-package :hunchentoot)
接着通过以下命令载入第四步写的Lisp文件:
(load "~/workspace/lisp/hunchentoot.lisp")
最后执行(myserver)启动你的服务器,命令执行截图如下:
一切顺利的话打开浏览器访问“localhost:8080”就可以访问hunchent的缺省主页了,其中端口8080是在"~/workspace/lisp/hunchentoot.lisp"文件中指定的。
页面截图如下:
要访问自己写的网页就使用http://localhost:8080/hello来访问,注意这里的/hello是在上面的~/workspace/lisp/hunchentoot.lisp中指定的,
页面访问截图如下: