欢迎访问Sonar Source中文网站!
语言选择: ∷ 

SonarQube中操作服务器

发布时间:2023-08-17浏览次数:105

在 Windows 上将 SonarQube 作为服务运行

安装或卸载 SonarQube 作为服务

> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat install> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat uninstall

启动或停止服务

> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat start

默认情况下,该服务将使用 Windows PATH 上可用的 Java 可执行文件。可以通过设置环境变量来更改此设置SONAR_JAVA_PATH

> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat stop

> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat stop 执行正常关闭,其中无法启动新的分析报告处理,但允许完成正在进行的任务。停止所需的时间取决于正在进行的任务的处理时间。您需要手动终止所有 SonarQube 进程才能强制停止。

服务状态

检查 SonarQube 服务是否正在运行:

> %SONARQUBE_HOME%\bin\windows-x86-64\SonarService.bat status

在 Linux 上手动运行 SonarQube

启动或停止实例

Start:$SONARQUBE_HOME/bin/linux-x86-64/sonar.sh startGraceful shutdown:$SONARQUBE_HOME/bin/linux-x86-64/sonar.sh stopHard stop:$SONARQUBE_HOME/bin/linux-x86-64/sonar.sh force-stop

Stop 会正常关闭,此时不会启动新的分析报告处理,但允许完成正在进行的任务。停止所需的时间取决于正在进行的任务的处理时间。使用强制停止进行硬停止。

使用 SystemD 在 Linux 上将 SonarQube 作为服务运行

在使用 SystemD 的 Unix 系统上,您可以将 SonarQube 安装为服务。您无法在 Unix 系统中以 root 身份运行 SonarQube。理想情况下,您将创建一个专用于运行 SonarQube 的新帐户。我们假设:

  • 用于启动服务的用户是 sonarqube

  • 用于启动服务的组是 sonarqube

  • Java虚拟机安装在 /opt/java/

  • SonarQube 已解压成 /opt/sonarqube/

/etc/systemd/system/sonarqube.service 然后根据 以下内容创建文件 :

[Unit]Description=SonarQube serviceAfter=syslog.target network.tarGET@[Service]Type=simpleUser=sonarqubeGroup=sonarqubePermissionsStartOnly=trueExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.5.jarStandardOutput=syslogLimitNOFILE=131072LimitNPROC=8192TimeoutStartSec=5Restart=alwaysSuccessExitStatus=143[Install]WantedBy=multi-user.target
  • 由于声纳应用程序 jar 名称以 SonarQube 版本结尾,因此您需要 ExecStart 在安装和每次升级时相应地调整命令。

  • 所有 SonarQube 目录均应归 sonarqube 用户所有。

sonarqube.service 创建文件并正确配置后 ,运行:

sudo systemctl enable sonarqube.servicesudo systemctl start sonarqube.service

使用 initd 在 Linux 上将 SonarQube 作为服务运行

以下已在Ubuntu 20.04和CentOS 6.2上进行测试。

root您无法像在 'nix 系统中那样运行 SonarQube 。理想情况下,您将创建一个专用于运行 SonarQube 的新帐户。假设用于启动服务的用户是sonarqube/etc/init.d/sonar 然后根据以下内容创建文件:

#!/bin/sh## rc file for SonarQube## chkconfig: 345 96 10# description: SonarQube system (www.sonarsource.org)#### BEGIN INIT INFO# Provides: sonar# Required-Start: $network# Required-Stop: $network# Default-Start: 3 4 5# Default-Stop: 0 1 2 6# Short-Description: SonarQube system (www.sonarsource.org)# Description: SonarQube system (www.sonarsource.org)### END INIT INFO
 su sonarqube -c "/usr/bin/sonar $*"

在启动时注册 SonarQube(RedHat、CentOS、64 位):

sudo ln -s $SONARQUBE_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonarsudo chmod 755 /etc/init.d/sonarsudo chkconfig --add sonar

