簡體   English   中英

通過SBT運行Scala應用程序時,權限被拒絕綁定到端口

[英]Permission denied to bind to port when running Scala application via SBT

我正在嘗試使用SBT運行我的Scala代碼,但是得到以下錯誤。 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服務器上運行時,會發生這種情況。

使用“sudo sbt”運行sbt可以解決問題,但這不是解決方案。 我在哪里可以設置允許我的Scala應用訪問端口80的權限。

使用“sudo sbt”運行sbt可以解決問題,但這不是解決方案。 我在哪里可以設置允許我的Scala應用訪問端口80的權限。

不過,我認為這是你唯一的解決方案。 只有特權應用程序才能綁定到1024以下的端口。

也許你更喜歡在端口80上運行http代理(只有代理作為root),或者有一些ipfilter規則將傳入端口80重新路由到端口8080? 另見這個答案

此問題的解決方案將取決於操作系統,而不取決於SBT,Scala或Java可能執行的任何操作。

例如,Debian提出了三種不同的解決方案 ,所有這些解決方案都可用於其他Linux發行版 - 其中兩種是以root身份運行的變體,第三種使用iptables來偽造端口80上的偵聽。

在FreeBSD一個可以完全禁用低端口限制,和Solaris可以這樣做每端口和用戶,如所描述的(兩者) 這里

您可能想查看commons-daemon [1]及其jsvc二進制文件。 這允許您在執行某些任務后以root身份啟動並刪除權限。 這里的任務可能是端口的綁定。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM