一、前置条件
1.1 相关软件
- sonarqube版本 7.8 (build 26217)
- JAVA (build 1.8.0_191-b12)
- Mysql 数据库Server version: 5.7.30
1.2 关闭防火墙
查看selinux墙状态
命令:sestatus
临时关闭:setenforce 0
永久关闭:vi /etc/selinux/config
设置: selinux =disabled
防火墙状态
上图是关闭状态,如果没有关闭需要用以下步骤关闭
- systemctl stop firewalld
- systemctl disable firewalld
- 重新reboot启动系统.
1.3 mysql数据库安装
具体安装方法在我的头条文章中有详细的介绍,大家可以移步浏览,
安装mysql完毕后,设置 mysql /123456
1.3.1、数据库配置
1.3.1.1进入数据库
1.3.1.2创建数据库,名称为sonarqube_db,
mysql> create database sonarqube_db character set utf8 collate utf8_general_ci;(collate核对的意思,utf-_general_ci一般比较,不区分大小写)
Query OK, 1 row affected (0.01 sec)
1.3.1.3创建用户并设置密码
mysql> create user ‘sonarqube_user’ identified by ‘password’;
Query OK, 0 rows affected (0.01 sec)
1.3.1.4给用户赋权
mysql> grant all privileges on *.* to sonarqube_user@’%’ identified by ‘password’ with grant option;
with grant option意思是新创建的用户可以给其他用户再赋权。
Query OK, 0 rows affected, 1 warning (0.00 sec)
给sonarqube_user赋权限。
mysql> grant all privileges on *.* to sonarqube_user@’localhost’ identified by ‘password’;
Query OK, 0 rows affected, 1 warning (0.00 sec)
赋值生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
1.3.1.5相关操作
查看当前登录用户
mysql> select user();
查看当前数据库
mysql> select database();
查询所有用户和host;
mysql> select host,user from mysql.user;
1.3.1.6设置mysql自启动
vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld –defaults-file=/etc/my.cnf
1.3.1.7启动mysql并且把这个服务加入到开机启动项
systemctl start mysql
systemctl enable mysql
1.4安装 JDK (java)
1.4.1下载jdk-8u191-linux-x64.tar.gz
1.4.2解压:tar zxvf jdk -8u191-linux-x64.tar.gz
出现如下目录
1.4.3、在/usr/下建立 java 文件夹,把这个目录移动到java下面
[root@rhel7 ~]# find / -name jre //查找jdk安装路径。
1.4.4、把jdk1.8目录移动到/usr/java下面。
[root@rhel7 software]# mv jdk1.8.0_191/ /usr/java
1.4.5、配置环境变量
vi /etc/profile
#java
export JAVA_HOME=/usr/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
1.4.6、配置文件生效
[root@rhel7 jdk1.8.0_191]# source /etc/profile
1.4.7、验证
[root@rhel7 jdk1.8.0_191]# java -version
java version “1.8.0_191”
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
JDK安装完成。
二、安装sonarqube
2.1相关下载
SonarQube官网:
官方文档:
官方下载:
2.2把下载的文件解压到/usr/local下
[root@rhel7 home]# unzip -o sonarqube-7.8.zip -d /usr/local/
2.3配置文件
位置:/opt/sonarqube/conf/ sonar.properties
[root@rhel7 conf]# vim sonar.properties
[root@rhel7 conf]# pwd
/usr/local/sonarqube-7.8/conf
上图中的第12行里面,sonarqube_db是在mysql中创建的数据库,对应sonarqube_user用户。
下图是配置访问sonarqube的web端口,可以修改为自己想要的端口,系统默认是9000。
2.4添加centos用户sonar
[root@rhel7 etc]# adduser sonar
[root@rhel7 etc]# passwd sonar
密码:sonar1234
2.5为了安全,设置权限
sonarqube-7.8安装目录设置权限为sonar用户和sonar组
[root@rhel7 sonarqube-7.8]# chown -R sonar:sonar /usr/local/sonarqube-7.8
2.6启动
使用sonarqube_user用户切换到/usr/local/sonarqube-7.8/bin/linux-x86-64
[sonar@rhel7 linux-x86-64]$ ./sonar.sh start
三、排错
无法访问,web页面无法打开。
3.1报错如下图
解决办法
设置系统参数
编辑/etc/security/limits.conf
追加以下内容,注意每行前面有个*号,并且*号和字母之间空格分开。
Soft nofile 65535#具体值可以根据错误提示中的[]中的修改
Hard nofile 65535
编辑以下内容
[root@rhel7 temp]# vim /etc/sysctl.conf
保存后执行
[root@rhel7 temp]# sysctl –p
3.2报错如下
WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /usr/local/sonarqube-7.8/temp/conf/es/elasticsearch.yml
以root用户登录,删除/usr/local/sonarqube-7.8/temp目录下的所有内容
Rm –rf *
3.3报错如下图
查看sonar.log提示
Unable to start JVM : No such file or directory (2)
原因:JVM参数没有配置
解决办法
编辑 vim wrapper.conf文件
/usr/local/sonarqube-7.8/conf/wrapper.conf
增加
wrapper.java.command=/usr/java/jdk1.8.0_191/bin/java
以上的路径是安装java的路径
3.4总体排查思路
可以先跟着sonar.log日志,如果报了es错误,可以查看es.log;如果报了web错误,可以看web.log.(这些日志的位置在/usr/local/sonarqube-7.8/logs/)
安装的时候遇到的错误有”root用户无法启动elasticsearch问题”,”mysql连接问题”,”版本太低问题”,”内存溢出”……都可以在日志中找寻。
3.5端口问题
检测9000端口是否打开。
telnet 9000
如上图,当光标出现闪烁的时候,说明端口是通的。这一方法,通用于任何服务,是linux排错的常用方法之一。
9000端口如果要通,必须关掉防火墙,seliux,同时可以正常启动sonarqube服务,也就是ss –lnt可以看到9000和9001端口。
[root@rhel7 logs]# ss -tnl
3.6 ss命令:
用来显示处于活动状态的套接字信息,可以用来获取socket统计信息,可以显示和 netstat 类似的内容。
-h:显示帮助信息
-v:显示指令版本信息
-n:不解析服务名称,以数字方式显示端口;(常用)
-a:显示所有的 套接字 ;(常用)
-l:显示处于监听状态的套接字;(常用)
-t:只显示tcp套接字;(常用)
四、sonarqube离线安装插件,包括汉化。
下载插件后,放入sonar目录如下
sonarqube-7.8\extensions\plugins
chown –R sonar:sonar sonarqube-7.8文件夹,然后重启sonar就可以了。
五、设置开机自启动
5.1编写开机自启动脚本
进入到开机自启动调用文件目录
vim /etc/systemd/system/sonarqube.service
内容如下:
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
//根据自己安装目录的启动路径填写
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
//填写启动sonarqube的授权用户和用户组
User=sonar
Group=sonar
Restart=always
//linux启动调优
LimitNOFILE=65536
LimitNPROC=10240
[Install]
WantedBy=multi-user.target
5.2启用服务器重启后自动启动 sonarqube 服务
[root@rhel7 ~]# systemctl enable sonarqube.service
5.3查看开机自启动服务列表
[root@rhel7 ~]# systemctl list-unit-files|grep enabled
5.4查看sonarqube的开机自启动服务
[root@rhel7 ~]# systemctl status sonarqube.service -l
启动完成
5.5完全启动的日志输出
[root@rhel7 logs]# tail -f sonar.log
5.6网页访问正常