在生产环境中部署Clojure/Clojurescript应用程序

7
我正在使用Clojure/ClojureScript编写Web应用程序。在使用ring作为开发服务器时一切都很好。
问题是我应该在生产环境中使用什么容器?我应该继续使用ring吗?还是应该使用Tomcat?有没有推荐的部署Clojure应用程序的方法?您能否向我指出相关文档?
谢谢!
3个回答

10

在部署 Java Servlet 的过程中,使用 Java 编写的 Servlet 和使用 Clojure 编写的 Servlet 没有本质的区别,所有 Clojure Web 库和框架都能生成兼容的 Servlet,因此您有许多部署选项。

我们使用 Netty 运行基于 Ring 的 Web 应用程序,在生产环境中取得了良好的效果,只需从系统服务运行 "lein run" 即可。许多人选择使用 lein uberwar 生成一个 war 文件,并将其托管在 Tomcat 上。具体的托管机制似乎不那么重要,而部署过程比较重要。所有 JavaScript 文件都是从 CDN 提供服务的。Immutant 也是一个非常适合 Clojure 的选择,它具有强烈的企业级特性。

我认为最重要的是构建可重复的构建过程,包括部署。 Pallet 是一个很好的选择,尽管它具有一定的学习曲线。


7

有几个选项。

第一个很容易:Heroku。他们有一个免费层,足够部署和测试。我不会详细介绍这一点,但我决定不再使用Heroku了。

另一个常见的选择是Amazon AWS。我收集到大多数在AWS上的应用程序使用 lein-beanstalk [对不起,这里没有引文]. Lein-beanstalk已经存在了相当长的时间,并且似乎得到了良好的维护。它也由维护Compojure的同一个人维护。

我使用VPS。我使用Nginx设置linux构建并通过git进行部署。因此,我的流程是创建网站,编译成lein uberjar,然后部署。我知道有些人可以和确实使用leiningen“lien环服务器”cantation在其应用程序上,并使用许多其他配置,例如Maven,Tomcat,使用Vagrant进行部署等,但我只运行java -jar myApp-xxxxx在服务器上,它非常好用。

就文档而言,似乎缺乏关于Clojure部署的具体文档。如果您想第一次使用VPS路线,则必须自己摸索。我发现几乎没有任何问题是与Clojure有关的。


4
在开发过程中,我会使用以下工具:
lein ring server 

编译成war文件的方式如下:

lein ring uberwar

只需将生成的jar文件放入Webapps目录中,它就能正常工作。顺便说一下,我使用的是Jetty。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接