2012-02-07 156 views
4

我试图让Jenkins作为Windows Server 2008 Datacenter(SP2)上的服务安装。我似乎无法让它作为服务运行,并且正在寻找任何想法来帮助它实现目标。jenkins服务无法在Windows 2008上启动

当我尝试安装Jenkins与本地Windows包时,我得到“错误1920.服务Jenkins无法启动。”在msiexec日志中。

我已经进行了手动安装以下步骤:

  • Java安装32位
  • 开始詹金斯与Java的罐子jenkins.war
  • 飘来管理詹金斯并将其设置为运行一个Windows服务。
  • 告知Jenkins重新启动自己作为服务。

在这一点上,詹金斯死亡,并没有回来。

当我尝试手动启动Jenkins时,出现错误1053(服务没有响应)。我无法找到任何日志文件或其他信息。

欢迎任何想法或建议,我也很想好好听听从 得到它在这个操作系统(或Windows 2003服务器)上工作的人。

非常感谢

回答

0

建议:如果你能在所有的避开它,不要运行詹金斯作为Windows服务 - 你可以进入各种连接权限并在后台运行的问题。缺点是它不会在机器重新启动时自动启动,但更多的人可以忍受这一点。根据我的经验,Jenkins在撞击方面非常强大。如果你想特别小心 - 编写一个包装器,它经常检查Jenkins是否还活着(例如,通过尝试通过HTTP连接到它),并在它已经死亡时重新启动它。

附是一个Python脚本,它是(没有任何担保,负债等):

'''Usage: 
hudson.py [<http-port>]''' 

# Script to start/revive Hudson/Jenkins 
# The script checks if Hudson is alive by trying to connect to its HTTP port 
# if connection fails - it tries to restart Hudson 

import sys 
import time 
import httplib 
import os 

HTTPTimeout = 10 
CheckInterval = 300 
DefaultHudsonPort = 8081 

if (__name__ == '__main__'): 
    if len(sys.argv) > 2: 
     print __doc__ 
     sys.exit(1) 
    elif len(sys.argv) == 2: 
     portNum = int(sys.argv[1]) 
    else: 
     portNum = DefaultHudsonPort 

    httpConnection = None 
    while True: 
     if not httpConnection: 
      httpConnection = httplib.HTTPConnection("127.0.0.1", portNum, timeout = HTTPTimeout) 
     try: 
      httpConnection.connect() 
      httpConnection.close() 
     except: 
      print "(Re)Starting Hudson/Jenkins on port %d" % portNum 
      os.system("java -jar hudson.war --httpPort=%d" % portNum) 
     time.sleep(CheckInterval) 
+0

找到[修复](https://github.com/kohsuke/winsw/issues/6),但它对我来说不起作用。所以,我的修复很简单 - 只需将jenkins安装在其他机器上(使用相同的操作系统),并且一切正常。感谢您的建议! – Rinat 2012-02-08 14:29:52

+0

我不认为这是一个好主意,我想不出一个良好的环境,你应该打开会议,因为产品不支持一个功能,因为它应该 – 2017-07-10 14:04:44

1

我对Windows 2003 Server的类似问题。我已经安装.net framwork 4.0,但jenkins(v1.4.60)不支持这个框架。安装.net framework 2.0(v2.0.50727)后,问题解决了。

4

版本1.498具有更强的安全性,可以打破詹金斯奴隶作为服务。

https://issues.jenkins-ci.org/browse/JENKINS-16273

建议包括:

  1. 停止服务
  2. 卸载如果存在DOS服务(sc delete jenkinsslave-C__Jenkins
  3. 删除旧的詹金斯-讯天创t05,slave.jar和詹金斯-slave.xml
  4. 启动网络客户端并让它安装服务
  5. 编辑詹金斯 - 奴隶。XML所以它看起来像这样的重要组成部分,是<arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpCredentials <user>:<password> -jnlpUrl http://<your server>/computer/<slave name>/slave-agent.jnlp</arguments>

我发现删除slave.jar并启动Web客户端的登录的用户最好的工作,你会得到一个秘密,需要jnlpCredentials编辑XML。

如果我没有删除slave.jar,我发现编辑jenkins-slave.xml和删除作品没有任何证书(安全漏洞?)。参见Jenkins-slave.err

"-secret" is not a valid option 

詹金斯-slave.xml

... 
<service> 
    <id>jenkinsslave-D__Jenkins</id> 
    <name>Jenkins Slave</name> 
... 
    <executable>C:\Program Files\Java\jre7\bin\java.exe</executable> 
    <arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://jenkins.domain/jenkins/computer/mycomputername/slave-agent.jnlp </arguments> <!-- -secret fafd7bf18fdcc48ffb17fe1ff0a072ce5d33b004769b351e9d633f875b63fb59 --> 
... 
+0

添加jlnpCredentials是不相关的,并且不再需要v1 .514;) – 2013-05-04 11:42:38

+0

是的,我认为这个秘密取代了凭据,它并不是有效的, – KCD 2013-05-06 02:45:18

+0

我会把芯片放在事实上,如果你有v1.499之前的版本,那么根据slave.xml取得一些代码路径。 。但现在,如果你创建新的奴隶,它们被保存在jenkins-service.exe.config(或类似的:)文件)... – 2013-05-07 13:28:03

0

我有同样的问题,但对我来说,与jenkins.xml配置文件有问题。这是不正确的XML,因此詹金斯无法正确加载它。我发现这是一个配置错误,在管理员的命令提示符下执行jenkins.exe,它给了我一个合适的错误输出。

0

我发现Jenkins服务的默认设置只允许256m的HEAP。我想他们希望我们只编写“Hello World”。偶然的PermGen错误后我发现了这个。但是我发现,我不能纠正jenkins.xml所有的,

-Xrs -Xms<value> -Xmx<value> --XX:PermSize=<value> --XX:MaxPermSize=<value> 

我只能开始詹金斯而设置,

-Xrs -Xms<value> -XX:MaxPermSize=<value> 
-1

由KCD提供的答案是完整的,非常相关。但是由于一个愚蠢的错误,我们也面临这个问题的一些时候。

我也遇到类似的问题,我从COMMAND PROMPT发起Jenkins时收到了错误信息。

,我是进入了该命令,

$: start jenkins.exe 

后,当我提到我自己的笔记,我发现这个问题要简单得多。我错误地使用了这个命令。它应该是:

$: jenkins.exe start/stop/restart 

正确输入命令后,问题得到解决。

+0

“由KCD提供的答案是完整且相当相关的”。我同意 – MatteoSp 2013-11-26 14:59:53

0

我得到了同样的问题&通过设置Java目录路径解决。

相关问题