Я никогда не устанавливал Jenkins в качестве пакета на CentOS, но теперь я попробовал, и, похоже, он не работает правильно бок о бок с автономным сервером Tomcat.
Прежде всего, я установил tomcat с помощью yum install tomcat
(Я использую CentOS 7).
Затем я добавил репо Jenkins и запустил yum install jenkins
. Это не началось с нуля, так как Tomcat был запущен, а порт был привязан. Я установил порт в /ect/sysconfig/jenkins
до 8081.
Теперь, похоже, все работает нормально, Дженкинс работает.
Однако я не могу запустить Tomcat как Caused by: java.net.BindException: Address already in use <null>:8009
.
То же самое, если я сначала начну tomcat
а затем начать jenkins
: jenkins не справляется с Failed to start Jetty
. Как я могу управлять обоими, не устанавливая Jenkins вручную в tomcat с помощью jenkins.war
?
Порт 8009 обычно используется для коннектора AJP в Tomcat. Он часто используется для связи между Apache и Tomcat.
Похоже, и Jenkins, и Tomcat настраивают AJP Connector для прослушивания порта 8009. server.xml
в файле Tomcat он будет указан как:
<!-- 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
.