SonarQube系列一、Linux安装与部署
【前言】
随着项目团队规模日益壮大,项目代码量也越来越多。且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终的问题便是bug的增多和代码债务的堆积。因此,代码review便日益提上了日程。当然人工review的效率还是相当低下的,于是我们采用了自动化代码review的工具,便是今天的主角:SonarQube。
本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目。目录如下:
- SonarQube系列一、Linux安装与部署
- SonarQube系列二、分析dotnet core/C#代码
- SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)
【SonarQube简介】

SonarQube® 是一种自动代码审查工具,用于检测代码中的错误,漏洞和多余的代码。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。比如:
- SonarQube集成 gitlab,在分支推送的时候自动进行代码检查分析,生成代码报告。
- SonarQube集成 jenkins,在代码构建的时候自动进行代码分析,生成代码报告。
总之,SonarQube是可以配合一切好用的CI/CD工具进行自动化分析代码并生成代码报告,通过报告我们可以看到代码中可能存在的bug和代码债务。
官方网站:https://www.sonarqube.org/
【SonarQube安装】
打开官网(上述官网地址),便可以很容易看到官方文档的菜单,安装步骤在官网很清楚了,我们参考文档进行安装,这里记录整个安装的过程以便帮助一些看文档迷惑的学者。
官方文档地址:https://docs.sonarqube.org/latest/

1.首先别忙着下载
左侧有下拉框可以选择sonarqube的各个版本,我们可以选择切换不同的版本以查看不同时期的文档

我们首先打开 Requirements ,查看当前版本的软硬件支持。
- SonarQube 依赖于Java 环境,也就是需要安装Jre,在这里写了支持的版本:

- SonarQube 支持的数据库有:PostgreSQL,Microsoft SQL Server,Oracle,注意7.9版本已经不对MySql进行官方的支持了,如果执意要用 Mysql 可能会遇到很多坑(我就被坑的不轻)。当然有的朋友想用Mysql数据库,那么可以选择安装 7.7 以下版本(包括7.7)。
- SonarQube 运行需要ES(ElasticSearch),当然这个不用我们安装,下载的安装包已经包含了ES。
因为我用到了Mysql数据库,综合软硬件说明我选择了7.6版本的SonarQube进行下载安装。
2.下载 SonarQube
同样在左侧菜单找到 Setup and Upgrade 选项,打开以后按步骤找到 Download 链接,下载对应版本的安装包。
SonarQube 的安装包是不分平台的,默认把所有平台的运行命令都下载下来,使用者根据不同环境运行不同的运行脚本。
下载完成后,我们把安装包 sonarqube-7.6.zip 放在linux服务器的安装目录(喜欢的任意位置),然后用解压命令解压
unzip sonarqube-7.6.zip
进入文件夹,我们了解几个重要的目录

- bin目录存放了各个环境的启动脚本
- conf目录存放着sonarqube的配置文件
- logs目录存放着启动和运行时的日志文件
3.配置 SonarQube
关于jdk的安装这里就不多说了,我们直接进入sonarqube 的配置。
我们首先需要通过配置文件修改 sonarqube 的 mysql 连接字符串等信息,打开 conf 目录的 sonar.properties

我们只需要修改mysql部分就ok了,其他不用过多设置

#----- 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://localhost:39901/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&maxAllowedPacket = 16777216&useSSL=false
sonar.jdbc.username=sonarqube
sonar.jdbc.password=xxxxx
这里的配置是按照官方文档的介绍,在mysql添加了一个 sonarqube 的用户,并且创建了一个数据库叫 sonarqube ,且将数据库的读写执行权限赋给 sonarqube用户,用于在站点初始化以及后续存储设置数据时对数据库进行修改。
sonarqube web 默认端口号为 9000 如果想修改成其他端口可以通过下面这个设置修改其他端口号。

wrapper.conf 这个配置文件里配置了java命令地址,sonarqube 的日志文件目录等,可以关注下自己的 java 命令路径,其他不用太过关注。
4.SonarQube 启动
打开 sonarqube 的下载目录的bin目录,里面列举了各个平台的启动脚本

启动之前先使用 chown 命令将sonarqube-7.6及其子目录授权给一个非root的用户,sonarqube及其es等软件禁止 root账户启动,因此需要切换一个非root账户,授权的用户需要有bin目录及其子目录的读取和可执行的权限。
然后我们找到对应平台的脚本,我的系统是64位的linux,进入 linux-x86-64 目录

启动sonar,执行 sonar.sh 脚本,并添加 start 参数
./sonar.sh start
如果不添加参数,会出现如下提示,是因为该脚本有必要的参数,包含了sonar服务的启动/停止/重启/dump等操作,可以根据使用场景提供不同的参数。

