我们刚刚在我们的服务器(Debian 7 wheezy)上安装了 Jenkins。它在本地网络上运行良好,但在外部网络却不行。我们搜索了各种方法,但没找到解决这个问题的方法。
我们可以 ping 我们的服务器,但是当我们访问 jenkins 的地址时,它不起作用。
答案1
可能是因为以下原因:
1)你的 Web 服务器配置
对于 Apache:允许所有
对于 tomcat:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
应该
<Host name="www.example.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
2)您的防火墙设置(开放外部连接端口)
3)詹金斯配置
首先,对于Debien,修改/etc/default/jenkins,添加一行HTTP_HOST=外部地址(例如HTTP_HOST=www.example.com)
然后,将 --httpListenAddress=$HTTP_HOST 添加到您的 JENKINS_ARGS (JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --httpListenAddress=$HTTP_HOST")
最后,重启你的詹金斯
答案2
a) 在您的家用计算机(不是 Jenkins 计算机)上打开 Bash shell(Windows 上的 Git Bash 就可以了)。
b) 通过安全 SSH 隧道执行端口转发,将 Jenkins 计算机上的端口 8080“映射”到家庭计算机上的端口 8080。在 Git Bash shell 中执行此操作的命令是:
ssh -L 127.0.0.1:8080:本地主机:8080[电子邮件保护]-i“C:\PathToFolderContainingMySecretKey”
这里 xx.yyy.zzz.ab 是你的公共互联网地址(例如 62.187.151.9)。请注意,-i 后面的路径是你计算机上存储私钥的路径,该私钥与你在 Jenkins 计算机上使用的公钥相匹配。
c) 现在,您的家用电脑可以像这样连接: http://本地主机:8080
d) 首次配置 Jenkins 时,您需要初始管理员密码。获取方法如下。在家用电脑的 Git Bash shell 中(请记住,您已经通过 SSH 连接到 Jenkins 电脑):
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
将其复制并粘贴到您的浏览器中,就可以了!