> %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
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 的 Unix 系统上,您可以将 SonarQube 安装为服务。您无法在 Unix 系统中以 root 身份运行 SonarQube。理想情况下,您将创建一个专用于运行 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
以下已在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 配置部分。
出于安全原因,我们建议仅授予对主端口的外部访问权限。
我们假设您已经安装了带有模块 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,您正在使用虚拟主机,并且www.somecompany.com
SonarQube 正在运行并且可以在 上使用 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,您可以创建一个充当反向代理的网站并通过 SSL 访问您的 SonarQube 实例。
此处描述的设置不适用于通过 IIS 的 SAML。
如需 IIS 和 SAML 身份验证方面的帮助,请查看 此社区指南 以了解其他步骤。
已启用 Internet 信息服务 (IIS)。在以下示例中,在与 SonarQube 实例相同的计算机上启用 IIS。
IIS 的 URL 重写扩展
IIS 的基于应用程序的路由扩展
自签名 SSL 证书或真实证书
要确保扩展已启用,请在安装后重新启动 IIS 管理器。
在 IIS 管理器中,选择 您的计算机 > 站点 > 添加网站...
在 “网站名称”下,输入您网站的名称。
在 内容目录 > 物理路径下,选择网站文件夹的物理路径。基于默认的IIS网站,我们建议创建一个 %SystemDrive%\inetpub\wwwroot_sonarqube
文件夹并将其用作物理路径。
在 “绑定”中,选择 “类型” > “https”。
在SSL 证书下 ,选择 SSL 证书。
单击 “确定”。
使用 IIS 管理器创建网站后,您可以使用 URL 重写扩展将该网站用作反向代理。
从 IIS 管理器主页中,选择您的网站并打开 URL 重写。
单击 “添加规则” 以创建新规则。
从模板列表中选择 反向代理。
输入目标服务器 URL。它可以是 http://localhost:9000
远程服务器。
单击 “确定” 创建规则。
URL 重写页面现在显示反向代理入站规则。
使用 URL 重写模块,您可以创建一个服务器变量来处理 X-Forwarded-Proto
标头并将其传递给 SonarQube。有关该服务器变量的更多信息,请参阅本页上的 HTTPS 配置部分。
从 URL 重写页面:
单击 查看服务器变量。这将打开 “允许的服务器变量” 页面。
要添加服务器变量,请单击 “添加...”, X_FORWARDED_PROTO
在字段中输入内容并单击 “确定”。服务器变量现在显示在 “允许的服务器变量” 页面上。
单击 返回规则 以转至 URL 重写规则列表。
选择您网站的反向代理入站规则。在 “入站规则”下,单击 “编辑”。
展开 规则定义的服务器变量部分。
添加 X_FORWARDED_PROTO
服务器变量并为其指定值 https。
应用更改。
现在可以通过 SSL 访问 SonarQube。
当您的 SonarQube 实例和 IIS 网站运行时,打开 IIS 管理器并单击您的网站 > 浏览网站 > 浏览下的链接 ,或在浏览器中输入网站的 URL。您应该会看到 SonarQube 实例的登录页面或主页。
您可以将 SonarQube 实例配置为仅接受来自反向代理的流量,方法是将以下行添加到文件中 sonar.properties
:
sonar.web.host=127.0.0.1
另一种选择是使用 Windows 防火墙仅接受来自本地主机的流量。
此处描述的设置受到此 博客文章为 Windows 上的 SonarQube 配置 SSL 的启发 。
# 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 添加自定义 HTTP 标头。反向代理应配置为转发以下标头:
SonarQube-Authentication-Token-Expiration
使用令牌进行身份验证 时,此标头会添加到 Web 服务响应中 。SonarQube 功能不需要转发此标头即可正常工作。
Sonar-MD5
该标头用于验证扫描仪下载的插件的完整性。您必须转发此标头才能成功执行使用插件的分析。
要进一步锁定反向代理和 SonarQube 之间的通信,您可以定义以下网络规则:
协议 | 来源 | 目的地 | 港口 | 默认 |
传输控制协议 | 反向代理 | 声纳Qube | sonar.web.port | 9000 |
传输控制协议 | 声纳Qube | 声纳Qube | sonar.search.port | 9001 |
传输控制协议 | 声纳Qube | 声纳Qube | sonar.es.port | 随机的 |
如果您指定前端网络并将 Elasticsearch 限制为环回 NiC,则可以进一步分段网络配置。
网络 | 范围 | 描述 | 默认 |
前端 | sonar.web.host | 前端 HTTP 网络 | 0.0.0.0 |
弹性搜索 | sonar.search.host | 弹性搜索网络 | 127.0.0.1 |
Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图