【报错】安装SonarQube、SonarScanner在linux服务器上的配置
SonarQube、SonarScanner在linux服务器上的配置 |
本文介绍如何在linux服务器上配置SonarQube以及Sonar Scanner,因为安装路上踩了很多坑,所以一气之下写下这篇文章记录一下
首先!
jdk8支持的sonarqube版本最高是7.8,而从7.9版本开始都是要求jdk11
JDK8或者JDK1.8是同一个东西
查看你自己服务器的jdk版本,如果是1.8就安装sonarqube7.8及以下,否则后面会报错!
其次!注意你的sonarqube对应的MySQL版本
我使用的sonarqube7.5需要满足MySQL >=5.6 && <8.0
而我电脑的mysql是8版本的,所以我只能在服务器上配置了~QAQ
这里要查看对应版本可以去配置文件查看
查看配置文件
所以
如果你的电脑已经有了jdk1.8以及mysql5.7,那么你就可以直接使用如下两个版本了!
sonarqube7.5的压缩包里面有linux和windows的文件,所以你直接下载就可以了,不用分平台
给你们提供网盘链接:sonarqube7.5&sonar-scanner-cli-4.8.0.2856-linux
提取码:1010
sonarqube7.5解压后的bin文件:
安装 |
使用 root 用户 unzip sonarqube-7.5.zip
进行解压
然后你需要创建一个非root用户:useradd sonar
再授权Chown -R sonar.sonar /etc/docker/sonarqube-7.5
然后切换用户:su sonar
然后进入目录:cd /etc/docker/sonarqube-7.5/bin/linux-x86-64
启动服务:./sonar.sh start
可以检查一下是否启动成功:lsof -i:9000
启动成功:
然后输入你服务器的地址xxx:9000就可以访问
这样就正常访问
配置MySql |
往配置文件sonar.properties
加入下面的代码用来配置数据库
注意这里你要提前在数据库建一个sonar
库,也就是3306后面跟着的那个名字,就是数据库名字
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root#自己数据库用户名
sonar.jdbc.password=#自己数据库的密码
sonar.sorceEncoding=UTF-8
sonar.login=admin#设置登录sonar用户名
sonar.password=admin#设置登录sonar的密码
然后回到目录:/etc/docker/sonarqube-7.5/bin/linux-x86-64
执行:./sonar.sh restart
(重启sonar让配置生效!)
看到这里原本空的sonar库有了很多表就说明配置生效了
如果出现错误很肯可能是你的数据库用户权限问题,或者是数据库版本问题,要仔细排查
sonar-scanner-cli-4.8.0.2856-linux.zip |
接着解压sonar-scanner-cli:unzip sonar-scanner-cli-4.8.0.2856-linux.zip
(注意要在root用户下解压才有权限)
解压后往sonar-scanner.properties添加配置:
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=#你的数据库密码
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
再找到 /etc/profile 添加sonar-scanner的环境变量:
export SONAR_RUNNER_HOME=/etc/docker/sonar-scanner-4.8.0.2856-linux
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
修改后保存,并在root用户下:source /etc/profile
让环境变量生效
接着你可以使用sonar-scanner -h
检查是否成功配置好SonarScanner
然后切换sonar用户,重启sonar服务,如下就是成功启动了!
使用SonarScanner |
创建如下结构的python文件结构,手动新建sonar-project.properties
文件
以python为例,使用SonarScanner测试python文件
注意sonar.language=py
而不是sonar.language=python
!这个坑真的坑!🕳
sonar.projectKey=BadTest
sonar.sources=ForTest#要监测的文件夹名字,properties文件和他在同一级就可以这样直接写
sonar.host.url=http://sonar所在的IP:9000
sonar.language=py
sonar.sourceEncoding=UTF-8
找到要测试的文件夹:
输入:
sonar-scanner
这样说明运行成功
回到xxxx:9000页面
有了成功生成的分析项目!
【启动sonarqube时报错,启动不成功】
WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /etc/docker/sonarqube-7.5/temp/conf/es/log4j2.properties
java.nio.file.AccessDeniedException: /etc/docker/sonarqube-7.5/temp/conf/es/log4j2.properties
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:186)
at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:181)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at org.sonar.process.FileUtils2.deleteDirectoryImpl(FileUtils2.java:143)
at org.sonar.process.FileUtils2.deleteDirectory(FileUtils2.java:112)
at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:117)
at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:101)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at org.sonar.application.AppFileSystem.createOrCleanTempDirectory(AppFileSystem.java:96)
at org.sonar.application.AppFileSystem.reset(AppFileSystem.java:62)
at org.sonar.application.App.start(App.java:55)
at org.sonar.application.App.main(App.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
at java.lang.Thread.run(Thread.java:748)
<-- Wrapper Stopped
注意 WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException
:
说明没有权限!,这个时候就要chown -R sonar.sonar /etc/docker/sonarqube-7.5
,用root用户给sonar授权访问文件
【sonar检查java项目,命令行启动springboot报错】
在命令行输入sonar生成的命令语句:mvn sonar:sonar -Dsonar.host.url=http://xxxxx:9000 -Dsonar.login=sonar
启动报错如下:
[INFO] SonarQube version: 7.5.0
[INFO] Default locale: "zh_CN", source code encoding: "UTF-8"
[INFO] Publish mode
[INFO] Load global settings
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.323 s
[INFO] Finished at: 2023-04-08T16:50:50+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar (default-cli) on project pollu: Not au
thorized. Please check the properties sonar.login and sonar.password. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
【解决】:mvn clean verify sonar:sonar -Dsonar.host.url=http://xxxxx:9000 -Dsonar.login=admin -Dsonar.password=admin
使用这个语句启动,报错提示没有密码和账户,所以加上账号密码
启动成功:
[启动检查python报错]
ERROR: Error during SonarQube Scanner execution
ERROR: Not authorized. Please check the properties sonar.login and sonar.password.
与上面类似,提示登录错误,使用如下登录即可:
sonar-scanner.bat -D"sonar.projectKey=bad" -D"sonar.sources=." -D"sonar.host.url=http://xxxx:9000" -D"sonar.login=admin" -D"sonar.password=admin"