Debian lenny 上的 Hudson

Debian lenny 上的 Hudson

不久前,我在一台服务器上安装了 Hudson 守护进程(在 debian lenny testing 上运行)。在我执行升级之前,一切都正常。此时 Hudson 无法通过端口 8080(这是使用的默认端口)访问。我查找了 iptables 问题,但端口 8080 在 INPUT 和 OUTPUT 中处于打开状态。/etc/default/hudson 中的配置文件似乎没问题,我没有动过它。如果我执行 ps aux | grep hudson,hudson 守护进程正在运行。

更新 1:对我来说真正奇怪的是,在 /var/log/hudson/hudson.log 中我没有收到任何错误:

[Winstone 2010/02/10 17:10:04] - Control thread shutdown successfully
[Winstone 2010/02/10 17:10:04] - Winstone shutdown successfully
Running from: /usr/share/hudson/hudson.war
[Winstone 2010/02/10 17:10:43] - Beginning extraction from war file
hudson home directory: /var/lib/hudson
[Winstone 2010/02/10 17:10:44] - HTTP Listener started: port=8080
[Winstone 2010/02/10 17:10:44] - AJP13 Listener started: port=8009
[Winstone 2010/02/10 17:10:44] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled
10 févr. 2010 17:10:44 hudson.model.Hudson$4 onAttained
INFO: Started initialization
10 févr. 2010 17:10:44 hudson.model.Hudson$4 onAttained
INFO: Listed all plugins
10 févr. 2010 17:10:44 hudson.model.Hudson$4 onAttained
INFO: Prepared all plugins
10 févr. 2010 17:10:44 hudson.model.Hudson$4 onAttained
INFO: Started all plugins
10 févr. 2010 17:10:46 hudson.model.Hudson$4 onAttained
INFO: Loaded all jobs
10 févr. 2010 17:10:46 hudson.model.Hudson$4 onAttained
INFO: Completed initialization
10 févr. 2010 17:10:47 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@caa559d: display name [Root WebApplicationContext]; startup date [Wed Feb 10 17:10:47 CET 2010]; root of context hierarchy
10 févr. 2010 17:10:47 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@caa559d]: org.springframework.beans.factory.support.DefaultListableBeanFactory@40d2f5f1
10 févr. 2010 17:10:47 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@40d2f5f1: defining beans [daoAuthenticationProvider,authenticationManager,userDetailsService]; root of factory hierarchy
10 févr. 2010 17:10:47 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@4d88a387: display name [Root WebApplicationContext]; startup date [Wed Feb 10 17:10:47 CET 2010]; root of context hierarchy
10 févr. 2010 17:10:47 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@4d88a387]: org.springframework.beans.factory.support.DefaultListableBeanFactory@6153e0c0
10 févr. 2010 17:10:47 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6153e0c0: defining beans [filter,legacy]; root of factory hierarchy
10 févr. 2010 17:10:47 hudson.TcpSlaveAgentListener <init>
INFO: JNLP slave agent listener started on TCP port 59750

更新 2

使用 lsof -i -n -P | grep hudson 得到的结果:

java      28985      hudson   97u  IPv6 2002707      0t0  TCP *:8080 (LISTEN)
java      28985      hudson   99u  IPv6 2002708      0t0  TCP *:8009 (LISTEN)
java      28985      hudson  147u  IPv6 2002711      0t0  TCP *:59750 (LISTEN)
java      28985      hudson  150u  IPv6 2002712      0t0  UDP *:33848 

我不知道我可以验证什么。有人能帮我解决这个问题吗?

答案1

经过调查,我相信我知道问题出在哪里:

lsof -i -n -P | |grep hudson
java      28985      hudson   97u  IPv6 2002707      0t0  TCP *:8080 (LISTEN)
java      28985      hudson   99u  IPv6 2002708      0t0  TCP *:8009 (LISTEN)
java      28985      hudson  147u  IPv6 2002711      0t0  TCP *:59750 (LISTEN)
java      28985      hudson  150u  IPv6 2002712      0t0  UDP *:33848 

如您所见,所有 hudson 服务都使用 ipv6。为了解决这个问题,我需要通过编辑 /etc/default/hudson 强制 java 使用 ipv4 而不是 ipv6 启动 hudson:

JAVA_ARGS="-Djava.net.preferIPv4Stack=true"

现在,一切正常!

感谢您的帮助 :)

更新:这个错误是由于我的发行版造成的:Debian Lenny Testing。

为了解决这个问题,编辑 /etc/sysctl.d/bindv6only.conf 以将 net.ipv6.bindv6only 设置为 0。

此问题已知:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560044

相关内容