【问题标题】:Can Apache Be Configured To Run Clojure Web-Based Programs?可以将 Apache 配置为运行 Clojure 基于 Web 的程序吗?
【发布时间】:2013-05-13 20:00:48
【问题描述】:

注意

下面的问题与SO post类似,但两年后我问的问题略有不同。

是否可以运行 Clojure 程序,例如从 lein new noir 创建的程序,或者期望在不运行 Tomcat 或无需安装 Jetty 服务器的情况下从 Apache 处理 httpd 的程序,就像 Perl 程序可以使用 mod_perl 和 Python 运行一样程序最常使用 mod_wsgi 运行?

我是否错过了重点,因为 Clojure Web 应用程序的行为更像 Java servlet,需要与 JSP 类似的处理方式?

我之所以问这个问题,是因为我已经设置和配置了一个完整的 Apache 系统,并且想要将 Clojure Web 应用程序引入该环境的最简单方法。

【问题讨论】:

  • 为什么这被否决了?对我来说似乎是一个足够合理的问题。
  • 这是一个有点奇怪的问题。您能否更详细地了解 Clojure 程序的含义?您可以使用 任何 语言编写代码,通过 CGI 与 Apache 集成(我曾经写过一个用 bash 编写的状态控制台……)。但是,如果您的意思是作为标准“webapp”构建的 Clojure 程序,带有 Servlet 等,作者希望将其部署在 Web 容器中,那么这个问题的答案与我们是否相同只是在谈论 Java?
  • (我相信“在没有 web 容器的情况下运行 Servlet”的答案是,不。你必须编写一堆胶水代码,最终你基本上会重新发明 web 容器。 ..)
  • 使用正常的 apache 模块设置 iirc,程序会针对每个请求重新运行。这与 JVM 启动时间不符。这应该是可能的,但实际上,您必须做一些变通才能避免较长的页面加载延迟、糟糕的资源使用和糟糕的整体性能。
  • @SCdF 编辑了 OP 和标题。

标签: apache clojure


【解决方案1】:

简短的回答是:不合理。

理论上,任何程序都可以由 Apache 运行并代理请求,因此您可以在 clojure 中编写一个预期来自标准输入的网络请求的程序,然后编写一个 mod_clojure 来传递请求,尽管没有流行的网络框架会为你做这件事,这会有一些不良的性能特征(故意轻描淡写)。

我看到的最短路径是编写一个普通的 clojure ring 应用程序并在 jetty 中运行它,然后让 apache 代理相应的请求。

【讨论】:

  • 谢谢。我会安装码头。
  • lein 可以解决这个问题
猜你喜欢
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2013-01-04
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
相关资源
最近更新 更多