[メタノート:以下の質問には答えられませんが、問題が含まれている問題は解決されたものとみなされます。 @georgekに感謝]Noir Web framework on port 80
私は実験していますNoir
Ubuntu Linuxを実行している家庭のマシン上の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]11ded2: 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
としてlein run
を実行しようとしたが、それはどちらか動作しませんでした:私が試してみました何
。
私は(これはそれを行うための正しい方法ですか?)ポート80を解放するためのApache2サーバを停止:
$ sudo /etc/init.d/apache2 stop
はまだ動作しません。
私はMacBookでこれをやり直しました。ポート80(「sudo」が必要です)で動作しました。なぜそれがUbuntuで動作しないのか分かりません。
私は問題(ない質問への答え)に
現実的な解決策を取った解決策:私はthis
Webページに続く
、およびサービスとして8080ポートを使用次にApache2サーバーの "httpd.conf"ファイルを設定して、ポート8080がすべての要求をポート80にリッスンさせるようにしました。この解決策は@georgekによって提供されています。
[この投稿が一部の人には価値がない場合は申し訳ありませんが、私はこの分野では新しいです。もう一度みんなありがとう!]
代替ソリューション
@ivantも作品の代替ソリューションを提供しています!
あなたはこれを詳述できますか? ApacheをインストールしたUbuntuを実行しているマシンに、ポート80とポート8080の両方を転送しました。私は次に何をすべきですか? – Ning
申し訳ありませんが、「フォワード」はここで間違った考えをしているかもしれません。私はApacheを使用しませんが、たとえば、設定ファイルでnginxを使用すると、webサーバーがdomain.comで要求を受け取ると、Noirがあるポート8080に要求を送信するようなルールを書くことができます聞いている。私は 'リバースプロキシのapache'を見上げるとここであなたを助けるかもしれないと思います。 – georgek
/etc/apache2/sites-availableにあるconfigureファイルを編集しました。 "VirtualHost *:80"コンテナに、 "Redirect 301/http://mysite.com:8080/"を追加しました。さて、私はブラウザ "mysite.com"を入力すると、私が望むページが表示されますが、URLは "mysite.com:8080"という醜いものです。 – Ning