首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在端口80运行Noir web框架

在端口80运行Noir web框架
EN

Stack Overflow用户
提问于 2011-11-27 18:19:21
回答 3查看 1.4K关注 0票数 1

元注释:下面的问题没有答案,但问题所涉及的问题被认为是解决了。感谢@georgek

我正在运行Ubuntu的家用机器上试验Noir web框架。我从Noir站点跟踪了"Getting started"部件,并启动并运行了演示服务器。但是这个例子在测试port 8080上运行。我希望它在默认的http端口(端口80)上运行,所以我编辑了clojure文件my-website/src/my_website/server.cljmy-website/src/my_website/server.clj部分

代码语言:javascript
复制
(ns my-website.server
  (:require [noir.server :as server]))

(server/load-views "src/my_website/views/")

(defn -main [& m]
  (let [mode (keyword (or (first m) :dev))
        port (Integer. (get (System/getenv) "PORT" "80"))] ; <- I changed "8080" to "80"
    (server/start port {:mode mode
                        :ns 'my-website})))

并试图再次运行演示,但我得到了以下内容:

代码语言:javascript
复制
$ lein run
Starting server...
2011-11-27 13:26:27.183:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
2011-11-27 13:26:27.189:INFO::jetty-6.1.25
2011-11-27 13:26:27.242:WARN::failed SocketConnector@0.0.0.0:80: java.net.BindException: Permission denied
2011-11-27 13:26:27.242:WARN::failed Server@111ded2: java.net.BindException: Permission denied
Exception in thread "main" java.lang.RuntimeException: java.net.BindException: Permission denied
    at clojure.lang.Util.runtimeException(Util.java:165)
    at clojure.lang.Compiler.eval(Compiler.java:6476)
    at clojure.lang.Compiler.eval(Compiler.java:6455)
    at clojure.lang.Compiler.eval(Compiler.java:6431)
    at clojure.core$eval.invoke(core.clj:2795)
    at clojure.main$eval_opt.invoke(main.clj:296)
...
...

我有根的访问机器,我只是不知道从哪里开始解决这个问题。有人能帮忙吗?

我尝试过的:

我试图以su的形式运行su,但也没有成功。

为了释放端口80,我停止了Apache2服务器(这是正确的方法吗?)

代码语言:javascript
复制
$ sudo /etc/init.d/apache2 stop

还是不起作用。

我在一台macbook上又做了一遍,它适用于端口80 (需要“sudo”)。不知道为什么它不适用于Ubuntu。

--我服用的解决方案

解决问题的实际办法(而不是问题的答案):

我遵循this网页,使用8080端口作为服务,然后配置Apache2服务器的"httpd.conf“文件,让端口8080侦听对端口80的所有请求。这个解决方案由@georgek提供。

如果这篇文章对某些人来说不值钱的话,我很抱歉,我是这个领域的新手。再次感谢大家!

一种替代解决方案

@ivant提供了另一种解决方案,同样有效!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-27 21:45:36

我建议在8080上以非根用户的身份运行Noir,并使用规则将该域和端口转发给运行在80上的Apache。你不想那样做还有别的原因吗?

票数 2
EN

Stack Overflow用户

发布于 2011-11-27 18:59:53

只有根用户可以使用低于1024的端口。如果您说您尝试以root或sudo的方式运行它,但仍然没有工作,那么其他应用程序很可能已经使用了端口80。

LE:这应该会显示哪个进程正在使用端口80。

代码语言:javascript
复制
ps -eo pid,user,group,args,etime,lstart | grep `lsof -i :80 | grep LISTEN | head -1 | cut -f4 -d' '`
票数 4
EN

Stack Overflow用户

发布于 2011-11-29 23:30:14

还有私营化自绑定,它们授予绑定到低端口(< 1024)到非根应用程序的权限。它们都可以在ubuntu中使用,并且可能是apache的一个可行的替代方案,特别是在开发过程中。若要安装(两种),请使用以下内容:

代码语言:javascript
复制
$ sudo apt-get install privbind authbind

并查看手册页以获得使用说明。

我知道我参加聚会有点晚了,但我认为这些可能还是有用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8287828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档