在启动时注册 SonarQube(Ubuntu,64 位):

sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonarsudo chmod 755 /etc/init.d/sonarsudo update-rc.d sonar defaults

注册完成后,运行:

sudo service sonar start

保护代理后面的服务器

如果您想在代理后面运行 SonarQube 服务器,本节将帮助您配置它。这样做可以是出于安全考虑或整合多个不同的应用程序。要通过 HTTPS 运行 SonarQube 服务器,请参阅下面的 HTTPS 配置部分。

出于安全原因,我们建议仅授予对主端口的外部访问权限。

使用 Apache 代理

我们假设您已经安装了带有模块 mod_proxy 的 Apache 2,SonarQube 正在运行并且可以在 上使用 http://private_sonar_host:sonar_port/,并且您想要为 配置虚拟主机 www.public_sonar.com

此时,编辑 www.public_sonar.com 虚拟主机的 HTTPd 配置文件。包括以下内容以通过 mod_proxy 以下位置 公开 SonarQube:http://www.public_sonar.com/

ProxyRequests OffProxyPreserveHost On<VirtualHost *:80>
  ServerName www.public_sonar.com
  ServerAdmin admin@somecompany.com
  ProxyPass / http://private_sonar_host:sonar_port/
  ProxyPassReverse / http://www.public_sonar.com/
  ErrorLog logs/somecompany/sonar/error.log
  CustomLog logs/somecompany/sonar/access.log common</VirtualHost>

Apache 配置将根据您自己的应用程序的要求以及您打算向外界公开 SonarQube 的方式而有所不同。如果您需要有关 Apache HTTPd 和 mod_proxy 的更多详细信息,请参阅 https://httpd.apache.org

使用 Nginx

我们假设您已经安装了 Nginx,您正在使用虚拟主机,并且www.somecompany.comSonarQube 正在运行并且可以在 上使用 http://sonarhost:sonarport/

此时,编辑Nginx配置文件。包括以下内容以在 处公开 SonarQube  http://www.somecompany.com/

# the server directive is Nginx's virtual host directiveserver {
  # port to listen on. Can also be set to an IP:PORT
  listen 80;
  # sets the domain[s] that this vhost server requests for
  server_name www.somecompany.com;
  location / {
    proxy_pass http://sonarhost:sonarport;
  }}

Nginx 配置将根据您自己的应用程序的要求以及您打算向外界公开 SonarQube 的方式而有所不同。如果您需要有关 Nginx 的更多详细信息,请参阅 https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

请注意,您可能需要增加最大 URL 长度,因为 SonarQube 请求的 URL 可能超过 2048。

在 Windows 上使用 IIS

使用 Windows 上的 IIS,您可以创建一个充当反向代理的网站并通过 SSL 访问您的 SonarQube 实例。

此处描述的设置不适用于通过 IIS 的 SAML。 

如需 IIS 和 SAML 身份验证方面的帮助,请查看 此社区指南 以了解其他步骤。

先决条件

  • 已启用 Internet 信息服务 (IIS)。在以下示例中,在与 SonarQube 实例相同的计算机上启用 IIS。

  • IIS 的 URL 重写扩展 

  • IIS 的基于应用程序的路由扩展 

  • 自签名 SSL 证书或真实证书

要确保扩展已启用,请在安装后重新启动 IIS 管理器。

创建 IIS 网站

  1. 在 IIS 管理器中,选择 您的计算机 > 站点 > 添加网站...

  2. 在 “网站名称”下,输入您网站的名称。

  3. 在 内容目录 > 物理路径下,选择网站文件夹的物理路径。基于默认的IIS网站,我们建议创建一个 %SystemDrive%\inetpub\wwwroot_sonarqube 文件夹并将其用作物理路径。

  4. 在 “绑定”中,选择 “类型”  >  “https”

  5. 在SSL 证书下 ,选择 SSL 证书。

  6. 单击 “确定”

