![Jenkins 在启动过程中挂起,没有错误](https://linux22.com/image/685187/Jenkins%20%E5%9C%A8%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E6%8C%82%E8%B5%B7%EF%BC%8C%E6%B2%A1%E6%9C%89%E9%94%99%E8%AF%AF.png)
因此,我尝试研究这个问题,但已经到了我不再理解我所读内容的地步(查看错误报告和邮件列表)。
我在运行 CentOS 6.8 的服务器上安装了 Jenkins 和 Java。最初启动服务时遇到了一些问题,但后来这些问题都解决了。现在停止服务并启动它只会给我一个漂亮的绿色 OK 消息,表明一切正常。当我运行时,service jenkins status
我得到了jenkins (pid 32178) is running...
。但是当我尝试使用我的服务器的 IP 地址和端口号(我将其更改为 8888)访问我的服务器时,它只是挂起,然后说网站响应时间太长。
因此我查看了我的詹金斯日志,一切看起来都很好,甚至收到了这条消息INFO: Jenkins is fully up and running
,但就在下面我得到了:
WARNING: Prober().run() exception
java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:693)
at javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1537)
at javax.jmdns.impl.tasks.state.DNSStateTask.run(DNSStateTask.java:131)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Jun 22, 2016 12:08:59 AM javax.jmdns.impl.JmDNSImpl __recover
WARNING: RECOVERING
Jun 22, 2016 12:08:59 AM javax.jmdns.impl.tasks.state.DNSStateTask run
WARNING: Canceler().run() exception
java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:693)
at javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1537)
at javax.jmdns.impl.tasks.state.DNSStateTask.run(DNSStateTask.java:131)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
所以我四处寻找解决方案,并找到了几个选项,首先是确保我的服务器正在监听我选择的端口 (8888)。所以我运行netstat -tuplen
并看到:::8888
状态为LISTEN
java 作为程序名称。这让我相信系统正在监听该端口,但也许我错了。我还发现了一个很长的邮件列表,我不明白其中的 75%,但最终还是要查看服务器上是否启用了多播,所以我运行ifconfig eth0
并得到了UP BROADCAST RUNNING MULTICAST
一大段文本,这让我相信多播已启用。
另外,我的 java 版本是 openjdk 1.8.0_91,因为我知道 Jenkins 不喜欢似乎安装在 CentOS 机器上的普通 java。
我只是想知道 Jenkins 无法运行并给出该错误还可能是什么问题,以及我可以做些什么来解决这个问题。我在很大程度上是这类事情的新手,因此更详细的信息会很有帮助。
答案1
因此,当我设置 Jenkins 时,我所遵循的说明并未指出在自己的服务器上运行 Jenkins 与在运行 Apache 的 Web 服务器上运行 Jenkins 之间存在差异。
在弄清楚确实存在差异之后,我对詹金斯配置采取了略有不同的路线。
我在 jenkins 配置文件中添加了--prefix=/jenkins
。JENKINS_ARGS
我还将 jenkins 监听的端口更改为 8081,并将 jenkins 监听的 IP 地址从 更改0.0.0.0
为127.0.0.1
我接着补充道:
ProxyPass /jenkins http://localhost:8081/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8081/jenkins
ProxyRequests Off
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8081/jenkins*>
Order deny,allow
Allow from all
</Proxy>
到我的 Apache 配置文件。这解决了我的问题并允许我访问 Jenkins。