如何在Centos 7上安装Sonarkube
Zuoxiaojuan
・10 分钟阅读
使用不同的系统?
SonarQube是一个用于质量系统开发的开源工具,它是用Java编写的,支持多种数据库,它提供持续检查代码,显示应用程序健康状况和突出显示新引入的问题的功能,它包含了用于检测棘手问题的代码分析器,它也易于与DevOps集成。
在本教程中,我们会在CentOS 7.上安装最新版本的SonarQube。
注意:此文档自它原始发布后已更新,参见脚注中的"勘误表"部分。
前提条件
- 有至少2GB RAM的64位CentOS 7服务器实例,
- 一个sudo用户 ,
步骤1:执行系统更新
在将任何软件包安装到CentOS服务器实例之前,建议你更新系统,使用sudo用户登录,并运行以下命令来更新系统。
sudo yum -y install epel-release
sudo yum -y update
sudo shutdown -r now
系统重新启动后,再次作为sudo用户登录,然后继续下一步。
步骤2安装Java
下载Oracle SE JDK RPM软件包,输入:
wget --no-cookies --no-check-certificate --header"Cookie:oraclelicense=accept-securebackup-cookie""http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
通过键入以下命令安装下载的软件包:
sudo yum -y localinstall jdk-8u131-linux-x64.rpm
你现在可以通过键入以下命令来检查Java版本:
java -version
步骤3安装和配置PostgreSQL
通过键入以下命令安装PostgreSQL知识库:
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
运行以下命令安装PostgreSQL数据库服务器:
sudo yum -y install postgresql96-server postgresql96-contrib
初始化数据库:
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
编辑 /var/lib/pgsql/9.6/data/pg_hba.conf
启用MD5-based身份验证。
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
查找以下行并将peer
更改为trust
和idnet
到md5
。
# 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
更新后,配置应该与下面所示类似。
# 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
启动PostgreSQL服务器,并且使它能够在引导时通过运行以下命令自动启动:
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
更改默认PostgreSQL用户的密码。
sudo passwd postgres
切换到postgres
用户。
su -postgres
键入以下命令创建一个新用户:
createuser sonar
切换到PostgreSQL shell 。
psql
为新创建的用户设置SonarQube数据库的密码。
ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';
运行以下命令为PostgreSQL数据库创建一个新数据库:
CREATE DATABASE sonar OWNER sonar;
从psql
shell退出:
q
通过运行exit
命令切换回sudo用户。
步骤4下载并配置Sonarkube
下载SonarQube安装程序文件存档。
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip
您可以随时在SonarQube上查找最新版本应用程序的链接下载页面 。
通过运行以下命令安装解压缩:
sudo yum -y install unzip
使用以下命令解压存档文件。
sudo unzip sonarqube-6.4.zip -d /opt
重命名目录:
sudo mv /opt/sonarqube-6.4 /opt/sonarqube
使用你喜欢的文本编辑器打开SonarQube配置文件。
sudo nano /opt/sonarqube/conf/sonar.properties
查找下列行。
#sonar.jdbc.username=
#sonar.jdbc.password=
取消注释,并且提供我们先前创建的数据库的PostgreSQL用户名和密码,它看起来应该是:
sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword
下一步,查找:
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
取消注释该行,保存文件,并且退出编辑器。
步骤5:配置SystemD服务
可以使用安装程序包中提供的启动脚本直接启动SonarQube ,为了方便起见你应该为sonarcube设置一个Systemd单元文件。
sudo nano /etc/systemd/system/sonar.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
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target
运行以下命令启动应用程序:
sudo systemctl start sonar
启用SonarQube服务在引导时自动启动。
sudo systemctl enable sonar
要检查服务是否正在运行,请运行:
sudo systemctl status sonar
步骤5:配置反向代理
默认情况下SonarQube在端口9000上侦听localhost,在本教程中,我们会使用Apache作为反向代理,以便通过标准HTTP端口访问应用程序,运行以下命令安装Apache网络服务器:
sudo yum -y install httpd
创建新虚拟主机。
sudo nano /etc/httpd/conf.d/sonar.yourdomain.com.conf
用以下方法填充文件:
<VirtualHost *:80>
ServerName sonar.yourdomain.com
ServerAdmin me@yourdomain.com
ProxyPreserveHost On
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
TransferLog /var/log/httpd/sonar.yourdomain.com_access.log
ErrorLog /var/log/httpd/sonar.yourdomain.com_error.log
</VirtualHost>
启动Apache并使其在引导时自动启动:
sudo systemctl start httpd
sudo systemctl enable httpd
步骤6:配置防火墙
通过系统防火墙允许所需的HTTP端口。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
启动SonarQube服务:
sudo systemctl start sonar
你还需要禁用SELinux :
sudo setenforce 0
SonarQube已安装在服务器上,请访问以下地址的仪表板。
http://sonar.yourdomain.com
使用初始管理员帐户admin
和admin
登录,你现在可以使用SonarQube持续分析你编写的代码。
勘误表
如果安装SonarQube 7.1 (或更新),请进行以下更改,因为无法将较新版本的Elasticsearch作为root用户运行。
- 更新权限:
chown -R sonar:sonar /opt/sonarqube
- 修改
/opt/sonarqube/bin/linux-x86-64/sonar.sh
将#RUNAS
更改为"sonar
" - 修改
/etc/systemd/system/sonar.service
,将用户组更改为"sonar
"