sonar 安装
sonar
Sonar(SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
下载地址
https://www.sonarqube.org/downloads/
社区版免费的
创建
创建sonar数据库
创建sonar 用户,和授权
mysql> create user 'sonar' identified by 'sonar'; Query OK, 0 rows affected (0.09 sec) mysql> flush privileges; Query OK, 0 rows affected (0.09 sec) mysql> grant all privileges on sonar.* to 'sonar'@'%' identified by 'sonar'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> grant all privileges on sonar.* to 'sonar'@'localhost' identified by 'sonar'; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
修改配置
下载和 解压 zip
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip
unzip sonarqube-7.6 必须低于7.9版本,大于7.9不支持mysql权限 chmod -R 777 sonarqube-8.8.0.42792
修改配置文件 sonar.properties
sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.jdbc.url = jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 sonar.web.port=9000
sonar的启动需要的是普通的用户角色,如果使用root启动的时候,会提示错误
adduser sonarUser passwd sonarUser chown -R sonarUser:sonarUser sonarqube 切换到新建的用户角色sonarUser中,启动sonar su sonarUser chmod -R 777 /data/conf/sonar /data/conf/sonar/bin/linux-x86-64/sonar.sh start
中文插件安装
登录,默认的登录账号信息是admin,admin
从配置中找应用市场,从应用市场中搜索chinese即可,安装完插件以后需要重启服务
安装sucess
必备环境
mysql 5.7
jdk 1.8
sonar 7.6
流程
安装和解压 sonar7.6
登录mysql创建sonar用户,和创建sonar数据库
mysql> use mysql Database changed mysql> select user,host from user; +---------------+-----------+ | user | host | +---------------+-----------+ | root | % | | sonar | % | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | sonar | localhost | +---------------+-----------+ 6 rows in set (0.00 sec) mysql> grant all on sonar.* to 'sonar'@'%' identified by 'sonar'; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> grant all on sonar.* to 'sonar'@'%' identified by 'sonar'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> grant all on sonar.* to 'sonar'@'%' identified by 'sonar'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> grant all on sonar.* to 'sonar'@'localhost' identified by 'sonar'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) # 使用sonar用户登录一次mysql [root@VM-0-2-centos /]# mysql -usonar -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.33-log Source distribution Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | sonar | +--------------------+ 2 rows in set (0.00 sec) mysql>
数据库配置
sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.port=9000
启动sonarqube
报错
[root@VM-0-2-centos linux-x86-64]# ./sonar.sh console Running SonarQube... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/software/sonar qube-7.6/tempjvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001 jvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePref ix=es]] from [/usr/local/software/sonarqube-7.6/elasticsearch]: /usr/local/software/sonarqube-7.6/elasticsearch/bin/elasticsearch -Epath.conf=/usr/local/software/sonarqube-7.6/temp/conf/esjvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running jvm 1 | 2021.04.13 16:37:04 INFO app[][o.e.p.PluginsService] no modules loaded jvm 1 | 2021.04.13 16:37:04 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin] jvm 1 | 2021.04.13 16:37:04 WARN app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 1 jvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.SchedulerImpl] Process [es] is stopped jvm 1 | 2021.04.13 16:37:04 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped wrapper | <-- Wrapper Stopped
去logs查看日志es.log:
[root@VM-0-2-centos logs]# tail -f es.log at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.3.jar:5.6.3] Caused by: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.3.jar:5.6.3] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.3.jar:5.6.3] ... 6 more
报错原因:因为安全问题elasticsearch不让用root用户直接运行。
创建centos用户
[root@VM-0-2-centos logs]# groupadd sonarqube [root@VM-0-2-centos logs]# useradd sonarqube -g sonarqube -p sonarqube [root@VM-0-2-centos logs]# chown -R sonarqube.sonarqube /usr/local/software/sonarqube-7.6
切换系统的新用户运行; 运行sonarqube
[root@VM-0-2-centos logs]# su sonarqube [sonarqube@VM-0-2-centos logs]
SUCESS
[sonarqube@VM-0-2-centos linux-x86-64]$ ./sonar.sh console Running SonarQube... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2021.04.13 16:45:58 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/software/sonar qube-7.6/tempjvm 1 | 2021.04.13 16:45:58 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001 jvm 1 | 2021.04.13 16:45:58 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePref ix=es]] from [/usr/local/software/sonarqube-7.6/elasticsearch]: /usr/local/software/sonarqube-7.6/elasticsearch/bin/elasticsearch -Epath.conf=/usr/local/software/sonarqube-7.6/temp/conf/esjvm 1 | 2021.04.13 16:45:58 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running jvm 1 | 2021.04.13 16:45:58 INFO app[][o.e.p.PluginsService] no modules loaded jvm 1 | 2021.04.13 16:45:58 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin] jvm 1 | 2021.04.13 16:46:04 INFO app[][o.s.a.SchedulerImpl] Process[es] is up jvm 1 | 2021.04.13 16:46:04 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePre fix=web]] from [/usr/local/software/sonarqube-7.6]: /usr/local/java/jdk1.8.0_161/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/software/sonarqube-7.6/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:/usr/local/software/sonarqube-7.6/lib/jdbc/h2/h2-1.3.176.jar org.sonar.server.app.WebServer /usr/local/software/sonarqube-7.6/temp/sq-process7886745995658547287properties
访问服务器
防火墙放开9000端口
http://119.29.14.214:9000/ (admin/admin)
效果
sonar.jpg
再次运行会报错
因为这个是sonar异常关机后产生的错误,正常关机必须是通过网页关机,不能直接 ctrl+C;
[sonarqube@VM-0-2-centos linux-x86-64]$ ./sonar.sh console Running SonarQube... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2021.04.13 17:04:32 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/software/sonarq ube-7.6/tempjvm 1 | jvm 1 | WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /usr/local/software/sonar qube-7.6/temp/conf/es/jvm.optionsjvm 1 | java.nio.file.AccessDeniedException: /usr/local/software/sonarqube-7.6/temp/conf/es/jvm.options jvm 1 | at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) jvm 1 | at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) jvm 1 | at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) jvm 1 | at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244) jvm 1 | at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) jvm 1 | at java.nio.file.Files.delete(Files.java:1126) jvm 1 | at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:186) jvm 1 | at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:181) jvm 1 | at java.nio.file.Files.walkFileTree(Files.java:2670) jvm 1 | at java.nio.file.Files.walkFileTree(Files.java:2742) jvm 1 | at org.sonar.process.FileUtils2.deleteDirectoryImpl(FileUtils2.java:143) jvm 1 | at org.sonar.process.FileUtils2.deleteDirectory(FileUtils2.java:112) jvm 1 | at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:117) jvm 1 | at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:101) jvm 1 | at java.nio.file.Files.walkFileTree(Files.java:2670) jvm 1 | at org.sonar.application.AppFileSystem.createOrCleanTempDirectory(AppFileSystem.java:96) jvm 1 | at org.sonar.application.AppFileSystem.reset(AppFileSystem.java:62) jvm 1 | at org.sonar.application.App.start(App.java:55) jvm 1 | at org.sonar.application.App.main(App.java:78) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) jvm 1 | at java.lang.reflect.Method.invoke(Method.java:498) jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) jvm 1 | at java.lang.Thread.run(Thread.java:748) wrapper | <-- Wrapper Stopped [sonarqube@VM-0-2-centos linux-x86-64]$
解决方法:
删除sonarqube temp目录下的所有文件即可
[sonarqube@VM-0-2-centos bin]$ rm -rf temp
安装中文插件
默认显示英文,安装chinese pack插件,让界面语言显示中文:
Administration > Configuration配置 -> Marketplace应用市场 -> 搜索"chinese Pack" -> Install安装插件
bug:
选择和sonar版本一致的插件否在报错,
Error while downloading plugin 'l10nzhtw' with version '1.0'. No compatible plugin found.
弹出重启提示 ->选择Restart重启应用 -> 再登录就是中文界面
作者:Raral
链接:https://www.jianshu.com/p/4ed8748cbff8