linux 上sonar的安装和使用总结(包含报错处理)

我们都知道,sonar是用来做代码的质量检测的,并且支持多种语言,之前看到很多地方写搭建sonar,就觉的应该很好搭建,然后昨天自己试着搭建了一下,发现自己真的是想的太简单了,有些坑,还是写出来让大家看看,不要再掉进去了。

准备工作:下载sonar:   https://www.sonarqube.org/downloads/  我下载了一个6.7.7的版本,刚开始我下了最新的8.0的版本,但是一直报错:mysql.driver的报错,然后我还是用了一个稳定版本。

我的环境:ubuntu  (本来想找centos的,但是先生买了阿里云的机器,还是ubuntu,所以我也就将就用了,如果你的是centos的,记得修改下安装命令就可以了)

1.安装mysql ,安装好以后,用mysql -V (V大写)查一下版本,如下:

安装好mysql以后,在数据库中创建sonar用户:操作如下:

       MySQL> CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar123';
       MySQL> CREATE DATABASE sonar CHARACTER SET UTF8;
       MySQL> GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';
 上面主要做的事情就是:为sonar 创建一个数据库和使用这个数据库的用户,并进行授权

 mysql版本要等于5.6或者5.6以上,否则sonar无法启动

 2.在opt目录下创建一个softs文件夹,将下载的sonar zip包解压到该目录下。

          unzip  sonarqube-6.7.7.zip

      然后修改/opt/softs/sonarqube-6.7.7/conf/sonar.properties  文件,目前我只配置了一下几项:

           sonar.jdbc.username=sonar
           sonar.jdbc.password=sonar123

           sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

           sonar.web.host=0.0.0.0

           sonar.web.context=

           sonar.web.context=

3.使用sonar用户启动sonar,否则会报es的错(重点:因为安全问题elasticsearch 不让用root用户直接运行)

            adduser sonartest  #创建sonar用户

           passwd 123456 #创建sonar用户的密码

         【 原来我写的是:chown -R sonartest:123456 sonarqube-6.7.7  #给sonar目录赋权限 (这里范了一个大错,用户组写成了密码,难怪一直报es的错,害我调试了好久)】

            chown -R sonartest:sonartest sonarqube-6.7.7  #给sonar目录赋权限 【这里很重要】

           su sonartest  #切换到sonar用户

          进入到/opt/softs/sonarqube-6.7.7/bin/linux-x86-64目录下,

                       执行./sonar.sh restart 来启动sonar

(1)es报错:参考https://blog.csdn.net/zdyueguanyun/article/details/79447260

(2)这里我还遇到一个问题,./sonar.sh restart的时候报错了,说temp下的一个yml文件禁止访问,然后我进入/opt/softs/sonarqube-6.7.7/temp,执行ls -all 发现有写文件还是root权限的,我怀疑可能是我没切换用户的时候执行restart生成的,这时只需要再执行一次 “chown -R sonartest:sonartest sonarqube-6.7.7”就可以了。(这里已经不需要了,因为我上面把赋权限写错了,所以如果有问题,多考虑下是不是权限的问题)

(3)还有一个问题,restart的时候报错JVM失败的问题,是因为我切换用户后没有执行source /etc/profile使jdk环境变量生效,这很简单,再执行一次 “ source /etc/profile就可以了”

          这里我查了资料,(切换用户,/etc/profile中的环境变量不生效了)解决办法有如下:

                           (3.1)办法1:用su命令切换用户的时候,/etc/profile会失效,应该使用su - 用户名。

                                                   (原理:https://www.cnblogs.com/liujiangyi/p/9455960.html)

                          (3.2)办法2:/etc/profile.d/ 目录下建一个文件如:java.sh,配置对环境变量。

                                            

                         (3.3)办法3:在 ~/.bashrc 加上如下的代码,(建立在profile已配环境变量,如果没有配,也可以直接把环境变量的配置配到~/.bashrc上)

                                                     

                                         (https://blog.csdn.net/u011553945/article/details/101516559)

4.成功否

在浏览器输入http://ip:9000,如果看到如下页面,表示安装成功(默认登陆账号是 admin  密码是admin):

 5.汉化:用admin  admin登陆成功后,按照下图操作:

等待安装完成以后,重启:

再次登陆,就变成中文的了:

 6.安装扫描器sonar-scanner

下载:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/      (含简单的使用说明)

我下载了sonar-scanner-cli-4.2.0.1873-linux.zip

(6.1)解压到/opt/softs目录下(任意目录都可以,这里只是为了方便管理),得到如下文件夹:

 (6.2)切换到root用户,修改/etc/profile,添加sonnar环境变量,如下:

 保存退出后,执行source /etc/profile 使环境变量生效

(6.3)输入sonar-scanner -v 显示如下,则表示安装成功了:

(6.4)关联sonarqube 和sonnar scanner

               在/opt/softs/sonar-scanner-4.2.0/conf/sonar-scanner.properties中添加如下内容:

 sonar.host.url=http://sonnar_ip:9000
 sonar.login=admin
 sonar.password=admin
 sonar.jdbc.username=sonar
 sonar.jdbc.password=sonar123
 sonar.jdbc.url=jdbc:mysql://sonnar_ip:3306/sonar?useUnicode=true&characterEncoding=utf8

 7.使用sonarqube + sonar-scanner做代码检测:

(7.1)打开要进行代码分析的项目根目录,新建sonar-project.properties文件

(7.2)输入以下信息:

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=apiautocore
sonar.projectVersion=1.0
 
# Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=src
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

其中:projectName是项目名字,sources是源文件所在的目录

 (7.3)设置成功后,启动sonarqube服务

(7.4)进入项目所在的根目录,输入命令:sonar-runner,分析成功后会有success信息

(7.5)浏览器输入http://sonar_ip:9000登陆sonnarqube,就能看到你刚才扫描的工程信息

sonar 启动失败,es报错(查看logs目录下的es.log即可):

es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

            解决:

                     在   /etc/sysctl.conf文件最后添加一行

                    vm.max_map_count=262144

参考:

https://blog.csdn.net/zdyueguanyun/article/details/79447701

https://www.cnblogs.com/reblue520/p/7131260.html?utm_source=itdadao&utm_medium=referral   (含在jenkins上的配置)

原文地址:https://www.cnblogs.com/zndxall/p/12095769.html