Linux 如何在common lisp中设置Web服务器?

Linux 如何在common lisp中设置Web服务器?,linux,lisp,webserver,common-lisp,Linux,Lisp,Webserver,Common Lisp,几个月前,保罗·格雷厄姆(Paul Graham)写的一本伟大的书《ANSI Common Lisp》(ANSI Common Lisp)以及同一位作者在其博客上发表的关于Lisp可以作为web开发中的秘密武器的声明激发了我的灵感。哇,太棒了。这是我一直在寻找的东西。作者真的开发了一个成功的web应用程序,并将其卖给了雅虎 有了这些令人鼓舞的图片,我决定花一些时间(1年或2年,谁知道)学习CommonLisp。也许有一天我会开发我的web应用程序,成为一名优秀的Lisp专家。事实上,这是我第二次

几个月前,保罗·格雷厄姆(Paul Graham)写的一本伟大的书《ANSI Common Lisp》(ANSI Common Lisp)以及同一位作者在其博客上发表的关于Lisp可以作为web开发中的秘密武器的声明激发了我的灵感。哇,太棒了。这是我一直在寻找的东西。作者真的开发了一个成功的web应用程序,并将其卖给了雅虎

有了这些令人鼓舞的图片,我决定花一些时间(1年或2年,谁知道)学习CommonLisp。也许有一天我会开发我的web应用程序,成为一名优秀的Lisp专家。事实上,这是我第二次学习Lisp。第一次是在几年前,当时我对著名的书SICP很感兴趣,但后来发现这个方案对于现实生活中的应用来说太不成熟了,令人难以置信

在阅读了ANSI Common Lisp的一些章节之后,我非常确定这是一本非常棒的书,里面详细地探讨了Common Lisp。然后,我开始在CommonLisp中设置web服务器。毕竟,如果你想学习一些东西,这应该是最好的方法。演示总是比定义好

正如《实用公共Lisp》一书(顺便说一句,这也是一本很棒的书)所建议的那样,我选择在一些公共Lisp实现上安装AllegroServe。然后,从其他地方,我了解到Hunchentoot似乎比AllegroServe更好。(我不记得这个词是从哪里来的,谁来的,所以不要跟我争论。)

讽刺的是,你知道吗,我从来没有在任何常见的Lisp实现上安装过这两个包。更令人烦恼的是,我甚至不知道为什么。这台机器总是吐出很多行话,把我弄得一团糟。我试着在网上搜索,但什么也没找到


在Linux中成功安装这些软件包的人能告诉我您是如何做到的吗?你遇到麻烦了吗?你是如何发现问题并修复的?越详细,就越有帮助。

保罗·格雷厄姆(Paul Graham)首先:

我也发现CommonLisp需要做很多工作才能通过第一步。当您刚刚开始时,环境非常糟糕,没有一条明确的真正路径可以让您插入一些代码并看到一些结果(例如Python)。和你一样,我也浪费了很多时间从一个实现跳到另一个实现。因此,我的建议是:

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

如果你没有心情,就用Apache编写一些PHP:-)

你试过了吗

我已经有了一个正在工作的SBCL安装,所以我只遵循了说明的后半部分。它设置了一个非常简单的web应用程序,所以它可以让您了解如何构建自己的web应用程序


可能不是你想要的-它们是用来设置一个web服务器(在Ubuntu上)与emacs/SLIME进行远程交互的,但我想“远程交互”也可能是指本地主机。

基本上,这些安装步骤来自本文,由Frank Shearr推荐(再次感谢)。但我没有遵循确切的步骤,因为(1)我想与本地用户一起安装CommonLisp;(2) 我不熟悉作者提到的一些事情。你可以查看原文,也可以跟我来。恐怕我的指示更容易遵守。:)

安装前需要下载三个软件包。可以下载sbcl二进制和源程序包,也可以下载smanek程序包

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

  • sbcl-1.0.38-source.tar.bz2

  • smanek-Trile-lisp-webapp-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 ..
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 ..
unzip smanek-trivial-lisp-webapp-36816c1.zip

cd smanek-trival-lisp-webapp-36816c1

cd scripts

./startserver.sh
那么,二进制sbcl包现在已经安装好了。当安装程序抱怨类似“找不到手动”的内容时,这是正常的,因为二进制软件包中不包含手动内容。随它去吧

2。设置路径和SBCL_主页

export PATH=YOURPATH/bin/:$PATH

export SBCL_HOME=YOURPATH/lib/sbcl/
export PATH=YOUROTHERPATH/bin/:$PATH

export SBCL_HOME=YOUROTHERPATH/lib/sbcl/
3。安装源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 ..
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 ..
unzip smanek-trivial-lisp-webapp-36816c1.zip

cd smanek-trival-lisp-webapp-36816c1

cd scripts

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

4。设置路径和SBCL_主页

export PATH=YOURPATH/bin/:$PATH

export SBCL_HOME=YOURPATH/lib/sbcl/
export PATH=YOUROTHERPATH/bin/:$PATH

export SBCL_HOME=YOUROTHERPATH/lib/sbcl/
5。安装smanek软件包

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 ..
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 ..
unzip smanek-trivial-lisp-webapp-36816c1.zip

cd smanek-trival-lisp-webapp-36816c1

cd scripts

./startserver.sh
当它显示“web服务器在端口8080上启动”时,您可以在web浏览器中访问“”。它就在那里,对吗

6。一些注意事项

  • 将三个包放在一个目录中后,您可以逐个或批量运行上述脚本。记住用真实路径替换路径
  • 我怀疑Shaneal Manek大量入侵了asdf和hunchentoot软件包,因为我在$HOME/.sbclrc和$HOME/.sbcl中没有找到任何东西。谢谢你,Shaneal Manek,你帮助了很多人
  • 我仍然对那些总是说得多做得少的人感到厌恶。即使人们很生气,很明显,重要的是他们说什么,而不是他们怎么说。然而,我在心情不好的时候说一些不好的话是错误的
5年后

这很容易。我假设您已经安装了SBCL或其他CL实现

  • 去你的回复和评估
  • (ql:quickload:aserve)

  • 开始阿勒格罗瑟夫
  • (net.aserve:start:port 8000)

  • 发布一些HTML文件
  • (net.aserve:publish file:path/:file“~/hello.html”)

  • 祝你黑客愉快


    阅读更多关于

    为什么scheme对于实际应用程序来说太不成熟?很多实际应用程序都使用它