gpt4 book ai didi

apache - 如何使用 Haskell 编写 CGI 脚本?

转载 作者:行者123 更新时间:2023-12-02 06:52:58 25 4
gpt4 key购买 nike

我想用 Haskell 制作一个 Web 应用程序(例如,它可以是博客、论坛或一些动态网页),我需要什么?

(我知道我需要一个http服务器(例如apache或lighttpd)。我也知道我应该了解一些Haskell编程。)

如何让它们一起工作?我不明白整个包/设置。

我需要 mod_haskell 或其他模块吗?

请有人向我解释一下 apache 模块如何工作以及如何安装它们?

最佳答案

让我们假设您正在使用您选择的编程语言创建一个动态网站。

当用户访问您的网站时,他们会向 http://name-of-your-site.com 发出请求这将传递到您的服务器。

当请求到达端口 80 时,它会被您的 HTTP 服务器收集,该服务器可能是 Apache,但也可能是 LightHttpd 或任何其他 HTTP 服务器。这将收到请求并决定如何处理它。

现在假设您的网站是用 python 编写的,它将作为一堆 .py 文件存储在某处,因此需要将请求传递到 python 运行时,并提供有关运行哪个文件以及在哪里返回该文件的输出。这就是 mod_python 的作用——从服务器获取请求并将其交给运行时。大多数 mod 还处理线程池 - 假设您在一分钟内有 20 个请求,如果每个请求都以简单的方式传递给 python 运行时,那么您将有 20 个 python 线程全部启动,一起运行,然后在进程完成时消失。通常,Apache mods 会保持一些线程启动并运行,以节省启动时间,并将新请求传递给现有线程之一,这样当它完成一个请求时,它会通过接口(interface)传递另一个请求。 CGI 容器以稍微不同的方式完成相同的工作,您可能选择其中一个而不是另一个的原因可能与您使用的 HTTP 服务器有关( mod_python 是为 Apache 设计的,例如,像 FastCGI 这样的容器更多地用于LightHttpd )和性能考虑。如果您使用 FastCGI 之类的东西,那么您可能需要 CGI 容器和编程语言运行时之间的第二层接口(interface)。

所以您正在使用的图层看起来有点像这样:

HTTP Server->  CGI Layer          ->  Programming Language Runtime -> your code
Apache -> mod_python -> Python Runtime -> index.py
LightHttpd -> FastCGI+python_cgi -> Python Runtime -> index.py

显然,我在这里使用 Python 作为示例,但是您可以找到大多数主流语言(以及许多深奥的语言)的等效 mod 和 cgi 容器,并且您正在使用的 Http 堆栈在大多数情况下将大致相似.

关于apache - 如何使用 Haskell 编写 CGI 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com