阅读 149

sonar 安装

sonar

Sonar(SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。

下载地址

https://www.sonarqube.org/downloads/

社区版免费的

创建

  1. 创建sonar数据库

  2. 创建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)

修改配置

  1. 下载和 解压 zip
    wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip
    unzip sonarqube-7.6 必须低于7.9版本,大于7.9不支持mysql

  2. 权限 chmod -R 777 sonarqube-8.8.0.42792

  3. 修改配置文件  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
  1. 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
  1. 中文插件安装
    登录,默认的登录账号信息是admin,admin
    从配置中找应用市场,从应用市场中搜索chinese即可,安装完插件以后需要重启服务

安装sucess

必备环境

  • mysql 5.7

  • jdk 1.8

  • sonar 7.6

流程

  1. 安装和解压 sonar7.6

  2. 登录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>
  1. 数据库配置

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
  1. 启动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用户直接运行。

  1. 创建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
  1. 切换系统的新用户运行; 运行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
  1. 访问服务器

  • 防火墙放开9000端口

  • http://119.29.14.214:9000/  (admin/admin)

  • 效果


    sonar.jpg

  1. 再次运行会报错

因为这个是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
  1. 安装中文插件
    默认显示英文,安装chinese pack插件,让界面语言显示中文:

Administration > Configuration配置 -> Marketplace应用市场 -> 搜索"chinese Pack" -> Install安装插件

  • bug:

  1. 选择和sonar版本一致的插件否在报错,

Error while downloading plugin 'l10nzhtw' with version '1.0'. No compatible plugin found.

弹出重启提示 ->选择Restart重启应用 -> 再登录就是中文界面



作者:Raral
链接:https://www.jianshu.com/p/4ed8748cbff8


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