启动之后,我们浏览器访问对应服务器ip地址的9000端口(防火墙要提前放行9000端口)
如果没有成功,那么就在logs目录查看启动日志。一般有几种:
- es.log es或mysql等数据库连接报错,一般是mysql的连接字符串账号密码错误或者sonar账号权限不够;
- es.log 数据库初始化失败 MySQL sonar 账户权限不足
- sonar.log sonar服务的启动日志
- web.log sonarqube web的启动日志
如果一切顺利的话,就会进入登陆页面,账号密码都是 admin。

【SonarQube插件】
关于插件我本身使用不多,如果看不惯英文界面,那么就先装个中文插件吧。
在顶部的菜单栏,配置里面,按下图步骤,在下面插件搜索栏输入chinese,即可搜到中文插件,然后点安装。
等待安装完毕,提示重启sonar后,便自动切换到了中文界面。

【系统展望】
那么到此,sonar的安装与配置便告一段落了,如果有任何问题欢迎留言区讨论~
SonarQube系列一、Linux安装与部署的更多相关文章
- linux安装tomcat部署web项目
我用的是如下图的两个软件,连接linux服务器. 其中WinSCp是传输文件用的,SecureCRT是用来输入命令的. 1.复制tomcat到指定目录(可复制到你想要的目录下),命令如下: cp /路 ...
- Nginx Linux安装与部署
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行. ...
- Docker 安装入门 Centos Linux安装Docker 部署mysql
这次购买了阿里云云服务器,并且安装了Centos 7.5 学习使用Docker, 确认版本信息 Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Dock ...
- Linux系列教程-----Linux安装centos6.8
转发:https://www.cnblogs.com/ysocean/p/7689146.html
- Linux的安装以及部署一
下载网址: Vmware: http://www.wsf1234.com/vmware- workstation-pro-v14-0-0/ Centos: http://mirrors.163.com ...
- SonarQube系列二、分析dotnet core/C#代码
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
- SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
- kubernetes系列03—kubeadm安装部署K8S集群
本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...
- Linux下Redis的安装和部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
随机推荐
- gePlugin封装成winform控件,一行代码即可加载。
将插件直接封装为控件,大大简化了GEPlugin的使用.多数常用功能也已经封装完毕,其他功能全部开放接口,直接调用即可. 1. GepluginControl控件传送门: 链接:https://pan ...
- struts2入门Demo
一.引入必要的jar包,所需jar包如下: 二.配置web.xml.主要目的是拦截请求 <?xml version="1.0" encoding="UTF-8&qu ...
- JavaScript权威指南第六版(阅读笔记)
前言: 对于软件行业学习是无止境的,因为知识更替非常快,能够快速稳固掌握一门新技术是一个程序员应该具备的基本素质. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢 ...
- GitHub使用整理——从开始到上传项目
前期准备 首先是github官网: https://github.com/ 下载github工具: https://git-for-windows.github.io/ 进入github创建一个新的项 ...
- requests模块:请求网页
请求网页时需要设置对应的headers(请求头) import requests link = 'https://movie.douban.com' headers = {'User-Agent': ...
- 【并查集】模板 + 【HDU 1213、HDU 1232、POJ 2236、POJ 1703】例题详解
不想看模板,想直接看题目的请戳下面目录: 目录: HDU 1213 How Many Tables[传送门] HDU 1232 畅通工程 [传送门] POJ 2236 Wireless Network ...
- 个人永久性免费-Excel催化剂功能第57波-一键生成完全组合的笛卡尔积结果表
在数据库的多表查询中,通常会有各种连接关系,同样地在Excel环境中,也有很大的场景需要用到类似数据库的多表查询,如经典的VLOOKUP就是其中一种类似LEFT JOIN查询的查询效果.在很多时候需要 ...
- 利用gcc编译链接时出现 ‘undefined reference to `std::ios_base::Init::Init()’ 解决
一般编译链接c++程序最好使用g++,若有如上的报错信息,需要在gcc后加上 -lstdc++ eg: gcc test.c -lstdc++ gcc和g++都是GNU的一个编译器. g++:后缀.c ...
- [HDOJ] 2026.Max Sum
2026.Max Sum (c++) Problem Description Consider the aggregate An= { 1, 2, -, n }. For example, A1={1 ...
- 《VR入门系列教程》之3---运动追踪与输入设备
运动追踪设备 第二种可以使人脑相信它真实处于虚拟世界的关键技术就是运动追踪技术,它可以通过追踪头部的运动状态实时更新渲染的场景.这与我们在真实世界中观看周围非常类似. 高速的惯性测量单元( ...