CentOS 7 安装 SonarQube

# Java  /  Linux  /  CentOS  /  CentOS7

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  

。。。。。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×