如何在Centos 7上安装和配置Sonarqube

时间:2020-02-23 14:38:32  来源:igfitidea点击:

SONARQUBE是一个开源平台,可连续检查代码质量。
它用于通过静态分析来执行自动评论,以检测超过20个编程语言的错误,代码闻到漏洞和安全漏洞。

其中我们将使用Oracle Java 11,PostgreSQL 10.x,nginx,并Let’s Encrypt 证书来安装和配置Sonarqube 7.9.x LTS。

在CentOS中安装和配置Sonarqube

使用root用户执行以下命令。

1.更新系统

yum update

2.禁用selinux.

打开SELinux配置并编辑文件:

vim /etc/sysconfig/selinux

将"selinux =强制执行"更改为"selinux = disabled"。

保存并退出文件。

3.将主机名设置为服务器

vim /etc/hostname

如果VIM不可用,请先安装VIM命令。

yum install vim -y

然后重新启动系统。

reboot

4.准备工作

我们可以查看官方文件以获取完整信息。

  • Java(Oracle JRE 11或者OpenJDK 11)
  • PostgreSQL 10或者9.3-9.6

硬件要求

  • 具有2GB或者Plus 内存的服务器
  • Linux的系统设置
vm.max_map_count is greater or equals to 262144
fs.file-max is greater or equals to 65536
the user running SonarQube can open at least 65536 file descriptors
the user running SonarQube can open at least 4096 threads

5.添加系统设置

编辑"sysctl.conf"文件:

vim /etc/sysctl.conf

添加以下行:

vm.max_map_count=262144
fs.file-max=65536

保存并退出文件。

6.安装Oracle Java 11

从这里下载Oracle JDK 11.

我们可以将RPM包下载到计算机上并将其上传到Sonarqube服务器。

或者我们可以使用以下步骤:

a)我们可以从Web浏览器下载中复制下载链接。

复制下载链接

b)然后使用"wget"命令转到服务器并下载。

wget https://download.oracle.com/otn/java/jdk/11.0.5+10/e51269e04165492b90fa15af5b4eb1a5/jdk-11.0.5_linux-x64_bin.rpm?AuthParam=1573886978_5511f6acaa0b321333446e8e838c1045

使用wget下载

c)如果系统中不可用"Wget"命令以使用以下命令安装它:

yum install wget -y

重命名下载的文件。

mv jdk-11.0.5_linux-x64_bin.rpm\?AuthParam\=1573886978_5511f6acaa0b321333446e8e838c1045 jdk-11.0.5_linux-x64_bin.rpm

安装Oracle JDK:

yum localinstall jdk-11.0.5_linux-x64_bin.rpm

Java安装在以下位置:

cd /usr/java/

添加Java环境变量:

vim /etc/bashrc

将以下行添加到文件的结尾:

export JAVA_HOME=/usr/java/jdk-11.0.5/
export JRE_HOME=/usr/java/jdk-11.0.5/jre
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

保存并退出文件并检查Java版本。

java -version

7.安装PostgreSQL 10

我们可以在此处看到基于Redhat基于的分布式的下载。

首先安装存储库:

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装服务器:

yum install postgresql10-server postgresql10-contrib

初始化数据库:

/usr/pgsql-10/bin/postgresql-10-setup initdb

初始化数据库

修改pg_hba.conf文件;将"对等体"更改为"信任"和"IDNet"到"MD5"。

vim /var/lib/pgsql/10/data/pg_hba.conf

更改文件

修改完成后,文件应如下:

修改后

要启动Service并在启动时设置,请在System启动时启用PostgreSQL:

systemctl enable postgresql-10

检查服务状态并启动它。

systemctl status postgresql-10
systemctl start postgresql-10

更改Postgres用户的默认密码:

passwd postgres

切换到Postgres用户。

su - postgres

创建一个新用户。

createuser sonar

切换到PostgreSQL shell。

psql

PostgreSQL shell.

为新创建的用户设置索纳基数据库的密码:

ALTER USER sonar WITH ENCRYPTED password 'd98ffW@123?Q';

为PostgreSQL数据库创建一个新数据库。

CREATE DATABASE sonar OWNER sonar;

退出PSQL shell。

\q

退出"Postgres"用户。

exit

8.下载并配置Sonarqube

我们将下载到"选择"目录中的包。
所以改变目录

cd /opt

其中我们将使用7.9.x LTS版本,可以在此处下载

下载最新LTS版本

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip

然后解开

unzip sonarqube-7.9.1.zip

如果未放大命令不可用。
安装解压缩。

yum install unzip -y

重命名文件夹

mv sonarqube-7.9.1 sonarqube

修改"sonar.properties文件"。

vim /opt/sonarqube/conf/sonar.properties

找到以下行。
然后取消注释并修改值。

sonar.jdbc.username=sonar
sonar.jdbc.password=d98ffW@123?Q
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

配置Elasticsearch存储路径:

sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp

保存并退出文件。

为sonarqube创建一个用户

useradd sonar

设置密码:

passwd sonar

修改文件夹权限

chown -R sonar:sonar /opt/sonarqube

创建以下文件夹并授予权限:

mkdir -p /var/sonarqube/data
mkdir -p /var/sonarqube/temp
chown -R sonar:sonar /var/sonarqube

将Sonarqube设置为服务

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
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target

重新加载"SystemCtl"守护程序并在系统启动时启用Sonar。

systemctl daemon-reload
systemctl enable sonarqube.service

启动服务并检查其状态。

systemctl start sonarqube.service
systemctl status sonarqube.service

logfile位置

cd /opt/sonarqube/logs/
  • SONARQUBE服务日志
tail -f /opt/sonarqube/logs/sonar.log
  • Web服务器日志
tail -f /opt/sonarqube/logs/web.log
  • Elasticsearch日志
tail -f /opt/sonarqube/logs/es.log
  • 计算引擎日志
tail -f /opt/sonarqube/logs/ce.log

9.配置反向代理

安装nginx,启动服务,并启用系统启动。

yum install -y nginx
systemctl start nginx
systemctl enable nginx

10.配置SSL.

启用EPEL REPO并安装CERTBOT。

yum install – y epel-release
yum install certbot python2-certbot-nginx

运行以下命令以获取证书,并将CERTBOT自动编辑NGINX配置,以便在一步中打开HTTPS访问。

certbot --nginx

命令将提出问题。
然后根据此添加所需的详细信息。

CERTBOT.

Certbot配置

安装完成后,打开nginx.conf。

vim /etc/nginx/nginx.conf

我们应该看到Certbot SSL配置。

SSL配置之后

然后将以下内容添加到位置块。

location/{
proxy_pass "http://127.0.0.1:9000";
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

保存并退出文件。
修改后的文件如下所示:

nginx配置

检查nginx语法:

nginx -t

重新启动nginx:

systemctl restart nginx

11. DNS.

然后转到DNS Manager并为声明服务器添加记录。

A Domain Name Server IP

12.修改防火墙规则

如果启用了防火墙,请运行以下命令以打开HTTPS流量。

firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

防火墙规则https.

如果我们需要为特定IP打开Sonar,请运行以下命令:

firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="122.43.8.188/32"
port protocol="tcp" port="443" accept'
firewall-cmd --reload

13.浏览Sonarqube.

转到浏览器并执行域名。

eg:- https://sonar.theitroad.com/

浏览Sonarqube.

然后单击"登录"。

默认用户名和密码是"admin"。

现在我们成功配置了Sonarqube。