linux - 无法在 debian 7 上的端口 80 上启动 Jenkins

标签 linux jenkins port

我已经在 debian 7 上安装了 Jenkins。现在我想在端口 80 上运行它,这样我就可以在本地 LAN 上简单地键入 http://jenkins 而不是 http://jenkins:8080(目前有效)。我已将文件 /etc/default/jenkins 修改为:

# port for HTTP connector (default 8080; disable with -1)
#HTTP_PORT=8080
#HTTP_PORT=88
HTTP_PORT=80

但是当我重新启动 jenkins 服务时:sudo service jenkins restart 并尝试访问 http://jenkins:80 我只是得到一个空白/错误页面。日志显示 (/var/log/jenkins/jenkins.log ):

java.io.IOException: Failed to start a listener: winstone.HttpListener
    at winstone.Launcher.spawnListener(Launcher.java:229)
    at winstone.Launcher.<init>(Launcher.java:181)
    at winstone.Launcher.main(Launcher.java:384)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at Main._main(Main.java:288)
    at Main.main(Main.java:98)
Caused by: java.io.IOException: Failed to listen on port 80
    at winstone.HttpListener.getServerSocket(HttpListener.java:122)
    at winstone.HttpListener.start(HttpListener.java:75)
    at winstone.Launcher.spawnListener(Launcher.java:220)
    ... 8 more
Caused by: java.net.BindException: Permission denied
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:353)
    at java.net.ServerSocket.bind(ServerSocket.java:336)
    at java.net.ServerSocket.<init>(ServerSocket.java:202)
    at java.net.ServerSocket.<init>(ServerSocket.java:158)
    at winstone.HttpListener.getServerSocket(HttpListener.java:117)
    ... 10 more
Sep 11, 2013 9:09:30 PM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Sep 11, 2013 9:09:30 PM hudson.WebAppMain$3 run
SEVERE: Failed to initialize Jenkins
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:244)
    at jenkins.InitReactorRunner.run(InitReactorRunner.java:43)
    at jenkins.model.Jenkins.executeReactor(Jenkins.java:906)
    at jenkins.model.Jenkins.<init>(Jenkins.java:806)
    at hudson.model.Hudson.<init>(Hudson.java:81)
    at hudson.model.Hudson.<init>(Hudson.java:77)
    at hudson.WebAppMain$3.run(WebAppMain.java:221)
Exception in thread "pool-2-thread-1" java.lang.NullPointerException
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:191)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)

我尝试运行 sudo netstat -lp 但没有看到任何端口信息(看起来没有任何应用程序在端口 80 上运行)。我也尝试过使用 port=88,但结果相同。

有什么建议吗?

最佳答案

我也有同样的问题,我发现没有root权限不能监听1024以下的端口。

我们可以做几件事,但我认为最安全的是:

  • 使用 iptables 将端口 80 重定向到 8080

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

除此之外,您可以通过 chownchmod 以 root 身份运行 jenkins,但我认为这可能很危险。

这里介绍了其他可能性:

https://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-user

关于linux - 无法在 debian 7 上的端口 80 上启动 Jenkins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749560/

相关文章:

git - 如何正确连接 Bitbucket 和 Jenkins

azure - 如何使用 Azure cli 打开出站端口?

javascript - 如何检查客户端 JavaScript 中的端口可用性?

linux - 如何转换dd/mm/yy hh :mm:ss to yyyy-mm-ddThh:mm:ss using linux?

linux - rrdtool 使用 awk 和排序从多个平面文件更新

jenkins - 捕获并发送 Jenkinsfile 中 sh 方法的输出

javascript - 更改要通过代码打开的新端口的状态

Java - 分配的内存与高内存利用率(Elasticsearch)

linux - 如何防止禁用的 AD 用户登录拥有其公钥的 Linux 服务器?

Gitlab webhook 不会触发在 jenkins 上的构建