Отказано в разрешении привязки к порту при запуске приложения Scala через SBT
Я пытаюсь запустить свой код 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 ответа:
Решение этой проблемы будет зависеть от операционной системы, а не от того, что могут сделать SBT, Scala или Java.
Например, Debian предлагает три различных решения, все из которых могут быть использованы в других дистрибутивах Linux-два из них являются вариациями запуска от имени root, а третий использует iptables для подделки прослушивания на порту 80.
Во FreeBSD можно полностью отключить ограничение низкого порта, и Solaris может сделать это для каждого порта и пользователя, как описано выше (для обоих) здесь .
Хотя я думаю, что это ваше единственное решение. Только привилегированные приложения могут привязываться к портам под 1024.Запуск sbt с "sudo sbt" устраняет проблему, но это не решение. Где я могу установить разрешение, чтобы разрешить моему приложению Scala доступ к порту 80.
Может быть, вам удобнее запускать HTTP-прокси на порту 80 (только прокси в качестве root), или у вас есть какое-то правило ipfilter, которое перенаправляет входящий порт 80 на порт 8080 ? Смотрите также этот ответ.