啓動sonarqube服務後,從客戶端不能訪問主機。查詢日誌文件 /usr/local/sonarqube-5.0.1/logs/sonar.log 後,發現如下錯誤:
2016.06.20 18:31:25 INFO sea[o.s.p.ProcessEntryPoint] Starting search
2016.06.20 18:31:25 INFO sea[o.s.s.SearchServer] Starting Elasticsearch[sonarqube] on port 9001
2016.06.20 18:31:25 INFO sea[o.elasticsearch.node] [sonar-1466427684530] version[1.1.2], pid[4912], build[e511f7b/2014-05-22T12:27:39Z]
2016.06.20 18:31:25 INFO sea[o.elasticsearch.node] [sonar-1466427684530] initializing ...
2016.06.20 18:31:25 INFO sea[o.e.plugins] [sonar-1466427684530] loaded [], sites []
2016.06.20 18:31:27 INFO sea[o.elasticsearch.node] [sonar-1466427684530] initialized
2016.06.20 18:31:27 INFO sea[o.elasticsearch.node] [sonar-1466427684530] starting ...
2016.06.20 18:31:27 WARN sea[o.s.p.ProcessEntryPoint] Fail to start search
org.elasticsearch.transport.BindTransportException: Failed to bind to [9001]
......
java.net.BindException: Cannot assign requested address
解決問題:
問題的關鍵在於紅字給出的錯誤。 說明9001端口被別的程序佔用了(很可能是上次啓動遺留下來的elasticsearch進程佔用的)
# lsof -i:9001|more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 20598 root 184u IPv4 10467575 0t0 TCP *:etlservicemgr (LISTEN)
java 20598 root 186u IPv4 10481815 0t0 TCP svnhost.:34460->svnhost.:etlservicemgr (ESTABLISHED)
java 20598 root 187u IPv4 10481117 0t0 TCP svnhost.:etlservicemgr->svnhost.:34460 (ESTABLISHED)
...
殺掉這個進程即可
# kill -9 20598
然後重新啓動SonarQube就好了