В доступе отказано в привязке к порту при запуске приложения Scala через SBT - PullRequest
6 голосов
/ 06 февраля 2012

Я пытаюсь запустить свой код Scala с SBT, но получаю ошибку ниже. Это происходит как с SBT, использующим командную строку, так и с IntelliJ Idea.

    [error] (run-main) org.jboss.netty.channel.ChannelException:
    Failed to bind to: /127.0.0.1:80
    org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:80
    ....
    ....
    Caused by: java.net.SocketException: Permission denied

Что я могу настроить, чтобы разрешить доступ к порту. Это происходит как при попытке запуска на локальном Mac, так и на удаленном сервере Ubuntu.

Запуск sbt с «sudo sbt» решает проблему, но это не решение. Где я могу установить разрешение, чтобы разрешить моему приложению Scala доступ к порту 80.

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012

Решение этой проблемы будет зависеть от операционной системы, а не от того, что может сделать SBT, Scala или Java.

Например, Debian предлагает три различных решения , всекоторый может использоваться в других дистрибутивах Linux - два из них являются вариантами запуска от имени пользователя root, а третий использует iptables для фальшивых прослушиваний на порту 80.

В FreeBSD можно отключитьполное ограничение порта, и Solaris может сделать это для каждого пользователя и порта, как описано (для обоих) здесь .

4 голосов
/ 06 февраля 2012

Запуск sbt с «sudo sbt» решает проблему, но это не решение.Где я могу установить разрешение для доступа моего приложения Scala к порту 80.

Хотя я думаю, что это ваше единственное решение.Только привилегированные приложения могут связываться с портами менее 1024.

Возможно, вам удобнее использовать http-прокси на порту 80 (только прокси-сервер в качестве корневого), либо у вас есть правило ipfilter, которое перенаправляет входящий порт 80 напорт 8080?Смотри также этот ответ .

2 голосов
/ 06 февраля 2012

Возможно, вы захотите взглянуть на commons-daemon [1] и его двоичный файл jsvc. Это позволяет вам запускать как root и удалять привилегии после некоторых задач. Задачами здесь могут быть привязка порта.

[1] http://commons.apache.org/daemon/

...