公司的虚拟环境坏了,sonarqube需要重新安装。简单记录安装过程和遇到的问题。 相关环境信息
SonarQube 就像是一个实时教练来帮助开发人员在编写代码时就解决代码问题。无论开发人员的经验水平如何,Sonar都能帮助理解错误、发现最佳实践,并在此过程中做出更好的编码决策。
SonarQube 帮助开发人员减少新代码或更改代码中需要解决的问题,让开发人员专注于解决有趣的技术挑战,而不必持续返工和错误修复。
首先从官网下载sonarqube存档
我用的版本是sonarqube-7.6 (之前下载的备份文件,所以我没有重新下载)。将压缩包解压后,修改sonar.peoperties配置文件
[root@localhost ~]# cd /opt/sonarqube/sonarqube-7.6/conf
[root@localhost conf]#
[root@localhost conf]#
[root@localhost conf]# ls
sonar.properties wrapper.conf
[root@localhost conf]#
Sonarqube启动需要系统一个名称为sonar的数据库系统。这里我使用的是Mysql数据库,更高的Sonar版本不支持 Mysql。
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#----- Embedded Database (default)
# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092
#----- DEPRECATED
#----- MySQL >=5.6 && <8.0
# Support of MySQL is dropped in Data Center Editions and deprecated in all other editions
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://10.0.192.21:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
进入bin目录下,通过ll命令查看文件夹中存在多个文件夹,每个文件夹对应不同的系统
[root@localhost etc]# cd /opt/sonarqube/sonarqube-7.6/bin
[root@localhost bin]#
[root@localhost bin]# ll
总用量 0
drwxrwxrwx. 2 sonar sonar 25 9月 29 2020 jsw-license
drwxrwxrwx. 3 sonar sonar 48 9月 29 2020 linux-x86-32
drwxrwxrwx. 3 sonar sonar 69 5月 19 13:50 linux-x86-64
drwxrwxrwx. 3 sonar sonar 48 9月 29 2020 macosx-universal-64
drwxrwxrwx. 3 sonar sonar 167 9月 29 2020 windows-x86-32
drwxrwxrwx. 3 sonar sonar 167 9月 29 2020 windows-x86-64
[root@localhost bin]#
因为是linux系统,进入的linux-x86-64文件夹,文件夹中有2个文件, sonar.sh为执行文件,可以控制sonar。
[root@localhost bin]# cd ./linux-x86-64
[root@localhost linux-x86-64]#
[root@localhost linux-x86-64]# ls
lib SonarQube.pid sonar.sh wrapper
[root@localhost linux-x86-64]#
[root@localhost linux-x86-64]# ./sonar.sh
Usage: ./sonar.sh { console | start | stop | restart | status | dump }
[root@localhost linux-x86-64]#
[root@localhost linux-x86-64]#
例如开启sonarqube服务和关闭sonarqube服务
[root@localhost linux-x86-64]# ./sonar.sh start
Starting SonarQube...
Started SonarQube.
[root@localhost linux-x86-64]# ./sonar.sh stop
Stopping SonarQube...
Waiting for SonarQube to exit...
Stopped SonarQube.
Sonarqube服务正常启动后就可以访问 http://[ip]:9000/projects 访问了,第一次正常启动后需要等一会才能访问此地址,因为第一次启动的时候sonarqube会向数据库中创建所需要的数据表信息并初始化数据
如何集成使用sonar可以看下面的文章
SonarQube 持续集成代码质量管理_sonarqube持续集成_=PNZ=BeijingL的博客-CSDN博客目录简介组成集成应用SonarScanner 代码审查配置简介SonarQube 是一个开源的代码分析平台,用来持续分析和评测代码的质量,支持检测 Java、JavaScript、C#、C、C++ 等二十几种编程语言。通过 SonarQube 可以检测出项目中潜在的Bug、漏洞、代码规范、重复代码、缺乏单元测试的代码等问题,并提供了 UI 界面进行查看和管理组成SonarQube ServerSonarQube Server 会启动3个主要进程:..https://blog.csdn.net/Beijing_L/article/details/115733775
当sonarqube启动后,会在sonarqube/logs 目录下产生5个日志文件,access.log, ce.log, es.log,sonar.log, web.log。 通过分析日志文件查找启动报错原因
1. 使用root用户启动sonarqube报错
[sonarqube@localhost linux-x86-64]$ su root
密码:
[root@localhost linux-x86-64]# chown -R sonarqube.sonarqube /opt/sonarqube
sonarqube/ sonarqube-7.9.6.zip sonarqube-9.9.1.69595.zip
[root@localhost linux-x86-64]# chown -R sonarqube.sonarqube /opt/sonarqube/sonarqube-7.9.6/
[root@localhost linux-x86-64]#
[root@localhost linux-x86-64]#
[root@localhost linux-x86-64]# su sonarqube
[sonarqube@localhost linux-x86-64]$
[sonarqube@localhost linux-x86-64]$ ./sonar.sh start
Starting SonarQube...
Started SonarQube.
[sonarqube@localhost linux-x86-64]$ ./sonar.sh status
SonarQube is running (7871).
[sonarqube@localhost linux-x86-64]$
问题原因:不能使用root用户启动sonarqube , 需要换成一个新创建的sonar用户,并赋予权限。
2. java.lang.IllegalStateException: SonarQube requires Java 11 to run
WrapperSimpleApp: Encountered an error running main: java.lang.IllegalStateException: SonarQube requires Java 11 to run
java.lang.IllegalStateException: SonarQube requires Java 8 to run
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
at org.sonar.application.App.checkJavaVersion(App.java:92)
at org.sonar.application.App.start(App.java:57)
at org.sonar.application.App.main(App.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
at java.lang.Thread.run(Thread.java:750)
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
问题原因:JDK不匹配, sonarqube7.6 需要java 8 或者更高版本
上一篇:Linux安装MySQL后无法通过IP地址访问处理方法