云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

2021-03-02 11:00:22作者:夏蓝稿源:云网牛站

本文介绍在CentOS 7系统中安装和配置SonarQube代码检查工具的方法,按照本文的顺序操作即可:完成系统设置、在CentOS 7上安装Java 11、安装和配置PostgreSQL、提取并安装SonarQube、配置SonarQube、更改防火墙规则以允许SonarQube访问、访问Web用户界面、登入。

 

步骤1:完成系统设置

在此步骤中,请确保服务器已正确更新。现在我们将调整系统设置,例如SELinux、max_map_count和fs.file-max。请运行以下命令以更新服务器:

sudo yum update

sudo yum install vim wget curl -y

1、将SELinux配置为允许

这可以通过运行以下命令来完成:

sudo setenforce 0

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

参考:在CentOS 8上检查SELinux模式、将模式更改为Permissive及禁用的方法

2、调整max_map_count和fs.file-max

从Linux内核文档中,地址https://www.kernel.org/doc/Documentation/sysctl/vm.txt,此文件包含一个进程可能具有的最大内存映射区域数。

要调整设置以符合SonarQube的要求,请打开“/etc/sysctl.conf”文件并添加设置,如下所示:

$ sudo vim /etc/sysctl.conf

vm.max_map_count=262144

fs.file-max=65536

3、创建一个sonar用户

建议创建一个单独的用户来运行SonarQube。让我们创建一个:

sudo useradd sonar

然后为用户设置密码:

sudo passwd sonar

 

步骤2:在CentOS 7上安装Java 11

SonarQube用Java编写,并且需要安装Java。可在CentOS 7中安装Java 11,参考在CentOS 7/Fedora 29系统上安装Java 11的方法

 

步骤3:安装和配置PostgreSQL

我们将在SonarQube的同一服务器上安装PostgreSQL 11。您也可以根据需要将其托管在其他服务器上。要在CentOS 7服务器上安装PostgreSQL 11,请按照以下步骤安装并快速运行。

1、添加PostgreSQL Yum存储库

通过运行下面的命令,将PostgreSQL Yum Repository添加到您的CentOS 7系统:

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

2、安装PostgreSQL服务器和客户端软件包

添加PostgreSQL Yum存储库后,安装PostgreSQL服务器/客户端软件包:

sudo yum -y install postgresql11-server postgresql11

3、安装后,初始化数据库并启用自动启动

现在已经安装了数据库软件包,通过运行以下命令来初始化数据库:

sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

然后启动并启用服务以在启动时启动:

sudo systemctl start postgresql-11

sudo systemctl enable postgresql-11

安装PostgreSQL服务器后,请按照以下步骤进行配置。打开pg_hba.conf文件,将“peer”更改为“trust”,将“idnet”更改为“md5”,如下:

$ sudo vim /var/lib/pgsql/11/data/pg_hba.conf

##Change this

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

# 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

##To this:

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

# Allow replication connections from localhost, by a user with the

# replication privilege.

local   replication     all                                     peer

host    replication     all             127.0.0.1/32            md5

host    replication     all             ::1/128                 md5

4、启用对PostgreSQL的远程访问

如果您的应用程序位于远程位置,那么您将需要允许它如下访问数据库。

编辑文件/var/lib/pgsql/11/data/postgresql.conf并将所有服务器的监听地址设置为服务器IP地址或“*”:

$ sudo vim /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '10.38.87.160'

然后将以下内容添加到“pg_hba.conf”文件中:

$ sudo vim /var/lib/pgsql/11/data/pg_hba.conf

# Accept from anywhere

host    all             all             0.0.0.0/0            md5

# Or accept from trusted subnet

host    all             all             10.38.87.0/24        md5

重新启动PostgreSQL服务:

sudo systemctl restart postgresql-11

5、设置PostgreSQL管理员用户

我们将需要更改admin postgres用户的密码,如下所示:

$ sudo su - postgres

-bash-4.2$

-bash-4.2$: psql 

postgres=# alter user postgres with password 'StrongPassword';

ALTER ROLE

postgres=#

