參考
https://docs.sonarqube.org/7.8/setup/get-started-2-minutes/
https://www.jianshu.com/p/9799871b5e18
下載
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.3.1.34397.zip
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip
啓動
/usr/local/sonarqube/bin/linux-x86-64/sonar.sh console
Running SonarQube...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 |
jvm 1 | WrapperSimpleApp: Encountered an error running main: java.lang.IllegalStateException: SonarQube requires Java 11 to run
jvm 1 | java.lang.IllegalStateException: SonarQube requires Java 11 to run
jvm 1 | at com.google.common.base.Preconditions.checkState(Preconditions.java:508)
jvm 1 | at org.sonar.application.App.checkJavaVersion(App.java:94)
jvm 1 | at org.sonar.application.App.start(App.java:57)
jvm 1 | at org.sonar.application.App.main(App.java:98)
jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jvm 1 | at java.lang.reflect.Method.invoke(Method.java:498)
jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
jvm 1 | at java.lang.Thread.run(Thread.java:748)
wrapper | <-- Wrapper Stopped
分析:sonar 8.x 都是JDK11,本地現在是JDK8,重新下載7.8來安裝
修改配置
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://172.18.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
再次啓動報錯
Running SonarQube...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | 2020.05.21 10:53:20 WARN app[][o.s.application.App] SonarQube will require Java 11+ starting on next version
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/sonarqube/temp
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/usr/local/sonarqube/elasticsearch]: /usr/local/sonarqube/elasticsearch/bin/elasticsearch
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.e.p.PluginsService] no modules loaded
jvm 1 | 2020.05.21 10:53:20 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
jvm 1 | 2020.05.21 10:53:23 WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 1
jvm 1 | 2020.05.21 10:53:23 INFO app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1 | 2020.05.21 10:53:23 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper | <-- Wrapper Stopped
分析:看樣子是es的問題,再去檢查es日誌
2020.05.21 10:53:23 ERROR es[][o.e.b.Bootstrap] Exception
java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) [elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) [elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) [elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) [elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) [elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) [elasticsearch-6.8.0.jar:6.8.0]
2020.05.21 10:53:23 WARN es[][o.e.b.ElasticsearchUncaughtExceptionHandler] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.0.jar:6.8.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.0.jar:6.8.0]
... 6 more
分析:root用戶不能運行es,所以我們增加一個sonar用戶,並將目錄權限給到sonar用戶,切換到sonar再次啓動
Running SonarQube...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | 2020.05.21 11:07:40 WARN app[][o.s.application.App] SonarQube will require Java 11+ starting on next version
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/sonarqube/temp
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/usr/local/sonarqube/elasticsearch]: /usr/local/sonarqube/elasticsearch/bin/elasticsearch
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.e.p.PluginsService] no modules loaded
jvm 1 | 2020.05.21 11:07:40 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
jvm 1 | ERROR: [1] bootstrap checks failed
jvm 1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
jvm 1 | 2020.05.21 11:07:47 WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
jvm 1 | 2020.05.21 11:07:47 INFO app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1 | 2020.05.21 11:07:47 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper | <-- Wrapper Stopped
分析:虛擬內存太小,需要增加到262144,後再次啓動
# 永久生效
echo "vm.max_map_count=262144" >/etc/sysctl.conf
# 臨時生效
sysctl -w vm.max_map_count=262144
# 查看結果
sysctl -a|grep vm.max_map_count
啓動成功
Running SonarQube...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | 2020.05.21 11:15:37 WARN app[][o.s.application.App] SonarQube will require Java 11+ starting on next version
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/sonarqube/temp
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/usr/local/sonarqube/elasticsearch]: /usr/local/sonarqube/elasticsearch/bin/elasticsearch
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.e.p.PluginsService] no modules loaded
jvm 1 | 2020.05.21 11:15:37 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
jvm 1 | 2020.05.21 11:15:49 INFO app[][o.s.a.SchedulerImpl] Process[es] is up
jvm 1 | 2020.05.21 11:15:49 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/usr/local/sonarqube]: /usr/local/java/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/sonarqube/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/common/*:/usr/local/sonarqube/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar org.sonar.server.app.WebServer /usr/local/sonarqube/temp/sq-process3065810337102632640properties
jvm 1 | 2020.05.21 11:16:51 INFO app[][o.s.a.SchedulerImpl] Process[web] is up
jvm 1 | 2020.05.21 11:16:51 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/usr/local/sonarqube]: /usr/local/java/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/sonarqube/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/common/*:/usr/local/sonarqube/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar org.sonar.ce.app.CeServer /usr/local/sonarqube/temp/sq-process5288721163571462535properties
jvm 1 | 2020.05.21 11:16:56 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
jvm 1 | 2020.05.21 11:16:56 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
登陸
地址:http://localhost:9000,初始密碼:admin/admin
創建一個項目
分析你的項目
生成maven命令
複製maven命令在idea中執行即可,然後在控制檯查看檢查結果