前段时间,我在一台服务器上安装了 Hudson 守护程序(在 debian lenny 测试上运行)。一切正常,直到我执行升级。此时无法通过端口 8080(这是使用的默认端口)访问 Hudson。我一直在寻找 iptables 问题,但是端口 8080 在 INPUT 和 OUTPUT 中是打开的。/etc/default/hudson 中的配置文件好像没问题,我没碰过。如果我做一个 ps aux | grep hudson,hudson deamon 正在运行。
更新 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 | 格雷普哈德森:
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