Jenkins集成Sonar(1/3)安装sonar并启动

初衷:
项目要解决sonar扫描出来的bug和漏洞,因此在开发环境搭建一套sonar并集成到jenkins,方便解决之后重新扫描
整个安装过程文章分为三部分,文末有跳转下一篇的链接,涉及到的插件或软件:

  • apache tomcat 8
  • jenkins.war 2.1+
  • sonar 6.7.7

    (起初我安装的是7.9.1,sonar目前最新版本是8.1,由于安装过程对jdk版本要求11+,但是我换了jdk11和jdk13,启动都会报类似ABI这种错误,所以经过一番折腾,将版本降低为6.7.7,可以支持jdk1.8)

  • sonar scanner 4.2+
  • sonarqube scanner for jenkins插件
  • jdk 1.8
  • sonar汉化包

下载Sonar

服务器创建sonar目录

mkdir -p /opt/xxxx/product/bdc/sonar

安装

  • 在线安装:服务器可以访问外网,直接服务器wget下载
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.7.zip
  • 离线安装:服务器不能访问外网,只能下载后上传到服务器sonar目录
    点击下载sonar上传到服务器/opt/xxxx/product/bdc/sonar目录下

解压

[bdc@T5073 sonar]$ unzip sonarqube-6.7.7.zip
[bdc@T5073 sonar]$ ll
总计 201576
drwxr-xr-x 11 bdc bdc      4096 07-10 12:32 sonarqube-6.7.7
-rw-rw-r--  1 bdc bdc 206192630 10-22 14:35 sonarqube-6.7.7.zip

创建sonar用户和用户组

创建用户组和用户
SonarQube不能以ROOT用户运行

groupadd sonar

useradd sonar -g sonar

为sonar用户分配文件夹权限

chown -R sonar:sonar /opt/xxxx/product/bdc/sonar/sonarqube-6.7.7

启动

修改文件sonar.properties

vim /opt/xxxx/product/bdc/sonar/sonarqube-6.7.7/conf/sonar.properties
  • 设置jvm使用的内存大小,Xms初始堆内存,Xmx最大堆内存

sonar.web.javaOpts=-server -Xms1G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError

  • 配置持久化数据库的账户、密码、数据库连接信息(此处使用mysql)
    注意:为避免和其他库表混淆,sonar需要单独创建一个库,sonar含53张表

sonar.jdbc.username=bdc_sonar
sonar.jdbc.password=bdc_sonar
sonar.jdbc.url=jdbc:mysql://10.1.203.46:3306/bdc_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

  • 设置sonar访问地址http://10.12.3.123:9000/sonar

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/sonar

修改启动脚本bin/linux-x86-64/sonar.sh

vim /opt/xxxx/product/bdc/sonar/sonarqube-6.7.7/bin/linux-x86-64/sonar.sh
  • 修改启动用户为sonar(前面创建的sonar)

RUN_AS_USER=sonar

启动sonar

  • 切换到sonar用户
su sonar
  • 执行启动命令启动,这里选择console启动,就像tomcat catalina.sh run一样,第一次启动难免有报错,省的start启动还要去看日志,报错又停掉,console和tomcat catalina.sh run类似
sh /opt/xxxx/product/bdc/sonar/sonarqube-6.7.7/bin/linux-x86-64/sonar.sh console

其他命令:
sh sonar.sh start #启动sonar
sh sonar.sh stop #安全停止sonar
sh sonar.sh restart #安全重启sonar
sh sonar.sh console #控制台启动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 | WrapperSimpleApp: Unable to locate the class org.sonar.application.App: java.lang.UnsupportedClassVersionError: org/sonar/application/App : Unsupported major.minor version 52.0

解决方案:

原因:sonar启动默认使用系统已安装的java命令(jdk1.7),可能服务器内安装的java版本比较低,sonar 6.7.7最低要求jdk1.8以上,因此需要额外指定sonar的启动java命令的路径

方案:修改/opt/aspire/product/bdc/sonar/sonarqube-6.7.7/conf/wrapper.conf
wrapper.java.command=java改为wrapper.java.command=/opt/aspire/product/bdc/jdk1.8/bin/java

如果修改成jdk11以后,会报如下错误
在这里插入图片描述
最终解决方案:sonar使用6.7.7版本,jdk可以使用1.8版本(高版本的sonar使用jdk11或13会出现上图错误,已解决这个问题的请指教一下)
其他版本下载:https://www.sonarqube.org/downloads/

查看日志

如果sonar.sh console方式启动没有异常日志打印,一般情况为启动成功,如果有异常情况,可以进入下面目录查看日志

cd ../../logs

日志分为access.log sonar.log,ce.log,es.log,web.log

access.log sonar访问记录日志,有点类似nginx 的access.log
sonar.log sonar启动日志
ce.log 集成方面的日志,比如sonar连接数据源、SCM、SVN、插件等等
es.log sonar内嵌了es,主要用于存储和搜索,记录es的日志
web.log

启动后,若日志文件均无报错,即可访问http://ip:9000/sonar,若顺利,则会出现如下界面
在这里插入图片描述

下一篇《Jenkins集成Sonar(2/3)登录并添加项目进行扫描+汉化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽轩GM

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值