Jenkins在suse linux上启动时遇到的问题

Jenkins在suse linux上启动时遇到的问题,jenkins,Jenkins,我们已经在Suse linux上安装了Jenkins。它在2天前运行良好。从昨天开始,我们面临一个问题。jenkins服务启动,但仅持续1-2秒,然后再次停止。端口80上的服务似乎尚未启动。我们已经在80上配置了HTTP端口,因此文件中没有任何更改。可能的原因是什么? 以下是日志内容: Feb 15, 2014 7:07:49 PM winstone.Logger logInternal INFO: Beginning extraction from war file Jenkins home

我们已经在Suse linux上安装了Jenkins。它在2天前运行良好。从昨天开始,我们面临一个问题。jenkins服务启动,但仅持续1-2秒,然后再次停止。端口80上的服务似乎尚未启动。我们已经在80上配置了HTTP端口,因此文件中没有任何更改。可能的原因是什么? 以下是日志内容:

Feb 15, 2014 7:07:49 PM winstone.Logger logInternal
INFO: Beginning extraction from war file
Jenkins home directory: /var/lib/jenkins found at: System.getProperty("JENKINS_HOME")
Feb 15, 2014 7:07:52 PM winstone.Logger logInternal
INFO: Winstone shutdown successfully
Feb 15, 2014 7:07:52 PM winstone.Logger logInternal
SEVERE: Container startup failed
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:39)
at        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at Main._main(Main.java:273)
at Main.main(Main.java:98)
Caused by: java.io.IOException: Failed to listen on port 80
at winstone.HttpListener.getServerSocket(HttpListener.java:119)
at winstone.HttpListener.start(HttpListener.java:72)
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.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at winstone.HttpListener.getServerSocket(HttpListener.java:114)
... 10 more
2014年2月15日下午7:07:49温斯顿。Logger LoginInternal
信息:开始从war文件提取
Jenkins主目录:/var/lib/Jenkins位于:System.getProperty(“Jenkins_home”)
2014年2月15日下午7:07:52温斯顿。Logger logInternal
信息:Winstone已成功关闭
2014年2月15日下午7:07:52温斯顿。Logger logInternal
严重:容器启动失败
java.io.IOException:无法启动侦听器:winstone.HttpListener
位于winstone.Launcher.spawnlister(Launcher.java:229)
在winstone.Launcher.(Launcher.java:181)
位于winstone.Launcher.main(Launcher.java:384)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
在Main.\u Main(Main.java:273)
Main.Main(Main.java:98)
原因:java.io.IOException:未能在端口80上侦听
位于winstone.HttpListener.getServerSocket(HttpListener.java:119)
在winstone.HttpListener.start(HttpListener.java:72)
位于winstone.Launcher.spawnlister(Launcher.java:220)
... 8个以上
原因:java.net.BindException:权限被拒绝
位于java.net.PlainSocketImpl.socketBind(本机方法)
位于java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
位于java.net.ServerSocket.bind(ServerSocket.java:328)
位于java.net.ServerSocket(ServerSocket.java:194)
位于java.net.ServerSocket。(ServerSocket.java:150)
位于winstone.HttpListener.getServerSocket(HttpListener.java:114)
... 10多

发布日志后,我可以看出它与我在评论中猜测的完全一样

它无法在端口上开始侦听(在您的情况下为80):

原因是您没有权限:

Caused by: java.net.BindException: Permission denied
这是因为最多1024个端口只能由root用户打开。您现在有两个选项:

  • 以root用户身份运行Jenkins(对于安全问题,我不建议这样做)
  • 选择了一个大于1024的端口。这是首选的解决方案。然后,您可以将端口80重定向到您选择的端口

您应该检查日志。在开始Jenkins时,还要确保你是root。这对于打开1024个端口是必需的。我已经用日志编辑了我的问题。你能看看这个端口错误的原因吗?谢谢你的回复。我们采用了第一种选择,将詹金斯作为root用户运行。问题得到了解决,但从最近几天开始,我们看到了maven存储库的问题。因为我们已经给了Jenkins root权限,所以我们还必须给maven root权限,这样EAR文件就可以复制到/var/lib/.m2存储库中,但令我们惊讶的是,maven正在根目录中创建根级别的.m2存储库,位于:/root/.m2,有时文件被复制到/var/lib/.m2,有时复制到root/.m2。你能帮我找到一些解决方案吗?是的:不要以root身份运行它!认真地在此之后,您可以根据自己的喜好更改中的存储库位置,但不要以root.Ok的身份运行它。另一方面,我们没有更改maven中settings.xml中的任何内容,之前(jenkins问题)它复制到/var/lib。事实上,我在settings.xml的任何地方都没有看到定义这个位置。在settings.xml中var/lib在哪里定义?我猜,
/var/lib
是Jenkins默认用户(通常称为“Jenkins”)的主文件夹。默认的Maven存储库是在执行它的用户的主文件夹中创建的。
Caused by: java.net.BindException: Permission denied