[Мета-примечания: на следующий вопрос не дан ответ, но проблема, в которую вовлечен вопрос, считается решенной.Спасибо @georgek]
Я экспериментирую с веб-фреймворком Noir
на домашней машине под управлением Ubuntu linux.Я последовал за частью "Getting started"
с сайта Noir и запустил демо-сервер.Но этот пример работал при тестировании port 8080
.Я хотел, чтобы он работал по умолчанию через порт http (порт 80), поэтому я отредактировал "8080"
часть файла clojure 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)
...
...
У меня есть root-доступ к машине, я просто не знаю, с чего начать, чтобы решить эту проблему.Кто-нибудь может помочь?
Что я пробовал:
Я пытался запустить lein run
как su
, но это тоже не сработало.
Я остановил сервер Apache2 для освобождения порта 80 (это правильный способ сделать это?):
$ sudo /etc/init.d/apache2 stop
Все еще не работает.
Я сделал все это снова на MacBook, он работал для порта 80 (необходим "sudo").Не знаю, почему это не работает для Ubuntu.
Решение, которое я выбрал
Практическое решение проблемы (не ответ навопрос):
Я следил за this
веб-страницей и использовал порт 8080 в качестве службы, а затем настроил файл httpd.conf сервера Apache2, чтобы разрешить порт 8080прослушайте все запросы к порту 80. Это решение предоставлено @georgek.
[Извините, если этот пост не является ценным для некоторых людей, я новичок в этой области.Спасибо еще раз всем!]
Альтернативное решение
@ ivant предлагает альтернативное решение, которое также работает!