Clojure 如何从外部访问lein ring/jetty服务器?

Clojure 如何从外部访问lein ring/jetty服务器?,clojure,compojure,Clojure,Compojure,我目前正试图用Compojure启动一个项目 此时,我正在尝试运行hello world应用程序,并通过浏览器查看它 我在安装了Ubuntu13.04的Digital Ocean上安装了一个droplet,一旦服务器启动,我似乎无法访问该网页 lein ring server-headless 3000 eg: http://hostname:3000 我只是找不到页面。我检查了一下,以确保jetty正在使用端口3000,并且它是 我是否缺少依赖项 我想不出任何东西会阻止我查看该页面 *更新

我目前正试图用Compojure启动一个项目

此时,我正在尝试运行hello world应用程序,并通过浏览器查看它

我在安装了Ubuntu13.04的Digital Ocean上安装了一个droplet,一旦服务器启动,我似乎无法访问该网页

lein ring server-headless 3000

eg: http://hostname:3000
我只是找不到页面。我检查了一下,以确保jetty正在使用端口3000,并且它是

我是否缺少依赖项

我想不出任何东西会阻止我查看该页面

*更新:* 如果我在端口80上运行服务器,我可以看到它。我没有添加或配置任何防火墙,除非默认情况下Digital Ocean image附带防火墙。

在实例运行时

 sudo netstat -np | grep 3000

要查看服务器正在侦听的地址,如果是
0.0.0.0
,则服务器正在侦听来自任何源的连接,问题在于上游防火墙(很可能)或本地防火墙(不太可能)。如果它是“127.0.0.1
::1/128”,则您的服务器仅侦听本地连接,您需要更改project.clj文件中的绑定地址,尽管这不太可能,因为默认情况下绑定到任何接口

您能稍微扩展一下错误消息吗?是“连接被拒绝”、“连接超时”还是404“未找到页面”错误?液滴上的端口3000是否打开?您能让实例在端口80上运行吗?考虑使用UBEAR(使用Lein Ubor UBWAR任务)并将Tomcat服务作为servlet(这是我通常部署WebApps的方法,并且它工作)。@ NoSemimith:我没有安装任何防火墙,所以3000应该打开。@ NosieSmithTM在端口80上运行…ubuntu 13.04中有防火墙吗?它没有绑定到IP地址。当我将服务器的端口更改为80时,我可以看到它。任何基于unix的系统中的每个侦听套接字都有一个“绑定地址”,这是localhost(127.0.0.1),意味着它只接受绑定到地址127.0.0.1的连接,或者它是某个网络接口的特定地址,在这种情况下,它将侦听到达该接口的连接,或者它是0.0.0.0,这是任何接口的别名。如果您可以让它侦听端口80,该端口指示绑定地址为0.0.0.0,并且您需要在提供商防火墙的配置中允许访问该实例上的端口3000。您可以通过运行
curl来检查它是否在digitalocean实例上运行http://localhost:3000