在Ubuntu 20.04上安裝SonarQube
在本教程中,您將學習如何在Ubuntu 20.04上安裝SonarQube。 聲納®是一種自動代碼審查工具,可檢測代碼中的錯誤,漏洞和代碼味道。它可以與您現有的工作流程集成,以實現跨項目分支和提取請求的連續代碼檢查。
閱讀更多關於SonarQube的信息 SonarQube頁面。
在Ubuntu 20.04上安裝SonarQube
先決條件
如下所述,在Ubuntu 20.04上安裝和運行SonarQube需要滿足許多先決條件。
系統硬件要求
- 確保您正在運行64位系統,因為SonarQube不支持32位系統體系結構。
uname -m
x86_64
- 至少2GB的RAM(用於企業用途的16GB + RAM)和2個vCPU內核(用於企業用途的8+ vCPU內核)用於小規模使用
- 具有出色讀寫性能的磁盤。
- 足夠的磁盤空間取決於您使用SonarQube分析的代碼量。
在Ubuntu 20.04上安裝Java 11
Java 11可以同時用於SonarQube服務器和掃描儀。因此,運行以下命令以在Ubuntu 20.04上安裝Java 11(您可以選擇安裝JRE或OpenJDK;請選擇安裝JRE或OpenJDK。
請注意,默認的Ubuntu 20.04主存儲庫上的默認版本是OpenJDK 11或JRE 11。
apt update
如果要使用JRE,請運行以下命令以將其安裝在Ubuntu 20.04上;否則,請執行以下步驟。
apt install default-jre
如果要使用OpenJDK,請運行以下命令;
apt install default-jdk
SonarQube的安裝和設置數據庫
SonarQube支持PostgreSQL(9.3-9.6、10-12版),Oracle(XE擴展,11G,12C,18C 19C)或Windows系統的MSSQL。
在本教程中,我們將在Ubuntu 20.04上安裝和設置SonarQube。
ubuntu“>在Ubuntu 20.04上安裝PostgreSQL 12
通過運行以下命令在Ubuntu 20.04上安裝PostgreSQL 12;
apt install postgresql postgresql-contrib
以PostgreSQL超級用戶身份登錄並創建SonarQube PostgreSQL數據庫和數據庫用戶
sudo -Hiu postgres
createuser sonaradmin
createdb -O sonaradmin sonarqubedb
psql
ALTER USER sonaradmin WITH ENCRYPTED password 'changeme';
q
exit
激活安全計算過濾器
seccomp過濾器缺省情況下,Elasticsearch所需的,通常在Ubuntu 20.04上默認啟用。要檢查seccomp是否在您的內核上可用,請執行以下操作:
grep SECCOMP /boot/config-$(uname -r)
如果看到這樣的輸出,則表示啟用了seccomp過濾器;
CONFIG_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y
執行報告字體
生成SonarQube執行報告需要Fontconfig和FreeType字體。如下安裝它們;
apt install fontconfig-config libfreetype6
在Ubuntu 20.04上安裝和配置SonarQube
滿足所有先決條件後,請繼續在Ubuntu 20.04上安裝SonarQube。
下載SonarQube存檔文件
SonarQube有不同版本。在此設置中,我們將安裝社區版本。因此,導航至 SonarQube下載 頁面並獲取SonarQube zip文件。
您也可以從下載鏈接 SonarQube二進制頁面 並使用wget或curl命令將其拉出
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip
在Ubuntu 20.04上安裝SonarQube
將SonarQube提取到某個目錄,例如 /opt
目錄。
apt install zip
unzip sonarqube-8.7.0.41497.zip -d /opt/
重命名SonarQube目錄以刪除版本號;
mv /opt/sonarqube{-8.7.0.41497,}
創建SonarQube系統用戶帳戶
SonarQube不應以root用戶身份運行。因此,您可以創建一個非管理員帳戶來運行SonarQube,如下所示;
useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
設置的所有權 /opt/sonarqube
上面創建的聲納用戶。
chown -R sonarqube: /opt/sonarqube
配置SonarQube
根據上面的PostgreSQL設置來設置數據庫連接詳細信息。
vim /opt/sonarqube/conf/sonar.properties
# DATABASE ... # User credentials. ... sonar.jdbc.username=sonaradmin sonar.jdbc.password=changeme ... #----- PostgreSQL 9.3 or greater # By default the schema named "public" is used. It can be overridden with the parameter "currentSchema". #sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
保存並退出文件。
以上更改足以在其基本設置中的Ubuntu 20.04上運行SonarQube。
在Ubuntu 20.04上運行SonarQube
您可以使用以下命令以獨立模式啟動SonarQube /opt/sonarqube/bin/linux-x86-64/sonar.sh
通過傳遞腳本 start
選項如 /opt/sonarqube/bin/linux-x86-64/sonar.sh start
,最好使用systemd服務單元。
創建SonarQube Systemd服務單元文件;
cat > /etc/systemd/system/sonarqube.service << 'EOL' [Unit] Description=SonarQube service After=syslog.target network.target [Service] Type=simple User=sonarqube Group=sonarqube PermissionsStartOnly=true ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar StandardOutput=syslog LimitNOFILE=131072 LimitNPROC=8192 TimeoutStartSec=5 Restart=always SuccessExitStatus=143 [Install] WantedBy=multi-user.target EOL
請務必更換路徑, /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar
, 因此。
重新加載系統配置;
systemctl daemon-reload
設置彈性搜索的最大內存映射數;
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
sysctl -p
在Ubuntu 20.04上啟動並啟用SonarQube服務;
systemctl enable --now sonarqube
檢查狀態;
systemctl status sonarqube.service
● sonarqube.service - SonarQube service
Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-02-16 19:36:45 UTC; 2min 23s ago
Main PID: 34811 (java)
Tasks: 118 (limit: 2282)
Memory: 1.4G
CGroup: /system.slice/sonarqube.service
├─34811 java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar
├─34834 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io>
├─34921 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -XX:-OmitStackTraceInF>
└─34980 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -XX:-OmitStackTraceInF>
Feb 16 19:36:47 ubuntu20 nohup[34811]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future rel>
Feb 16 19:37:27 ubuntu20 nohup[34811]: 2021.02.16 19:37:27 INFO app[][o.s.a.SchedulerImpl] Process[es] is up
Feb 16 19:37:27 ubuntu20 nohup[34811]: 2021.02.16 19:37:27 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/opt>
Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] ###########################################################################################>
Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] Default Administrator credentials are still being used. Make sure to change the password or>
Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] ###########################################################################################>
Feb 16 19:37:48 ubuntu20 nohup[34811]: 2021.02.16 19:37:48 INFO app[][o.s.a.SchedulerImpl] Process[web] is up
Feb 16 19:37:48 ubuntu20 nohup[34811]: 2021.02.16 19:37:48 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/opt/s>
Feb 16 19:37:55 ubuntu20 nohup[34811]: 2021.02.16 19:37:55 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
Feb 16 19:37:55 ubuntu20 nohup[34811]: 2021.02.16 19:37:55 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
您可以在下面找到所有日誌, /opt/sonarqube/logs
目錄。
ls /opt/sonarqube/logs
access.log ce.log es.log README.txt sonar.log web.log
訪問SonarQube Web界面
為了訪問SonarQube Web界面,您需要安裝和設置Web服務器以將請求代理到本地運行的SonarQube。
您可以使用Apache或Nginx Web服務器。我們在本指南的後面部分中使用。
apt install nginx -y
使用代理設置創建SonarQube Nginx站點配置。
cat > /etc/nginx/sites-available/sonarqube << 'EOL' server{ listen 80; server_name sonarqube.kifarunix-demo.com; access_log /var/log/nginx/sonarqube.access.log; error_log /var/log/nginx/sonarqube.error.log; proxy_buffers 16 64k; proxy_buffer_size 128k; location / { proxy_pass http://127.0.0.1:9000; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto http; } } EOL
檢查Nginx語法錯誤;
nginx -t
如果得到這樣的輸出,那就很好了。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
啟用SonarQube Nginx網站;
ln -s /etc/nginx/sites-available/sonarqube /etc/nginx/sites-enabled/
重啟Nginx;
systemctl restart nginx
根據您的設置,打開防火牆上的端口80 / tcp或端口443 / tcp;
ufw allow "Nginx Full"
使用地址訪問SonarQube http://sonarqube-server-host-IP-or-hostname
。
系統將提示您輸入登錄詳細信息。
默認身份驗證憑據為 用戶名: 行政 密碼: 行政
出現提示時,重置密碼並進入SonarQube Web界面。
然後你去。您已經了解了如何在Ubuntu 20.04上安裝SonarQube。
參考
進一步閱讀
其他教程
在Ubuntu 20.04上安裝Nexus Repository Manager
在Debian 10上安裝和設置GVM 20.08
在Ubuntu 20.04上安裝Signal Messenger
在Ubuntu 20.04上安裝NoMachine
在Ubuntu 20.04上安裝和設置GVM 20.08
。