元注释:下面的问题没有答案,但问题所涉及的问题被认为是解决了。感谢@georgek
我正在运行Ubuntu的家用机器上试验Noir web框架。我从Noir站点跟踪了"Getting started"部件,并启动并运行了演示服务器。但是这个例子在测试port 8080上运行。我希望它在默认的http端口(端口80)上运行,所以我编辑了clojure文件my-website/src/my_website/server.clj的my-website/src/my_website/server.clj部分
(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})))并试图再次运行演示,但我得到了以下内容:
$ 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服务器(这是正确的方法吗?)
$ sudo /etc/init.d/apache2 stop还是不起作用。
我在一台macbook上又做了一遍,它适用于端口80 (需要“sudo”)。不知道为什么它不适用于Ubuntu。
--我服用的解决方案
解决问题的实际办法(而不是问题的答案):
我遵循this网页,使用8080端口作为服务,然后配置Apache2服务器的"httpd.conf“文件,让端口8080侦听对端口80的所有请求。这个解决方案由@georgek提供。
如果这篇文章对某些人来说不值钱的话,我很抱歉,我是这个领域的新手。再次感谢大家!
一种替代解决方案
@ivant提供了另一种解决方案,同样有效!
发布于 2011-11-27 21:45:36
我建议在8080上以非根用户的身份运行Noir,并使用规则将该域和端口转发给运行在80上的Apache。你不想那样做还有别的原因吗?
发布于 2011-11-27 18:59:53
只有根用户可以使用低于1024的端口。如果您说您尝试以root或sudo的方式运行它,但仍然没有工作,那么其他应用程序很可能已经使用了端口80。
LE:这应该会显示哪个进程正在使用端口80。
ps -eo pid,user,group,args,etime,lstart | grep `lsof -i :80 | grep LISTEN | head -1 | cut -f4 -d' '`发布于 2011-11-29 23:30:14
还有私营化和自绑定,它们授予绑定到低端口(< 1024)到非根应用程序的权限。它们都可以在ubuntu中使用,并且可能是apache的一个可行的替代方案,特别是在开发过程中。若要安装(两种),请使用以下内容:
$ sudo apt-get install privbind authbind并查看手册页以获得使用说明。
我知道我参加聚会有点晚了,但我认为这些可能还是有用的。
https://stackoverflow.com/questions/8287828
复制相似问题