如何在常见的lisp中设置网络服务器?

Ser*_*ico 15 lisp linux webserver common-lisp

几个月前,我受到Paul Graham撰写的宏观书籍ANSI Common Lisp的启发,以及Lisp可以作为你网络开发中的秘密武器的声明,由同一作者在他的博客上发表.哇,太神奇了.这是我一直在寻找的东西.作者真正开发了一个成功的Web应用程序并将其出售给雅虎.

有了这些令人鼓舞的图像,我决定花一些时间(1年或2年,谁知道)学习Common Lisp.也许有一天我会开发我的Web应用程序并变成一个伟大的Lisp专家.事实上,这是我第二次学习Lisp.几年前我第一次被着名的SICP迷住了,但后来发现Scheme对于现实生活的应用来说是如此令人难以置信的不成熟.

在阅读了ANSI Common Lisp的一些章节之后,我非常确定这本书是一本非常详尽的探索Common Lisp的书.然后我开始在Common Lisp中设置一个Web服务器.毕竟,如果你想学习一些东西,这应该是最好的方法.示威总是比定义更好.

正如Practical Common Lisp(顺便说一句,这本书也是一本很好的书)所建议的那样,我选择在一些Common Lisp实现上安装AllegroServe.然后,从其他地方,我了解到Hunchentoot似乎比AllegroServe更好.(我不记得这个词的来源和对象.所以不要和我争论.)

具有讽刺意味的是,你知道什么,我从来没有在任何Common Lisp实现上安装这两个包.更烦人的是,我甚至不知道为什么.机器总是吐出很多行话,导致我陷入混乱.我试过在互联网上搜索,但没有找到任何东西.

任何在Linux上成功安装这些软件包的人都可以告诉我你是怎么做到的吗?你遇到了什么麻烦吗?你怎么弄清楚出了什么问题并修好了?越详细越有帮助.

Fra*_*rar 6

你试过这些指示吗?

我已经安装了SBCL,所以我只遵循了后半部分的说明.它设置了一个非常小的Web应用程序,因此它可以让您了解如何构建自己的Web应用程序.

这些说明可能不是你想要的 - 它们用于设置一个Web服务器(在Ubuntu上)与emacs/SLIME进行远程交互,但我猜"远程交互"也可能意味着localhost.


Ser*_*ico 5

基本上,这些安装步骤来自本文为初学者提供的简单Lisp Web应用程序,由Frank Shearar推荐(再次感谢).但我没有遵循确切的步骤,因为(1)我想与本地用户安装Common Lisp; (2)我不熟悉作者提到的一些事情.你可以查看原始文章,或者你可以在这里关注我.我担心我的指示更容易理解.:)

安装前需要下载三个软件包.sbcl二进制和源包可以在这里下载,smanek包可以在这里下载.

  • SBCL-1.0.38-x86的Linux的binary.tar.bz2

  • SBCL-1.0.38-source.tar.bz2

  • smanek平凡-Lisp的web应用,3681c1

注意:当您看到这篇文章时,版本号可能已经改变.所以不要费心去获取确切的包裹.但是,这是适合我的包.

这是我的工作(用您的真实路径替换YOURPATH,我假设您使用的是BASH):

1.安装二进制sbcl包

tar jxf sbcl-1.0.38-x86-linux-binary.tar.bz2

cd sbcl-1.0.38-x86-linux

INSTALL_ROOT=YOURPATH sh install.sh

cd ..
Run Code Online (Sandbox Code Playgroud)

那么,二进制sbcl包现在已经安装好了.当安装程序抱怨"没有手动找到"之类的东西时,可以正常使用,因为二进制包中不包含手册内容.随它去.

2.设置PATH和SBCL_HOME

export PATH=YOURPATH/bin/:$PATH

export SBCL_HOME=YOURPATH/lib/sbcl/
Run Code Online (Sandbox Code Playgroud)

3.安装源sbcl软件包

tar jxf sbcl-1.0.38-source.tar.bz2

cd sbcl-1.0.38

sh make.sh

export SBCL_HOME=''

INSTALL_ROOT=YOUROTHTERPATH sh install.sh

cd ..
Run Code Online (Sandbox Code Playgroud)

注意:您可能需要指定另一个安装目录,或者它将安装到二进制sbcl所在的同一目录中.

4.设置PATH和SBCL_HOME

export PATH=YOUROTHERPATH/bin/:$PATH

export SBCL_HOME=YOUROTHERPATH/lib/sbcl/
Run Code Online (Sandbox Code Playgroud)

5.安装smanek包

unzip smanek-trivial-lisp-webapp-36816c1.zip

cd smanek-trival-lisp-webapp-36816c1

cd scripts

./startserver.sh
Run Code Online (Sandbox Code Playgroud)

当它显示"Webserver在端口8080上启动"时,您可以在Web浏览器中访问" http:// localhost:8080 ".它在那里,对吗?

6.几点说明

  • 将三个软件包放在一个目录中后,您可以逐个或批量运行上述脚本.请记住用您的真实路径替换PATH.
  • 我怀疑Shaneal Manek已经破解了asdf和hunchentoot包,因为我在$ HOME/.sbclrc和$ HOME/.sbcl中找不到任何东西.谢谢你,Shaneal Manek,你已经帮了很多人了.
  • 我仍然对那些经常说很多但做一点点的人感到厌恶.即使是人们也很生气,但很明显,他们说的很重要,而不是他们怎么说.尽管如此,我心情不好时说错了.


Mat*_*tis 0

首先,保罗·格雷厄姆有:-)

我也发现 Common Lisp 需要做很多工作才能完成第一步。当你刚开始时,环境很糟糕,没有一条明确的正确路径可以让你敲入一些代码并看到一些结果(例如,Python)。和你一样,我浪费了很多时间从一种实现跳到另一种实现。所以我的建议是:

我建议你只选择一个,忽略所有其他建议,直到你开始行动。

如果你没心情,就获取 Apache 并编写一些 PHP :-)