我正在玩Clojure / ClojureScript,我正在编写一个Web应用程序。当我使用ring作为开发服务器时,一切都很好。
问题是我应该用什么容器进行生产?我也应该使用戒指进行生产吗?我应该使用Tomcat吗?是否有推荐的方法来部署Clojure应用程序?你能指点我一些关于这方面的文件吗?
谢谢!
答案 0 :(得分:9)
部署一个用Java编写的java servlet与Clojure并没有任何本质上的区别,所有Clojure Web库和框架都会生成兼容的servlet,因此您有许多部署选项。
我们使用netty运行基于环的Web应用程序,只需从系统服务运行“lein run”即可在生产中发挥极大的作用。许多其他人选择使用lein uberwar来生成war文件并在tomcat上托管。特定托管机制似乎不如部署过程相关。所有JavaScript文件都是从CDN提供的。 Immutant也是一个有趣且非常以Clojure为导向的选择,具有强烈的“企业”感觉。
最让我感到震惊的是构建可重复的构建,包括部署。 Pallet是一个很好的方式,虽然它有一点学习曲线。
答案 1 :(得分:6)
有几个选择。
第一个很容易:Heroku。他们有一个免费的层,足以进行部署和测试。我不会详细介绍这个,但我决定不再使用Heroku了。
另一个常见选项是亚马逊AWS。我在AWS上使用lein-beanstalk收集了大多数应用程序[对不起,此处没有引用]。 Lein-beanstalk已经出现了很长一段时间,似乎维护得很好。它也由维护Compojure的同一个人维护。
我使用的是VPS。我用Nginx设置linux构建并使用git进行部署。所以,基本上,我的流程是创建网站,编译到lein uberjar,然后部署。我知道有些人可以并且确实在他们的应用程序上使用leiningen“lien ring server”,并使用许多其他配置,例如Maven,Tomcat,使用Vagrant进行部署等,但我只是运行java -jar myApp-xxxxx服务器,它很棒。
就文档而言,似乎缺乏有关Clojure部署的文档。如果你想在第一次使用VPS路线时,必须将头撞在墙上并弄明白。我发现我的问题几乎没有涉及Clojure。
答案 2 :(得分:4)
在开发中我使用:
lein ring server
:然后将其编译为我使用的war文件:
lein ring uberwar
:然后将生成的jar文件放到Webapps目录中,它运行正常。我顺便使用Jetty