安装需求:
https://docs.sonarqube.org/latest/requirements/requirements/
安装文档:
https://docs.sonarqube.org/latest/setup/install-server/
硬件要求:
SonarQube服务器的小规模(单个或小型团队)实例需要至少2GB的RAM才能高效运行,而操作系统则需要1GB的空闲RAM。如果要为大型团队或企业安装实例,则要求更高的要求。
我在VM上运行,分配的3G的内存空间。
Java:
我安装的是 JDK 11,安装请参考:CentOS 7 安装 jdk11
数据库:
我用的数据库是: SQL Server 2014
创建数据库:SonarQubeDB
排序规则:Chinese_PRC_CS_AS
因为: 排序规则必须区分大小写(CS)和区分重音(AS)
READ_COMMITED_SNAPSHOT 必须在SonarQube数据库上设置。
MS SQL数据库的共享锁定策略可能会影响SonarQube运行时。确保将is_read_committed_snapshot_on其设置为true防止SonarQube在重负载下面临潜在的死锁。
查询示例is_read_committed_snapshot_on:
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name='SonarQubeDB';
查询示例更新is_read_committed_snapshot_on:
ALTER DATABASE SonarQubeDB SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
Linux系统配置:
如果在Linux上运行,则必须确保:
vm.max_map_count大于或等于262144
fs.file-max大于或等于65536
运行sonarqube的用户至少可以打开65536个文件描述符
运行sonarqube的用户至少可以打开4096个线程
# vim /etc/sysctl.d/99-sonarqube.conf
加入下面两行:
vm.max_map_count=262144
fs.file-max=65536
# vim /etc/security/limits.d/99-sonarqube.conf
加入下面两行:
sonarqube - nofile 65536
sonarqube - nproc 4096
下载:
页面:https://www.sonarqube.org/downloads/
我下载的是Community版本
# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.0.zip
解压:
# unzip sonarqube-8.0.zip
创建一个空的架构和一个sonarqube用户。授予此sonarqube用户权限create,update和delete对象为这个架构。
创建用户 sonarqube:
# adduser sonarqube
设置密码:
# passwd sonarqube
改变属主:
# chown -R sonarqube:sonarqube sonarqube-8.0
# ll sonarqube-8.0
把文件部署到要部署的位置:
# mkdir /opt/sonarqube
# mv sonarqube-8.0 /opt/sonarqube/
修改配置文件:
# vim /opt/sonarqube/sonarqube-8.0/conf/sonar.properties
根据自己情况添加如下配置:
sonar.jdbc.url=jdbc:sqlserver://192.168.200.203:1433;databaseName=SonarQubeDB
sonar.jdbc.username=sa
sonar.jdbc.password=123456
sonar.web.host=192.168.80.128
sonar.path.data=/opt/sonarqube/sonarqube-8.0/data
sonar.path.temp=/opt/sonarqube/sonarqube-8.0/temp
保存完文件后,切换用户到 sonarqube 登录Linux
# su sonarqube
通过控制台方式运行:
$ /opt/sonarqube/sonarqube-8.0/bin/linux-x86-64/sonar.sh console
如果输出的最后两行如下,就说明运行成功了:
jvm 1 | 2019.10.29 01:59:14 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
jvm 1 | 2019.10.29 01:59:14 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
数据库已经插入了多张表。
访问:http://192.168.80.128:9000/
要确保防火墙 9000 端口已经打开
管理员账户登录:
用户名:admin
密码:admin
安装中文包:
安装完成功,它会提示重启网站,点击网页上提示的重启,等一会儿重启成功后,自动进入登录页面:
用 admin 登录后,网站已经变成中文的了
再次运行 sonarqube 的时候不用通过 console 启动了,直接用 start 在后台运行就好了。
sonarqube 运行参数 console | start | stop | force-stop | restart | status | dump:
$ /opt/sonarqube/sonarqube-8.0/bin/linux-x86-64/sonar.sh
Usage: /opt/sonarqube/sonarqube-8.0/bin/linux-x86-64/sonar.sh { console | start | stop | force-stop | restart | status | dump }
安装可能遇到的问题:
1.配置信息的拼写错误
2.不小心用 root 启动会报错,这时需要切换到 sonarqube 用户,在切换前要删除掉 root 在 data,logs 文件夹中创建的 root 权限的文件。否则就算切换到 sonarqube 用户,还是启动不了。
其实大部分启动不了的原因都是权限问题。
SonarQube 平台安装完成后,就可以安装 scanner 了,然后才可以创建项目:
https://docs.sonarqube.org/latest/analysis/overview/
scanner 支持一下安装:
这里以 Maven 为例:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/
先决条件
Maven的3.x
至少正在使用SonarQube服务器支持的最低Java版本,JDK8
全局设置
编辑 Maven 的 settings.xml文件,添加 profile 节点
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.mavenpluginGroup>
pluginGroups>
<profiles>
<profile>
<id>sonarid>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
<properties>
<sonar.host.url>
http://192.168.80.128:9000
sonar.host.url>
properties>
profile>
profiles>
settings>
在要分析的Maven项目中运行:
mvn clean verify sonar:sonar
或者分两步执行:
mvn clean install
mvn sonar:sonar
执行成功后访问:
http://192.168.80.128:9000/projects
可以看到分析结果,赶紧去修改吧。
祝你成功 ^ _ ^