雲計算

Sonarqube集群安裝配置

本文示例為在ceonts7上安裝

Sonarqube依賴

服務器最少需要1C2G的配置
Postgresql數據庫,版本為9.3以上,Mysql在7.9版本已經不再支持
OpenJDK 11或者JRE 11
所有sonarqube進程應該以非root用戶運行
具體內容可以查看官方文檔

安裝必備軟件及系統參數更改
步驟1:更新系統

sudo yum update -y
步驟2:安裝java 11

sudo yum install java-11-openjdk-devel -y
或者選擇自己上傳JDK包並更新profil文件配置

步驟3:以root用戶登錄並更改系統參數

vim /etc/security/limits.conf

修改配置文件,在文件最後加入下面兩行

  • soft nofile 65536
  • hard nofile 65536
    保存退出

更改sysctl.conf
vim /etc/sysctl.conf

添加以下配置

vm.max_map_count=655360

保存退出

生效

sysctl -p
安裝PostgreSQL 10
步驟1:安裝PostgreSQL 10 倉庫

sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
步驟2:安裝PostgreSQL 10

sudo yum install postgresql10-server postgresql10-contrib
步驟3:初始化數據庫

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
步驟4:編輯/var/lib/pgsql/data/pg_hba.conf文件更改md5認證

sudo vi /var/lib/pgsql/10/data/pg_hba.conf
找到下面幾行

TYPE DATABASE USER ADDRESS METHOD

"local" is for Unix domain socket connections only

local all all peer

IPv4 local connections:

host all all 127.0.0.1/32 ident

IPv6 local connections:

host all all ::1/128 ident
更改peer為trust,更改idnet為md5,更改後為

TYPE DATABASE USER ADDRESS METHOD

"local" is for Unix domain socket connections only

local all all trust

IPv4 local connections:

host all all 127.0.0.1/32 md5

IPv6 local connections:

host all all ::1/128 md5
步驟5:設置啟動PostgreSQL

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
步驟6:可以通過下面語句判斷下是否啟動成功

sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
創建Sonar用戶和數據庫
步驟1:創建Postgres用戶

sudo passwd postgres
步驟2:更換到postgres用戶

su - postgres
步驟3:登錄數據庫

psql
步驟4:新建sonarqubedb數據庫

create database sonarqubedb ENCODING='UTF-8';
步驟5:創建sonarqube的數據庫用戶

create user sonarqube with encrypted password 'your-strong-password';
步驟6:配置權限

grant all privileges on database sonarqubedb to sonarqube;
步驟7:退出數據庫

exit
搭建Sonarqube web server
步驟1:下載Sonarqube安裝包

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.zip
由於是zip包的形式,如果速度太慢可以本地下載好以後上傳到ecs中在安裝

步驟2:解壓縮zip包並重命名

sudo unzip sonarqube-7.9.zip
sudo mv sonarqube-7.9 sonarqube
步驟3:編輯sonar.properties文件

sudo vi /opt/sonarqube/conf/sonar.properties
將下面幾行的註釋打開並更改

sonar.jdbc.username=sonarqube
sonar.jdbc.password=你設置的密碼
sonar.jdbc.url=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/sonarqubedb?currentSchema=public
默認情況下,sonar會運行在9000端口,可以更改為想要的其他端口,更改如下兩行

sonar.web.host=0.0.0.0
sonar.web.port=目標端口
如果不想以http://url/的根路徑暴露服務的換,可以更改下面一行添加context

sonar.web.context=/sonar
由於是集群配置,對於master機器的配置如下:

sonar.cluster.enabled=true
sonar.cluster.web.startupLeader=true
sonar.cluster.ce.disabled=false
sonar.cluster.search.disabled=false
sonar.cluster.web.disabled=false
sonar.cluster.search.master=true
sonar.cluster.search.hosts=xxx.xxx.xxx.xxx
sonar.search.clusterName=sq_search_cluster_name
sonar.cluster.search.nodeName=sonarqube_master_nodename
對於slave機器的配置如下:

sonar.cluster.enabled=true
sonar.cluster.web.startupLeader=false
sonar.cluster.ce.disabled=true
sonar.cluster.search.disabled=false
sonar.cluster.web.disabled=true
sonar.cluster.search.master=false
sonar.cluster.search.hosts=xxx.xxx.xxx.xxx
sonar.search.clusterName=sq_search_cluster_name
sonar.cluster.search.nodeName=sonarqube_slave_nodename
接入ldap配置:

LDAP configuration

General Configuration

sonar.security.realm=LDAP
ldap.url=ldaps://qscsso3.qingsongchou.com:636
ldap.bindDn=uid=sonar_test,cn=users,cn=accounts,dc=qscsso3,dc=qingsongchou,dc=com
ldap.bindPassword=*

User Configuration

ldap.user.baseDn=cn=users,cn=accounts,dc=qscsso3,dc=qingsongchou,dc=com
ldap.user.request=(&(objectClass=person)(uid={login}))
ldap.user.realNameAttribute=displayName
ldap.user.emailAttribute=mail

Group Configuration

ldap.group.baseDn=cn=api_group,cn=groups,cn=accounts,dc=qscsso3,dc=qingsongchou,dc=com
ldap.group.request=(&(objectClass=group)(member={dn}))
啟動Sonarqube服務
需要新建sonar的linux用戶來啟動sonar服務

步驟1:創建sonar用戶並更改sonarqube文件夾權限

sudo useradd sonar
sudo chown -R sonar:sonar /opt/sonarqube
步驟2:啟動sonar服務

sudo su - sonar
cd /opt/sonarqube/bin/linux-x86-64
./sonar.sh start
現在可以通過前面設置的端口在本地訪問了

可以通過下面命令查看sonar的狀態

./sonar.sh status
SonarScanner的安裝和部署
Sonar-scanner提供了sonarqube的CLI訪問方式,一般和jenkins插件結合或者自己通過別的方式調用

步驟1:下載安裝包

cd /opt
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
同樣,由於是zip包,如果速度慢的話可以本地下載後上傳到ecs服務器上

步驟2:解壓縮並且重命名文件夾,更改為sonar所屬權限

unzip sonar-scanner-cli-4.0.0.1744-linux.zip
mv sonar-scanner-cli-4.0.0.1744-linux.zip sonar-scanner
chown -R sonar:sonar sonar-scanner
步驟3:編輯sonar-scanner.properties

cd /opt/sonar-scanner/conf
vim sonar-scanner.properties
步驟3:更改下面一行,取消註釋並配置sonarqube的服務地址,例子中是配置在一臺服務器上的

sonar.host.url=http://localhost:9000/sonar
步驟4:添加sonar-scanner的環境變量

vim /etc/profile
添加環境變量

配置sonar-scanner

export SONAR_RUNNER_HOME=/opt/sonar-scanner
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
步驟4:查看是否配置成功

sonar-scanner -h

如果成功可以看到類似如下內容

usage: sonar-scanner [options]

Options:
-D,--define Define property
-h,--help Display help information
-v,--version Display version information
-X,--debug Produce execution debug output

Sonarqube日誌路徑
所有的日誌都放在/opt/sonarqube/logs路徑下,可以查看相關的日誌

es.log #es的啟動日誌
sonar.log #sonar服務本身的日誌
web.log #web服務的日誌,大部分日誌和原因可以通過web日誌查看到
access.log #用戶訪問的日誌

Leave a Reply

Your email address will not be published. Required fields are marked *