安装环境:centos7.9
版本:7.9.6 (7.9.6版本是LTS版本,且支持分支检测功能)
官方指导: Install the Server | SonarQube Docs
参考文献:Linux下部署SonarQube+PostgreSQL+sonnar-scanner(记录(吐槽)下让我崩溃的一些坑)_第1222只Joker的博客-CSDN博客centos7上使用yum安装postgresql10 · 运维之路
1.系统配置
更改系统配置:
sonarqube里集成了elasticsearch, 由于elasticsearch占用内存较高,官方要求达到如下配置:
命令行输入:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
永久生效,写入如下配置文件:
vi /etc/sysctl.d/sonarqube.conf
vm.max_map_count=262144
fs.file-max=65536
输入:sysctl -p /etc/sysctl.d/sonarqube.conf 生效
vi /etc/profile
ulimit -n 65536#保存后运行#source /etc/profile 使其生效
source /etc/profile
2.安装java11
新一点的sonarqube版本都要求是java11了
机器上yum search java,可以看到有java-11-openjdk.*, 后缀是不同的平台。
命令行输入:yum install java-11-openjdk 即可安装虚拟机对应的平台的java11版本。
3.安装配置PostgreSQL数据库
新版本的sonarqube也逐渐禁用了mysql,我们选择使用更加通用的PostgresSQL。
- yum源配置:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 安装:
yum install -y postgresql10 postgresql10-server
- 初始化:(需要先指定编码,不然会报错,服务端无法使用GBK编码)
export PGSETUP_INITDB_OPTIONS="-E UTF-8 --locale=zh_CN.UTF-8"
/usr/pgsql-10/bin/postgresql-10-setup initdb
- 启动机设置开机启动:
systemctl enable postgresql-10
systemctl start postgresql-10
- 开启远程访问:
echo "listen_addresses = '*'" >> /var/lib/pgsql/10/data/postgresql.conf
vi /var/lib/pgsql/10/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all peer
#host replication all 127.0.0.1/32 ident
#host replication all ::1/128 ident
systemctl restart postgresql-10
- 数据库配置:
安装完后会自动创建postgres用户 su - postgres切换进去
psql 进入命令行模式
create database sonar; 创建sonar数据库
create user sonar; 创建sonar用户
alter user sonar with password 'yourpassword'; 设置sonar用户密码(否则会导致连不上数据库)
alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;给sonar授权
alter database sonar owner to sonar; 更改sonar数据库拥有者(这一步是必须的,否则会sonarqube会连接失败)
检查一下,结果应该是这样的, psql进入命令行模式 \l查看数据库 \du 查看用户.
退出命令行:\q
退出postgres:exit
4.下载安装sonar7.9.6软件包
下载连接:Download | SonarQube
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.6.zip
- 添加非root用户sonarqube
useradd -m sonarqube -d /home/sonarqube
以下操作均在sonarqube用户下操作:su sonarqube
- 解压安装包:
cd /usr/local/
unzip sonarqube-7.9.6.zip
- 安装插件:
将以下这三个插件拷贝到/usr/local/sonarqube-7.9.6/extensions/plugins目录:
1)sonar-l10n-zh-plugin-1.29.jar #中文插件
2) (配置参考博文:SonarQube+Jenkins实现C++代码扫描 - 简书)
sonar-cxx-plugin-2.0.7.3119.jar # 支持C++规则的插件
3)sonarqube-community-branch-plugin-1.3.2.jar # 支持分支的插件
该插件还需要拷贝到lib/common 目录
- 修改sonarqube配置文件:(/usr/local/sonarqube-7.9.6/conf/sonar.properties)
server访问:
sonar.web.host=机器ip地址
sonar.web.port=9000
java参数设置:(可不设)
sonar.web.javaOpts=-server -Xmx1024m -Xms512m -XX:+HeapDumpOnOutOfMemoryError
数据库连接设置:
sonar.jdbc.username=sonar
sonar.jdbc.password=yourpassword # 数据库配置中sonar用户的密码
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
LDAP配置:
sonar.security.realm=LDAP
ldap.url=ldap://ip**:389
ldap.bindDn=test
ldap.bindPassword=***
ldap.authentication=simple
ldap.user.baseDn=OU=testgroup,DC=company,DC=com
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
ldap.user.emailAttribute=email
ldap.group.baseDn=CN=sw,OU=testgroup,DC=company,DC=com
ldap.group.request=(&(objectClass=group)(member={dn}))
ldap.group.idAttribute=sAMAccountName
- 添加自启动服务:
-
ln -s /usr/local/sonarqube-7.9.6/bin/linux-x86-64/sonar.sh /usr/bin/sonar vim /etc/init.d/sonarqube #!/bin/sh # # rc file for SonarQube # # chkconfig: 345 96 10 # description: SonarQube system (www.sonarsource.org) # ### BEGIN INIT INFO # Provides: sonar # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: SonarQube system (www.sonarsource.org) # Description: SonarQube system (www.sonarsource.org) ### END INIT INFO /usr/bin/sonar $* chkconfig --add sonarqube chkconfig sonarqube on service sonarqube status
5.启动sonarqube:
sonar start