12.centos7部署sonarqube9.6
- 环境:sonarqube9.6+Postgresql13+JDK11
- sonarqube9.6下载地址:
- Postgresql13 rpm下载地址:
- JDK11下载地址:
- 准备工作:
- 修改文件句柄数(最大文件数)和用户最大进程数限制
- 修改进程虚拟内存区域
- 安装JDK11
- 安装postgresql13
- 初始化postgresql
- 创建sonarqube使用的数据库和用户
- 安装sonarqube
- 修改sonar.properties配置文件
- 启动sonarqube
- web端配置
- 汉化
- 配制(我个人使用过程中遇到的坑)
- 安装sonar-scanner 用于扫描分析项目
- 尝试分析一个项目
- 分析linux下的html项目
- 分析一个java项目
- 过程中参考的文献
1.什么是sonarqube
开源的代码质量管理系统,错误、bug、漏洞等等。与jenkins 集成,可完成自动化的扫描
2.使用前提
基于java开发
小型实例需要4gb以上,大型16gb
环境:sonarqube9.6+Postgresql13+JDK11
sonarqube9.6下载地址:
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.6.1.59531.zip
Postgresql13 rpm下载地址:
客户端下载地址:
https://yum.postgresql.org/13/redhat/rhel-7-x86_64/postgresql13-13.0-1PGDG.rhel7.x86_64.rpm
相关依赖下载地址:
https://yum.postgresql.org/13/redhat/rhel-7-x86_64/postgresql13-libs-13.0-1PGDG.rhel7.x86_64.rpm
服务端下载地址:
https://yum.postgresql.org/13/redhat/rhel-7-x86_64/postgresql13-server-13.0-1PGDG.rhel7.x86_64.rpm
JDK11下载地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/java-11-openjdk-11.0.8.10-1.el7.x86_64.rpm
或者直接yum安装
yum install java-11-openjdk
准备工作:
修改文件句柄数(最大文件数)和用户最大进程数限制
vim /etc/security/limits.conf
#soft nproc :用户可打开的最大进程数量,超过的话会提示
#hard nproc:用户可打开的最大进程数量,超过的话会报错
#soft nofile :每个进程可以打开的最大文件数量,超过的话会提示
#hard nofile :每个进程可以打开的最大文件数量,超过的话会报错
...
* soft nofile 65536
* hard nofile 65536
* soft nproc 655350
* hard nproc 655350
# End of file
修改进程虚拟内存区域
vim /etc/sysctl.conf
...
vm.max_map_count = 524288 #限制一个进程可以拥有的 VMA ( 虚拟内存区域 ) 的数量
fs.file-max = 131072 #内核可分配的最大文件数
fs.nr_open = 1048576 #单个进程可分配的最大文件数
fs.inotify.max_user_instances = 65535 #每个用户最大可创建inotify instances数量
fs.inotify.max_user_watches = 102400 #每个用户可同时添加的watch数量
...
保存后执行,把/etc/sysctl.conf中的参数重新应用到系统中
sysctl -p
安装JDK11
yum install java-11-openjdk #安装JDK11
java -version #查看使用的版本
...
openjdk version "11.0.18" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-1.el7_9) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-1.el7_9) (build 11.0.18+10-LTS, mixed mode, sharing)
...
alternatives --config java #切换版本,如果之前装过JDK8,建议装JDK11后,将版本切换一下,然后再写入环境变量,否则后期使用sonar- scanner时候会报错
...
共有 2 个提供“java”的程序。
选项 命令
-----------------------------------------------
* 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64/jre/bin/java)
+ 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin/java)
按 Enter 保留当前选项[+],或者键入选项编号:
...
vim /etc/profile #设置环境变量,在文件底部加入以下内容
...
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64 #这里写自己实际的路径
export PATH=${JAVA_HOME}/bin:$PATH
...
source /etc/profile #让变量生效
安装postgresql13
yum localinstall -y postgresql13-server-13.0-1PGDG.rhel7.x86_64.rpm #安装服务端
yum localinstall -y postgresql13-libs-13.0-1PGDG.rhel7.x86_64.rpm #安装客户端依赖
yum localinstall -y postgresql13-13.0-1PGDG.rhel7.x86_64.rpm #安装客户端
初始化postgresql
1.#创建数据目录
mkdir -p /data/postgresql-13.0/
2.#修改目录的属主属组
chown postgres:postgres -R /data/postgresql-13.0/
3.#初始化pgsql
sudo -u postgres /usr/pgsql-13/bin/initdb --encoding=UTF-8 --username=postgres --pgdata=/data/postgresql-13.0/data
# --encoding 字符集
# --username 启动用户
# --pgdata 数据目录
4.#记录配置文件路径
vim /data/postgresql-13.0/data/postgresql.conf
...
# - Connection Settings -
listen_addresses = '192.168.xx.xxx' # what IP address(es) to listen on;
...
5.#定义哪些服务器、可以用什么样的方式,访问postgresql
/data/postgresql-13.0/data/pg_hba.conf
...
# IPv4 local connections:
host all all 0.0.0.0/0 md5
...
6.#修改service文件中数据目录
vim /usr/lib/systemd/system/postgresql-13.service
...
# Location of database directory
Environment=PGDATA=/data/postgresql-13.0/data/
...
systemctl daemon-reload #重载服务
7.#启动postgresql
systemctl start postgresql-13
systemctl enable postgresql-13
创建sonarqube使用的数据库和用户
psql -U postgres #连接数据库(此命令会用postgres用户,默认连入postgres数据库。-U指定用户 -d指定数据库)
#新建用户sonarqube,密码xxxxxx
create user sonarqube with password 'xxxxxx';
#创建数据库sonarqube_9_6并指定owner为sonarqube
create database sonarqube_9_6 with owner sonarqube;
#授权sonarqube用户在数据库sonarqube_9_6拥有所有权限
grant all on database sonarqube_9_6 to sonarqube;
安装sonarqube
#创建用户sonar,因为sonarqube会用到ES,ES不能用root用户启动
useradd sonar
#解压包
unzip sonarqube-9.6.1.59531.zip
#修改目录的属主属组
chown -R sonar:sonar sonarqube-9.6.1.59531/
#备份原始配置文件
cd sonarqube-9.6.1.59531/conf/
cp sonar.properties sonar.properties_bak
修改sonar.properties配置文件
#postgresql连接配置
sonar.jdbc.username=sonarqube
sonar.jdbc.password=xxxxxx
sonar.jdbc.url=jdbc:postgresql://xx.xx.xx.xx:5432/sonarqube_9_6
#端口配置
sonar.web.port=9000
启动sonarqube
sudo -u sonar /opt/sonarqube-9.6.1.59531/bin/linux-x86-64/sonar.sh start
web端配置
初始用户名密码:admin/admin
登录后的样子(我提前汉化过):
汉化
下载汉化包
下载地址:https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-9.6
安装汉化包
将下载好的汉化包(sonar-l10n-zh-plugin-9.6.jar)移动到插件目录下即可
/opt/sonarqube-9.6.1.59531/extensions/plugins/
然后重启一下sonarqube服务即可
sudo -u sonar /opt/sonarqube-9.6.1.59531/bin/linux-x86-64/sonar.sh restart
配制(我个人使用过程中遇到的坑)
1.配制中开启 Allow users to sign-up
允许新用户进行身份验证。设置为“false”时,只有现有用户才能对服务器进行身份验证。
2.关掉Force user authentication
关掉强制用户身份验证
3.开启SCM
安装sonar-scanner 用于扫描分析项目
不一定要和sonarqube装到一个系统下,在哪扫就装哪
下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
#解压
unzip sonar-scanner-cli-4.8.0.2856-linux.zip -d /usr/local/
#创建软连接
ln -s /usr/local/sonar-scanner-cli-4.8.0.2856-linux/ /usr/local/sonar-scanner
#将 bin 目录添加到 PATH 环境变量
vim /etc/profile
...
export PATH=/usr/local/sonar-scanner/bin:$PATH
...
#环境变量生效
source /etc/profile
尝试分析一个项目
分析linux下的html项目
1.创建一个分析项目
2.点击创建令牌
3.例如分析一个html的项目
将下列代码在项目的根目录执行即可
4.在项目根目录执行指令
5.成功
6.在web端查看分析的项目
点击Bugs查看问题即可
分析一个java项目
1.前提是系统中已经安装了maven
2.在项目根目录执行指令
3.成功
4.然后在web端就可以看到分析的项目
5.点击Bugs可以看到问题的具体位置
6.点击问题原因,会告诉你该怎么修改代码,才能符合要求
过程中参考的文献
https://blog.csdn.net/qq522044637/article/details/126840161
https://blog.csdn.net/lizz861109/article/details/124869197
https://blog.csdn.net/weixin_41753664/article/details/122452178
https://www.656463.com/wenda/SonarQubefwqzzyxdwffwbqwzd404_180
https://community.sonarsource.com/t/java-lang-unsupportedclassversionerror-org-sonar-batch-bootstrapper-environmentinformation-has-been-compiled-by-a-more-recent-version-of-the-java-runtime-class-file-version-55-0-this-version-of-the-java-runtime-only-recognizes-class-file-versions-up-t/52120