1. 下载并安装 JDK
vi /etc/profile
# jdk settings
export JAVA_HOME=/opt/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
2.下载安装 MySQL
3.下载安装 SonarQube
http://www.sonarqube.org/downloads/
cd /opt
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.7.zip
unzip sonarqube-6.7.7.zip
cd sonarqube-6.7.7
3.1 配置 SonarQube
编辑配置文件,配置连接数据库(需要事先在mysql上创建好sonar
库,UTF8编码)
vi conf/sonar.properties
主要配置:
sonar.jdbc.username=
sonar.jdbc.password=
sonar.jdbc.url=
3.2 Linux 系统要求
- Sonarqube 一定运行在非
root
账户下 vm.max_map_count
必须大于或等于262144
fs.file-max
必须大于或等于65536
- 运行 SnonarQube 的用户至少可以打开
65536
文件描述符(file descriptors) - 运行 SnonarQube 的用户至少可以打开
2048
线程 - seccomp 必须已被编译到内核
3.2.1 内核参数
可以通过以下命令查看相关内核参数:
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u
可以通过root账户执行以下命令快速设置当前会话的内核参数:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 2048
要更永久地设置这些值,必须更新/etc/sysctl.d/99-sonarqube.conf
或/etc/sysctl.conf
以生效这些值:
vm.max_map_count=262144
#fs.file-max=65536 ## 我的机器,默认就超过 65535,故不再修改设置。
如果运行 SonarQube(本例中为sonar
)的用户没有至少 65536 个开放描述符的权限,则必须在/etc/security/limits.d/99-sonarqube.conf
或/etc/security/limits.conf
中插入:
sonarqube - nofile 65536
sonarqube - nproc 2048
使配置生效:
sysctl -p
可以在Elasticsearch文档中获得更多详细信息 。
3.2.2 seccomp 过滤器
默认情况下,Elasticsearch 使用的是 seccomp过滤器。在大多数发行版中,此功能在内核中激活,但在Red Hat Linux 6
等发行版中,此功能已停用。如果您使用的是没有此功能的发行版,并且无法升级到激活了 seccomp的较新版本,则必须通过更新sonar.properties
中的sonar.search.javaAdditionalOpts
来显式停用此安全层:
sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false
可以使用以下命令检查内核上是否有 seccomp:
$ grep SECCOMP /boot/config-$(uname -r)
如果内核有seccomp,将会看到:
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
有关更多详细信息,可以参阅Elasticsearch文档。
4 启动 SonarQube
系统中必有一个非root用户,因为 SonarQube 里使用的elasticsearch
不允许使用root 账号启动。
我们创建一个名为 sonar 的用户:
# 创建用户
useradd sonarqube
passwd sonarqube
# 授权 Sonar 目录
chown -R sonarqube:sonarqube /opt/sonarqube-6.7.7/
启动:
# 切换至 sonarqube 用户下
sonarqube
cd /opt/sonarqube-6.7.7/bin/
cd linux-x86-64
# 先使用日志模式启动,无错误后再停掉并切换为后台启动
./sonar.sh console
# 后台启动模式
./sonar.sh start
## 查看日志
tail -f /opt/sonarqube-6.7.7/logs/sonar.log
## 停止服务
./sonar.sh stop
## 重启服务
./sonar.sh restart
5.配置界面访问
Sonar 默认监听的端口时
9000
,可以在sonar.properties
中通过sonar.web.port=
来修改。
启动后,浏览器器访问:http://xxxx:9000
,默认账户:admin/admin
。
6.安装 SoanrQube 汉化包(可选)
访问 https://github.com/SonarQubeCommunity/sonar-l10n-zh 下载对应版本中文插件包
cd /opt/sonarqube-6.7.7/extensions/plugins
wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.19/sonar-l10n-zh-plugin-1.19.jar
重启服务,即可。
7.安装 SonarQube Scanner 客户端
访问 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
SonarQube 是服务器端,它主要有两个功能:
- 分析源代码;因为它内嵌了Apache模块,所以提供Web端的界面访问。
- SonarQube Scanner 是一个利用 SonarQube 服务端分析代码的命令行工具,可以把它简单理解为客户端。
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
。。。。。
评论区