Не удается запустить Jenkins на Mac
Я загрузил собственный пакет Mac OS X из Jenkins веб-сайт, установил его, открыл мой браузер на http://localhost:8080/ и получил страницу с этим текстом:
Status Code: 404
Exception: Request URL / not found.<br><br>
Stacktrace:
Generated by Winstone Servlet Engine v0.9.10 at Tue Nov 29 12:00:52 CET 2011
Я нашел jenkins.war
в /Applications/Jenkins
и попытался запустить его с помощью java -jar jenkins.war
:
$ pwd
/Applications/Jenkins
$ ls
jenkins.war
$ java -jar jenkins.war
Running from: /Applications/Jenkins/jenkins.war
webroot: $user.home/.jenkins
[Winstone 2011/11/29 12:03:12] - Beginning extraction from war file
Jenkins home directory: /Users/zeljko/.jenkins found at: $user.home/.jenkins
[Winstone 2011/11/29 12:03:16] - Winstone shutdown successfully
[Winstone 2011/11/29 12:03:16] - Container startup failed
java.io.IOException: Failed to start a listener: winstone.HttpListener
at winstone.Launcher.spawnListener(Launcher.java:250)
at winstone.Launcher.<init>(Launcher.java:202)
at winstone.Launcher.main(Launcher.java:398)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at Main._main(Main.java:268)
at Main.main(Main.java:96)
Caused by: java.io.IOException: Failed to listen on port 8080
at winstone.HttpListener.getServerSocket(HttpListener.java:117)
at winstone.HttpListener.start(HttpListener.java:70)
at winstone.Launcher.spawnListener(Launcher.java:241)
... 8 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at winstone.HttpListener.getServerSocket(HttpListener.java:112)
... 10 more
Nov 29, 2011 12:03:16 PM jenkins.model.Jenkins$6 onAttained
INFO: Started initialization
Nov 29, 2011 12:03:16 PM hudson.WebAppMain$2 run
SEVERE: Failed to initialize Jenkins
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:244)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:816)
at jenkins.model.Jenkins.<init>(Jenkins.java:730)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.model.Hudson.<init>(Hudson.java:77)
at hudson.WebAppMain$2.run(WebAppMain.java:217)
Поскольку сообщение об ошибке говорит Address already in use
, я попытался запустить его на другом порту:
$ java -jar jenkins.war --httpPort=8081
Running from: /Applications/Jenkins/jenkins.war
webroot: $user.home/.jenkins
[Winstone 2011/11/29 12:11:26] - Beginning extraction from war file
Jenkins home directory: /Users/zeljko/.jenkins found at: $user.home/.jenkins
[Winstone 2011/11/29 12:11:27] - HTTP Listener started: port=8081
[Winstone 2011/11/29 12:11:27] - Winstone shutdown successfully
[Winstone 2011/11/29 12:11:27] - Container startup failed
java.io.IOException: Failed to start a listener: winstone.ajp13.Ajp13Listener
at winstone.Launcher.spawnListener(Launcher.java:250)
at winstone.Launcher.<init>(Launcher.java:203)
at winstone.Launcher.main(Launcher.java:398)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at Main._main(Main.java:268)
at Main.main(Main.java:96)
Caused by: java.io.IOException: Failed to listen on port 8009
at winstone.ajp13.Ajp13Listener.start(Ajp13Listener.java:92)
at winstone.Launcher.spawnListener(Launcher.java:241)
... 8 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at winstone.ajp13.Ajp13Listener.start(Ajp13Listener.java:87)
... 9 more
Nov 29, 2011 12:11:27 PM jenkins.model.Jenkins$6 onAttained
INFO: Started initialization
Nov 29, 2011 12:11:27 PM hudson.WebAppMain$2 run
SEVERE: Failed to initialize Jenkins
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:244)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:816)
at jenkins.model.Jenkins.<init>(Jenkins.java:730)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.model.Hudson.<init>(Hudson.java:77)
at hudson.WebAppMain$2.run(WebAppMain.java:217)
Но я получаю сообщение об ошибке Address already in use
, не важно, какой порт я пытаюсь выполнить.
Я остановил брандмауэр, на всякий случай (Системные настройки > Безопасность > Брандмауэp > Стоп). Это не помогло.
Я скопировал jenkins.war
в /Users/zeljko/Jenkins
и попытался запустить его с помощью java -jar jenkins.war
и java -jar jenkins.war --httpPort=8081
. Те же сообщения об ошибках.
Я загрузил Последний и самый лучший (1.441) jenkins.war с веб-сайта, переместил его на /Users/zeljko/Jenkins
и попробовал java -jar jenkins.war
и java -jar jenkins.war --httpPort=8081
. Те же сообщения об ошибках.
Окружающая среда:
Mac OS X 10.6.8
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
Я просматриваю сайт Jenkins , wiki, book, поиск по всему, но я просто не понимаю, что мне нужно сделать, чтобы заставить его работать.
Ответы
Ответ 1
Проблема, похоже, добавлена в Jira Jenkins, и, надеюсь, скоро будет исправлено: https://issues.jenkins-ci.org/browse/JENKINS-11714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
На моей установке 10.7.2 я сделал это, создав отсутствующую домашнюю папку и изменив владельца Jenkins.
После установки Jenkins запустите следующие команды:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo mkdir -p /Users/Shared/Jenkins/Home
sudo chown -R daemon /Users/Shared/Jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
Ответ 2
Это устранило проблему:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
После этого я мог запустить java -jar jenkins.war
в /Users/zeljko/Jenkins
.
Источник: fooobar.com/questions/77187/...
Ответ 3
ajp пытается прослушивать 8009. Похоже, что у вас работает tomcat (следовательно, 8080 и 8009 уже заняты). При запуске Jenkins выключите ajp.
Начните с:
java -jar jenkins.war --httpPort=8081 --ajp13Port=-1
Ответ 4
В основном это связано с тем, что порт 8080 используется другим процессом (в большинстве случаев это java-процесс tomcat).
Итак, сначала вы должны выполнить:
lsof -i:8080
Затем убейте процесс, который использует порт 8080.
После этого выполните свою команду еще раз.
java -jar jenkins.war --httpPort=8081
Ответ 5
Похоже, ошибка заключалась в том, чтобы установить собственный пакет Mac OS X. Я попытался запустить java -jar jenkins.war
на компьютере, где я только что загрузил jenkins.war
, и он отлично работает. Теперь, чтобы узнать, как запустить или удалить собственный пакет...