【问题标题】:Deploy of Clojure/Clojurescript application in production在生产环境中部署 Clojure/Clojurescript 应用程序
【发布时间】:2013-10-08 02:06:40
【问题描述】:

我正在使用 Clojure/ClojureScript,并且正在编写一个 Web 应用程序。当我使用 ring 作为开发服务器时,一切都很好。

问题是我应该使用什么容器进行生产?我也应该使用 ring 进行生产吗?我应该使用Tomcat吗?有推荐的部署 Clojure 应用程序的方法吗?你能指出一些关于这方面的文档吗?

谢谢!

【问题讨论】:

    标签: clojure clojurescript


    【解决方案1】:

    部署用 Java 与 Clojure 编写的 java servlet 并没有本质上的不同,所有 Clojure Web 库和框架都会生成兼容的 servlet,因此您有许多部署选项。

    我们使用netty 来运行我们基于环的Web 应用程序,只需从系统服务运行“lein run”即可在生产中发挥出色的效果。许多其他人选择使用 lein uberwar 生成一个战争文件并将其托管在 tomcat 上。特定的托管机制似乎不如部署过程相关。所有 JavaScript 文件都从 CDN 提供。 Immutant 也是一个有趣且非常面向 Clojure 的选择,具有强烈的“进取心”感觉。

    最让我印象深刻的是构建可重复的构建,包括部署。 Pallet 是一个很好的方法,尽管它有一些学习曲线。

    【讨论】:

      【解决方案2】:

      有几个选项。

      第一个很简单:Heroku。他们有一个足够用于部署和测试的免费层。我不会对此进行进一步的详细介绍,但我决定不再使用 Heroku。

      另一个常见的选项是亚马逊 AWS。我收集 AWS 上的大多数应用程序使用 lein-beanstalk [对不起,这里没有引用]。 Lein-beanstalk 已经出现了很长一段时间,并且似乎维护得很好。它也由维护 Compojure 的同一个人维护。

      我使用 VPS。我使用 Nginx 设置了 linux 构建并使用 git 进行部署。所以,基本上,我的流程是创建站点,编译到 lein uberjar,然后部署。我知道有些人可以并且确实在他们的应用程序上使用了 leiningen “lien ring server” 语句,并使用了许多其他配置,例如 Maven、Tomcat、Vagrant 部署等,但我只是在服务器,它工作得很好。

      就文档而言,似乎确实缺乏有关 Clojure 部署的文档。如果您想在第一次这样做时走 VPS 路线,就必须把头撞到墙上并弄清楚。我发现我的问题几乎都没有专门涉及 Clojure。

      【讨论】:

        【解决方案3】:

        我在开发中使用:

        lein ring server 
        

        :然后将其编译为我使用的war文件:

        lein ring uberwar
        

        : 只需将生成的 jar 文件放到 Webapps 目录中即可。顺便说一句,我使用 Jetty

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-03
          • 1970-01-01
          • 2018-03-06
          • 1970-01-01
          • 2017-12-18
          • 2023-04-01
          • 1970-01-01
          • 2020-09-23
          相关资源
          最近更新 更多