ubuntu18.04 安装soanarqube

Ubuntu18安装SonarQube

一、介绍

SonarQube是一个基于Web的开源工具,用于管理代码质量和代码分析。它最广泛地用于连续代码检查,该检查执行代码审查以检测PHP,C#,JavaScript,C / C++和Java等编程语言的错误,代码异味和漏洞问题,还可以跟踪统计信息并创建图表,使开发人员能够快速识别其代码中的问题。

  • PostgreSQL 版本 9.3 或更高版本

  • 具有 sudo 权限的 SSH 访问

  • 防火墙端口:9000

在这里,我们正在安装SonarQube 8.9版本,并且在安装SonarQube之前必须安装Oracle JAVA / Open JDK,Postgres / MS-SQL作为数据库和最新浏览器。要了解先决条件,请访问sonarqube官方页面注意:MySQL对SonarQube的支持已取消。

二、增加内核:在运行时增加当前会话的 vm.max_map_count 内核、文件描述符和 ulimit。

sudo sysctl -w vm.max_map_count=262144
sudo sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

三、安装步骤

1.安装OpenJDK

sudo apt-get install openjdk-11-jdk -y
sudo apt-get install openjdk-11-jre -y

2.设置默认 JDK

要设置默认 JDK 或切换到 OpenJDK,请输入以下命令:

sudo update-alternatives --config java

您将看到以下替代java的选择(提供/usr/bin/java)。

Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
* 3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode

键入1以切换 OpenJDK 11。

3.检查 JAVA 版本:

java -version
javac --version

输出:

java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

4.安装和安装程序 PostgreSQL 10 数据库 SonarQube

添加并下载 PostgreSQL 存储库

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

使用以下命令安装 PostgreSQL 数据库服务器,

sudo apt-get -y install postgresql postgresql-contrib

启动 PostgreSQL 数据库服务器

sudo systemctl start postgresql

启用它在启动时自动启动。

sudo systemctl enable postgresql

更改默认 PostgreSQL 用户的密码。

sudo passwd postgres

切换到 postgres 用户。

su - postgres

通过键入以下内容创建新用户:

createuser sonar

切换到 PostgreSQL shell。

psql

为 SonarQube 数据库新创建的用户设置密码。

ALTER USER sonar WITH ENCRYPTED password 'sonar';

通过运行以下命令为 PostgreSQL 数据库创建新数据库:

CREATE DATABASE sonarqube OWNER sonar;

授予sonar用户对sonar数据库的所有权限。

grant all privileges on DATABASE sonarqube to sonar;

退出 psql 外壳:

\q

通过运行 exit 命令切换回 sudo 用户。

exit

5.如何在Ubuntu 18.04 LTS上安装SonarQube

下载 sonaqube 安装程序文件存档 要下载最新版本,请访问 SonarQube下载页面

cd /tmp
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.1.44547.zip

将 archeve 安装程序解压缩到/opt目录

sudo unzip sonarqube-8.9.1.44547.zip -d /opt

将提取的安装程序移动到/opt/sonarqube目录

sudo mv /opt/sonarqube-8.9.1.44547 /opt/sonarqube

6.配置sonar

我们无法以 root 用户身份运行 Sonarqube,如果使用 root 用户运行,它会自动停止。我们已经找到了解决此问题的方法,以创建saparate组和用户来运行sonarqube。

创建组和用户:

创建一个组作为sonar

sudo groupadd sonar

现在添加具有目录访问权限的用户

sudo useradd -c "user to run SonarQube" -d /opt/sonarqube -g sonar sonar
sudo chown sonar:sonar /opt/sonarqube -R

使用您喜欢的文本编辑器打开SonarQube配置文件。

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

找到以下行。

#sonar.jdbc.username=
#sonar.jdbc.password=

取消注释并键入我们在上述步骤中创建的PostgreSQL数据库用户名和密码,并添加postgres连接字符串。

#--------------------------------------------------------------------------------------------------
# DATABASE
#
# IMPORTANT:
# - The embedded H2 database is used by default. It is recommended for tests but not for
#   production use. Supported databases are Oracle, PostgreSQL and Microsoft SQLServer.
# - Changes to database connection URL (sonar.jdbc.url) can affect SonarSource licensed products.
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

编辑sonar脚本文件并设置RUN_AS_USER

sudo vim /opt/sonarqube/bin/linux-x86-64/sonar.sh
# If specified, the Wrapper will be run as the specified user.
# IMPORTANT - Make sure that the user has the required privileges to write
#  the PID file and wrapper.log files.  Failure to be able to write the log
#  file will cause the Wrapper to exit without any way to write out an error
#  message.
# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or
#  port needs to be allocated prior to the user being changed.
RUN_AS_USER=sonar

启动sonar:

现在要启动SonarQube,我们需要执行以下操作:切换到sonar用户

sudo su sonar

移动到脚本目录

cd /opt/sonarqube/bin/linux-x86-64/

运行脚本以启动 SonarQube

./sonar.sh start

输出:

Starting SonarQube...
Started SonarQube

我们也可以将其添加到服务中,并且可以作为服务运行。

检查sonar运行状态

要检查sonaqube是否正在运行,请输入以下命令,

./sonar.sh status

sonar日志

要检查sonar声日志,请导航到/opt/sonarqube/logs/sonar.log目录

tail /opt/sonarqube/logs/sonar.log

输出:

INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/opt/sonarqube]: /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp --add-opens=java.base/java.util=ALL-UNNAMED -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/common/*:/opt/sonarqube/lib/jdbc/h2/h2-1.3.176.jar org.sonar.ce.app.CeServer /opt/sonarqube/temp/sq-process15059956114837198848properties
 INFO  app[][o.s.a.SchedulerImpl] Process[ce] is up
 INFO  app[][o.s.a.SchedulerImpl] SonarQube is up

使用关于输出,您将看到sonaqube已成功启动并运行。

 

配置 Systemd 服务

首先停止SonarQube服务,因为我们开始使用上述步骤手动导航到SonarQube安装路径

cd /opt/sonarqube/bin/linux-x86-64/

运行脚本以关闭 SonarQube

./sonar.sh stop

为 SonarQube 创建一个 systemd 服务文件,以作为系统启动运行。

sudo vim /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=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target

保存并关闭该文件。现在停止sonar脚本,我们之前开始使用守护程序运行。通过运行以下命令启动 Sonarqube 守护程序

sudo systemctl start sonar

启用 SonarQube 服务以在启动时自动启动系统。

sudo systemctl enable sonar

检查sonar服务是否正在运行,

sudo systemctl status sonar

访问ip:9000

posted @ 2022-07-22 08:37  是谁用了我的昵称  阅读(394)  评论(0)    收藏  举报