Tomcat 和 Jenkins 分别位于同一台服务器上

Tomcat 和 Jenkins 分别位于同一台服务器上

我从未在 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

相关内容