Linux 下安装SonarQube (版本sonarqube7.6)


公司的虚拟环境坏了,sonarqube需要重新安装。简单记录安装过程和遇到的问题。 相关环境信息

  • CentOS Linux release 7.6.1810 (Core)
  • MySQL 5.7.30
  • sonarqube7.6
  • JDK 11.0.2

一 安装Sonar前需要知道

1为什么要代码清洁

  • 软件的核心是代码。代码不仅指导业务行为,而且还决定软件的性能。保持代码清洁将确保从软件中获得最大价值
  • 代码中的安全漏洞会严重损害数据的机密性,并损害您的商业声誉。通过在正确的地点和时间提供正确的检查来确保您的整个开发流程
  • 推送的代码总是干净的时候,你的工作环境——源代码——就会不断改善,从而形成一个高效、敏捷和高效的工作场所

Linux 下安装SonarQube (版本sonarqube7.6)_第1张图片

2.SonarQube 能做什么

SonarQube 就像是一个实时教练来帮助开发人员在编写代码时就解决代码问题。无论开发人员的经验水平如何,Sonar都能帮助理解错误、发现最佳实践,并在此过程中做出更好的编码决策。

SonarQube 帮助开发人员减少新代码或更改代码中需要解决的问题,让开发人员专注于解决有趣的技术挑战,而不必持续返工和错误修复。

Linux 下安装SonarQube (版本sonarqube7.6)_第2张图片

二 如何安装SonarQube

首先从官网下载sonarqube存档

Linux 下安装SonarQube (版本sonarqube7.6)_第3张图片

Linux 下安装SonarQube (版本sonarqube7.6)_第4张图片

我用的版本是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。

  • sonar.jdbc.username:数据库用户名称
  • sonar.jdbc.password:数据库用户密码
  • sonar.jdbc.url :数据库链接 (确保链接已经上传/sonarqube-7.6/lib/jdbc/mysql目录下)
  • sonar.jdbc.driverClassName:数据库驱动 
# 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会向数据库中创建所需要的数据表信息并初始化数据

Linux 下安装SonarQube (版本sonarqube7.6)_第5张图片

如何集成使用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地址访问处理方法

你可能感兴趣的:(CICD,linux,运维,服务器)