Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以将Clojure与nginx一起使用吗?_Nginx_Clojure - Fatal编程技术网

我可以将Clojure与nginx一起使用吗?

我可以将Clojure与nginx一起使用吗?,nginx,clojure,Nginx,Clojure,这是我问题的后续行动。我已经设置了一个家庭服务器(只是我的另一台运行ubuntu和nginx的笔记本电脑),我想为clojure文件提供服务 我请求帮助理解这个过程是如何工作的。很抱歉,现在我感到困惑,我想我需要重新开始。我问了一个新问题,因为我想使用nginx而不是lein-ring-server,如该问题的答案所示 首先,我与leiningen一起启动了一个项目guestbook,运行了lein ring server,在localhost:3000上看到了“Hello World”。据我所

这是我问题的后续行动。我已经设置了一个家庭服务器(只是我的另一台运行ubuntu和nginx的笔记本电脑),我想为clojure文件提供服务

我请求帮助理解这个过程是如何工作的。很抱歉,现在我感到困惑,我想我需要重新开始。我问了一个新问题,因为我想使用
nginx
而不是
lein-ring-server
,如该问题的答案所示

首先,我与leiningen一起启动了一个项目
guestbook
,运行了
lein ring server
,在
localhost:3000
上看到了“Hello World”。据我所知,这与nginx无关

nginx如何进入这个过程?起初,我试图用nginx创建一个代理服务器,这也行得通,但我不知道如何使用该设置为clojure文件提供服务

这是我的nginx.conf文件中的内容,改编自:

所以我想使用我的域
example.com
(而不是localhost);我该怎么做呢


编辑

根据我的想法,我会选择和莱恩一起去。如前所述,创建一个似乎非常容易:

$ lein uberjar
Unpacking clojure-1.1.0-alpha-20091113.120145-2.jar
Unpacking clojure-contrib-1.0-20091114.050149-13.jar
Compiling helloworld
      [jar] Building jar: helloworld.jar
$ java -jar helloworld.jar 
Hello world!

您还可以告诉我如何将uberjar与nginx结合使用的正确文档吗?

对于初学者,不要使用
lein
在生产中运行东西。您可以使用
leinuberjar
创建一个jar文件,让所有dep都可以运行,并使用
java-jar
从生成的jar运行应用程序。还可以选择运行
lein-ring-uberwar
来创建要在tomcat内部运行的war归档,这提供了一些其他便利(如日志旋转和在大多数Linux系统上与/etc/init.d作为服务集成等)


nginx
位于应用程序前面,端口80。它将通过代理你的应用程序来提供内容。这很有用,因为nginx有许多功能(),您不需要在自己的应用程序中实现,包括与https和selinux集成的可选集成。在应用程序前面使用nginx还可以防止您需要以root用户身份运行java(通常只有root用户可以使用端口80)。此外,您可以让nginx直接为静态资产服务,而不必从应用程序中为它们服务。

请尝试。您可以在不使用任何Java Web服务器(如Jetty)的情况下使用Nginx运行clojure环处理程序。

好的,谢谢。这让我有了更好的理解。但我如何将这些付诸实践呢?例如,我发现本文作者列出了许多部署clojure应用程序的不同方法,包括他自己的解决方案(针对Apache)。我认为应该有一种标准的部署方式。我也在考虑切换到Python。作为初学者,您认为我部署Python会更容易吗?谢谢。最简单的选择是使用
lein-ring-uberwar
并将结果上传到aws beanstalk。第二个最简单的方法是使用
leinuberjar
并将结果上传到Linux服务器,然后通过
java-jar
运行它。在生产环境中使用lein并不能简化事情,因为它需要在生产环境中使用单独的开发工具链,并且会导致不可预测性,因为依赖项解析和打包不会在您的开发机器上进行。关于pyton,我不相信python直接与web对话,就像我不相信clojure直接与web对话一样,在这种情况下,最好的做法是在它前面使用nginx或类似的工具。制作一个uberjar只需要一个文件就可以运行你的应用程序,而不需要jvm之外的其他配置或安装。Python没有提供任何更简单的功能。很好,谢谢。我想我会选择使用lein uberjar,因为我想在自己的家庭服务器上运行它(只是为了学习)。创建LeinUberjar并在我的Linux服务器上使用java-jar运行它似乎很容易。现在,你能给我指出正确的方向吗?当我创建uberjar时,我该怎么做?如何使用nginx运行它?我也编辑了我的问题。告诉nginx在端口环服务的前面代理。或者,您也可以让它在将请求转发到您的ring应用程序之前,在磁盘上定义的“public”目录下查找静态资产。nginx clojure到底是什么?是我的Clojure项目中的一个依赖项为nginx公开了一些FFI,还是nginx的一个模块知道如何与我正在运行的Uberjar对话?文档没有解释我为什么需要这个。
$ lein uberjar
Unpacking clojure-1.1.0-alpha-20091113.120145-2.jar
Unpacking clojure-contrib-1.0-20091114.050149-13.jar
Compiling helloworld
      [jar] Building jar: helloworld.jar
$ java -jar helloworld.jar 
Hello world!