[元註釋:下列問題未得到解答,但問題涉及的問題被認爲已解決。感謝@georgek]在端口80上運行Noir Web框架
我在運行Ubuntu linux的家用機器上試驗Noir
web框架。我遵循Noir站點的"Getting started"
部分,並啓動並運行了演示服務器。但是這個例子在測試port 8080
上運行。我想它在默認http端口(80端口)上運行,所以我編輯Clojure的文件my-website/src/my_website/server.clj
的"8080"
部分:
(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 [email protected]:80: java.net.BindException: Permission denied
2011-11-27 13:26:27.242:WARN::failed [email protected]: 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)
...
...
我有機器的根訪問權限,我只是不知道從哪裏開始解決這個問題。任何人都可以幫忙嗎?
我曾嘗試:
我試圖運行lein run
爲su
,但它也不能工作。
我停止開放口80 Apache2的服務器(這是做的正確方法?):
$ sudo /etc/init.d/apache2 stop
還不行。
我遍佈再次做到了在MacBook上,它的工作端口80(「sudo」時需要)。不知道爲什麼它不適用於Ubuntu。
,我花了
一個實際的解決問題的方法(而不是回答這個問題)的解決方案:
我跟着this
網頁,並使用8080端口的服務,然後配置Apache2服務器的「httpd.conf」文件,讓端口8080監聽所有到端口80的請求。此解決方案由@georgek提供。
[我很抱歉,如果這篇文章對某些人沒有價值,我是這個領域的新手。再次謝謝大家!]
另一種解決方案
@ivant提供了一種替代解決方案,也適用!
你能詳細說明一下嗎?我已將端口80和端口8080轉發到運行安裝了Apache的Ubuntu的計算機。接下來我該怎麼辦? – Ning
道歉,'前鋒'可能會在這裏給出錯誤的想法。我不使用Apache,但是在nginx中,例如在配置文件中,您可以編寫一個規則,以便當您的Web服務器在domain.com上收到請求時,它會將請求發送到端口8080,在那裏您的Noir將是聽着。我認爲查找'反向代理apache'可能會幫助你在這裏。 – georgek
我編輯了/ etc/apache2/sites-available下的配置文件。在「VirtualHost *:80」容器中,我添加了「重定向301/http://mysite.com:8080/」。現在,當我輸入瀏覽器「mysite.com」時,我得到了我想要的頁面,但url很醜 - 「mysite.com:8080」。 – Ning