使用您的 IIS 网站作为反向代理

使用 IIS 管理器创建网站后,您可以使用 URL 重写扩展将该网站用作反向代理。

  1. 从 IIS 管理器主页中,选择您的网站并打开 URL 重写

  2. 单击 “添加规则” 以创建新规则。

  3.  从模板列表中选择 反向代理。

  4. 输入目标服务器 URL。它可以是 http://localhost:9000 远程服务器。

  5. 单击 “确定” 创建规则。

URL 重写页面现在显示反向代理入站规则。

添加 X_FORWARDED_PROTO 服务器变量

使用 URL 重写模块,您可以创建一个服务器变量来处理 X-Forwarded-Proto 标头并将其传递给 SonarQube。有关该服务器变量的更多信息,请参阅本页上的 HTTPS 配置部分。

从 URL 重写页面:

  1. 单击 查看服务器变量这将打开 “允许的服务器变量” 页面。

  2. 要添加服务器变量,请单击 “添加...”, X_FORWARDED_PROTO 在字段中输入内容并单击 “确定”服务器变量现在显示在 “允许的服务器变量” 页面上。

  3. 单击 返回规则 以转至 URL 重写规则列表。

  4. 选择您网站的反向代理入站规则。在 “入站规则”下,单击 “编辑”

  5. 展开  规则定义的服务器变量部分。

  6. 添加 X_FORWARDED_PROTO 服务器变量并为其指定值 https

  7. 应用更改。

现在可以通过 SSL 访问 SonarQube。

检查连接是否已启用

当您的 SonarQube 实例和 IIS 网站运行时,打开 IIS 管理器并单击您的网站 > 浏览网站 > 浏览下的链接 ,或在浏览器中输入网站的 URL。您应该会看到 SonarQube 实例的登录页面或主页。

下一步

您可以将 SonarQube 实例配置为仅接受来自反向代理的流量,方法是将以下行添加到文件中 sonar.properties :

sonar.web.host=127.0.0.1

另一种选择是使用 Windows 防火墙仅接受来自本地主机的流量。

资源

此处描述的设置受到此 博客文章为 Windows 上的 SonarQube 配置 SSL 的启发 。

HTTPS配置

# the server directive is Nginx's virtual host directiveserver { 
 # port to listen on. Can also be set to an IP:PORT 
 listen 443 ssl;
 ssl_certificate ${path_to_your_certificate_file}
 ssl_certificate_key ${path_to_your_certificate_key_file}
 location / {
   proxy_pass ${address_of_your_sonarqube_instance_behind_proxy}
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header X-Forwarded-Proto https;
 }}

转发 SonarQube 自定义标头

SonarQube 添加自定义 HTTP 标头。反向代理应配置为转发以下标头:

  • SonarQube-Authentication-Token-Expiration
    使用令牌进行身份验证 时,此标头会添加到 Web 服务响应中  。SonarQube 功能不需要转发此标头即可正常工作。

  • Sonar-MD5
    该标头用于验证扫描仪下载的插件的完整性。您必须转发此标头才能成功执行使用插件的分析。

保护您的网络

要进一步锁定反向代理和 SonarQube 之间的通信,您可以定义以下网络规则:

协议


来源目的地港口默认
传输控制协议反向代理声纳Qubesonar.web.port9000
传输控制协议声纳Qube声纳Qubesonar.search.port9001
传输控制协议声纳Qube声纳Qubesonar.es.port随机的

如果您指定前端网络并将 Elasticsearch 限制为环回 NiC,则可以进一步分段网络配置。

网络范围描述默认
前端sonar.web.host前端 HTTP 网络0.0.0.0
弹性搜索sonar.search.host弹性搜索网络127.0.0.1


微信扫码微信扫码 关注我们

  • 24小时咨询热线180-210-69380

  • 移动电话180-210-69380

Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图