6、创建SonarQube用户和数据库

接下来,我们将为SonarQube创建一个用户。退出数据库之前,请按照如下所示进行操作:

postgres=# createuser sonar;

postgres=# createdb sonar_db owner sonar;

postgres=# grant all privileges on database sonar_db to sonar;

为sonar用户设置密码:

postgres=# ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';

 

步骤4:提取并安装SonarQube

现在我们将下载SonarQube的长期版本,然后安装在我们的服务器中。请按照以下步骤进行操作,以安装我们的SonarQube。

1、获取SonarQube LTS版本

您可以访问SonarQube下载页面以查看其各种产品,地址在https://www.sonarqube.org/downloads/。我们将下载长期版本(LTS):

在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

也可在终端中下载SonarQube:

cd /opt/

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

然后解压缩文件:

sudo unzip sonarqube-7.9.5.zip

之后,将文件夹重命名为sonarqube:

sudo mv sonarqube-7.9.5 sonarqube

 

步骤5:配置SonarQube

将文件提取到/opt/目录后,就可以配置应用程序了。

打开“/opt/sonarqube/conf/sonar.properties”文件,并添加数据库详细信息,如下所示。除此之外,找到共享的行并取消注释:

$ sudo vim /opt/sonarqube/conf/sonar.properties

\##Database details

sonar.jdbc.username=sonar

sonar.jdbc.password=StrongPassword

sonar.jdbc.url=jdbc:postgresql://localhost/sonar_db

\##How you will access SonarQube Web UI

sonar.web.host=10.38.87.160

sonar.web.port=9000

\##Java options

sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

\##Also add the following Elasticsearch storage paths

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

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

将SonarQube文件的所有权授予我们在步骤1中创建的sonar用户:

sudo chown -R sonar:sonar /opt/sonarqube

如果无法在默认位置找到Java,则必须指定SonarQube的二进制文件才能找到。您可以在“/opt/sonarqube/conf/wrapper.conf”文件中指定java的位置。查找“wrapper.java.command”行,并将您的Java位置放置在其旁边:

$ sudo vim /opt/sonarqube/conf/wrapper.conf

wrapper.java.command=/usr/local/jdk-11.0.2/bin/java

下面将进行添加SonarQube SystemD服务文件的操作。

现在我们将确保我们能够通过Systemd管理SonarQube应用程序,以便像在服务器中的其他服务一样启动和停止它:

$ sudo 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

编辑systemd文件后,我们必须重新加载它们,以便可以读取和加载它们:

sudo systemctl daemon-reload

然后启动并启用服务:

sudo systemctl start sonarqube.service

sudo systemctl enable sonarqube.service

检查其状态是否成功启动并正在运行:

sudo systemctl status sonarqube.service

 

步骤6:更改防火墙规则以允许SonarQube访问

此时,应运行sonarqube服务。如果您无法访问Web界面,请访问“/opt/sonarqube/logs”中的日志文件,在该文件中您将找到:

elasticsearch logs (es.log)

Sonar logs (sonar.log)

web logs (web.log)

Access logs (access.log)

And others

我们使SonarQube Web能够侦听9000端口,并且应该在防火墙上对此进行允许。继续执行以下共享的操作:

sudo firewall-cmd --permanent --add-port=9000/tcp && sudo firewall-cmd --reload

 

步骤7:访问Web用户界面

现在,我们准备访问SonarQube界面,并开始评估我们的代码的安全性。要访问该界面,请打开您喜欢的浏览器并将其指向http://server-ip-or-fqdn:9000。您应该看到与以下页面相似的页面:

在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

 

步骤8:登入

要登录,只需单击上面共享的“登录(Log In)”按钮,您将进入到如下页面。使用用户名为“admin”,密码为“admin”:

在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

并且您应该被引导到如下所示的主要区域:

在CentOS 7系统中安装和配置SonarQube代码检查工具的方法

至此,在CentOS 7中安装和配置SonarQube全部完成。

 

相关主题

在Linux下安装和使用Adminer,用它管理MySQL/MariaDB和PostgreSQL

精选文章
热门文章