SonarQube代码审查(1) - 安装SonarQube 电脑版发表于:2021/6/6 17:37  >#SonarQube代码审查(1) - 安装SonarQube [TOC] SonarQube简介 ------------ tn> SonarQube 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。 安装SonarQube ------------ ### 安装mysql并创建SonarQube数据库(仅仅支持SonarQube 7.9的以下的) tn>安装mysql请参考:https://www.tnblog.net/hb/article/details/4888 然后在mysql中创建sonar数据库 ```bash create database sonar; show databases; ```  ### 安装postgres ```bash docker pull postgres:11.4 docker run --name postgres1 -e POSTGRES_PASSWORD=pwd123456 -e POSTGRES_USER=root -e POSTGRES_DB=sonardb -p 5432:5432 -d postgres:11.4 docker exec -it postgres1 /bin/bash psql template1 # 创建数据库 create database sonarqubedb; # 创建用户 create user sonarqube with encrypted password 'pwd123456'; # 把所有权限都给它 grant all privileges on database sonarqubedb to sonarqube # 退出 \q exit ``` ### 官网下载 >通过访问官网到下载地址下载相对应的包:https://www.sonarqube.org/success-download-community-edition/ ```bash wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.0.43852.zip yum install unzip # 安装解压程序 unzip sonarqube-8.9.0.43852.zip # 解压包 mkdir /opt/sonar mv sonarqube-8.9.0.43852/* /opt/sonar #移动文件 useradd sonar # 创建 sonar 用户 chown -R sonar /opt/sonar # 更改目录以及权限 ``` ### 修改sonar配置文件 ```bash # 修改配置文件 vi /opt/sonar/conf/sonar.properties ``` ```bash # 添加数据库密码与账户 sonar.jdbc.username=root sonar.jdbc.password=pwd123456 # mysql sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false # postgres sonar.jdbc.username=sonarqube sonar.jdbc.password=pwd123456 sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonardb ``` >使用`sonar`账号启动 ```bash cd /opt su sonar /opt/sonar/bin/linux-x86-64/sonar.sh start tail -f sonar/logs/sonar.20210606.log # 查看日志 ```  >接着我们来启动日志追踪,发现报错了  tn>原来是SonarQube 7.9以上版本已不再支持mysql  tn>解决数据库后,它很妖艳又要Java11才能支持 ### 解决问题(安装java11) ```bash yum search java-11 yum install java-11-openjdk -y # 然后我们通过下面的命令选择java-11 JDK(我们选择2) alternatives --config java java -version ```  >然后再次运行,elasticsearch报错  ```bash # 解决第一个问题 vi /etc/security/limits.conf # 添加下面内容 * soft nofile 65536 * hard nofile 65536 ``` ```bash # 解决第二个问题 vi /etc/sysctl.conf # 最后添加一行 vm.max_map_count=262144 # 保存后执行,立马生效然后再次尝试启动SonarQube /sbin/sysctl -p ```  >貌似成功了,访问一下`9000`端口看看(默认端口是9000,可以在刚刚的配置文件里面设置其他端口) ```bash # 关闭防火墙 systemctl stop firewalld # 查看内网ip ifconfig ``` tn>由于坑可能比较多大家尽量通过 `/opt/sonar/logs` 日志去查,排查顺序`sonar.log`-->`es.log`-->`web.log`,如有问题可以直接在群里或qq上@我。 ```bash # 重启SonarQube rm -rf sonar/data/es7/ # 查看网站端口 netstat -tlunp # 杀掉elasticsearch的pid kill {pid} # 停掉sonarQube su sonar /opt/sonar/bin/linux-x86-64/sonar.sh stop /opt/sonar/bin/linux-x86-64/sonar.sh stop # 在ps中找到sonar并杀掉 ps -ef | grep sonar kill {pid} # 启动 su sonar /opt/sonar/bin/linux-x86-64/sonar.sh start ``` >最后通过`127.0.0.1:9000`访问到该页面,默认账号和密码为`admin:admin`  >更改了密码之后就进来了  >然后去生成我们Jenkins所需要的Token密钥 