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重启应用 -> 再登录就是中文界面

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容