我从未在 CentOS 上安装过 Jenkins 作为软件包,但现在我尝试了,它似乎无法与独立的 Tomcat 服务器一起正常工作。
首先,我安装了 tomcat yum install tomcat
(我使用的是 CentOS 7)。
接下来,我添加了 Jenkins repo 并运行yum install jenkins
。它没有从头开始,因为 Tomcat 正在运行并且端口已绑定。我已将端口设置/ect/sysconfig/jenkins
为 8081。
现在看来运行良好,Jenkins 已启动并运行。
但是,我无法以 身份启动 Tomcat Caused by: java.net.BindException: Address already in use <null>:8009
。
如果我先启动tomcat
然后启动,情况也是如此jenkins
:jenkins 失败Failed to start Jetty
。我该如何管理这两者,而不是通过手动将 Jenkins 安装到 tomcat 中jenkins.war
?
答案1
端口 8009 通常用于 Tomcat 中的 AJP Connector。它常用于 Apache 与 Tomcat 之间的通信。
听起来 Jenkins 和 Tomcat 都在设置 AJP 连接器来监听端口 8009。Tomcatserver.xml
的文件将其列为:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将其更改为监听另一个端口,并将与其通信的程序(可能是 httpd)更改为使用该其他端口。或者,如果您不使用连接器,则在其中一个或两个服务器中完全删除它。
如果 Jenkins 使用的是 Tomcat 本身的另一个副本,则该实例将在某处拥有自己的副本server.xml
。如果 Jenkins 使用的是自己的容器(例如 Winstone),则某处可能会有类似的配置文件。
这样就可以消除java.net.BindException
。
在 Tomcat 中,默认的 HTTP 连接器端口是 8080。如果 Jenkins 默认使用 8080,那么 HTTP 连接器端口可能是您在 中更改为 8081 的端口/etc/sysconfig/jenkins
。