小编典典

在Ubuntu 17.10上允许对Spring Boot Jar的低级别端口访问

tomcat

按照此处的说明,我从spring引导项目(1.5.8)中创建了一个可执行jar,以便将其作为服务运行(我想在port上运行它443)。如果仅以开始启动,java -jar proj.jar则会出现错误消息,指出该端口正在使用中,但是使用sudo java -jar proj.jartomcat可以启动并且该站点可以正常工作。

试图允许对jar的低级别端口访问,但是仍然出现错误。(sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/jarsetcap 'cap_net_bind_service=+ep' /path/to/jar

如何赋予jar / tomcat低级端口访问权限,以便它在443上运行并且可以将其作为服务启动?

作为非root用户,我通过以下方式安装了jar:

  1. 克隆仓库
  2. chmod +x ./mvnw
  3. ./mvnw package -Dmaven.test.skip=true
  4. cd target 并制作application.protperties并复制keystore.jks
  5. sudo ln -s /home/user/projectname/target/proj-0.0.1-SNAPSHOT.jar /etc/init.d/projectname
  6. sudo chmod +x /etc/init.d/projectname
  7. sudo update-rc.d projectname defaults
  8. sudo service projectname start

检查日志文件,我可以看到错误,但是正如我提到的,如果我使用sudo启动jar,它就可以工作。

The Tomcat connector configured to listen on port 443 failed to start. The port may already be in use or the connector may be misconfigured.


阅读 279

收藏
2020-06-16

共1个答案

小编典典

我希望有人能给我一个更好的答案,但是如果我直接向Java添加了低级端口访问权限(我已经安装了oracle),则可以启动jar sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/lib/jvm/java-8-oracle/jre/bin/javasudo setcap CAP_NET_BIND_SERVICE=+eip /usr/lib/jvm/java-8-oracle/bin/java

应该也适用于OpenJDK,但是具有不同的可执行位置,我用以下方法进行检查: echo $PATH

2020-06-16