如何將SonarQube代碼質量分析工具安裝到Ubuntu Server 20.04上?

2020-12-12 51CTO

如果您是雲原生開發人員(或任何其他開發人員),可能需要一款工具來分析代碼,幫助查找安全問題、缺陷、漏洞、異常和一般問題。如果您只從事一個小項目,可以通過老式的手動方法來解決。如果您經常為CI/CD之類的項目編寫代碼,工作量決定了您可能無法手動檢查。這時如何是好?

您總是可以安裝SonarQube之類的工具。這個基於Web的軟體擅長使開發人員能夠編寫更乾淨更安全的代碼。如果您恰好擁有本地Linux伺服器或者AWS、谷歌雲或Azure之類的雲帳戶,可以免費部署SonarQube社區版。該版本有以下功能:

為15種廣泛使用的語言支持靜態代碼分析

缺陷和漏洞檢測代碼中的安全熱點審查代碼異常跟蹤技術債務解決代碼質量度量指標和歷史記錄CI/CD集成可擴展,有50多個社區插件您還可以從版本矩陣中查看SonarQube收費版本的功能下面介紹在Ubuntu Server 20.04上安裝並運行SonarQube社區版的過程。

您需要什麼?

Ubuntu Server 20.04的運行實例擁有sudo特權的用戶如何修改內核系統限制?

我們要做的頭件事是對幾個內核系統限制進行一番修改。使用以下命令打開sysctl.conf文件進行編輯:

sudo nano /etc/sysctl.conf

將以下幾行添加到該文件的末尾:

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

保存並關閉文件。

下一步,我們將編輯limits.conf。用以下命令打開該文件:

sudo nano /etc/security/limits.conf

在該文件末尾,添加以下內容:

sonarqube - nofile 65536 sonarqube - nproc 4096

保存並關閉文件。

重啟系統,以便變更生效。

如何安裝OpenJDK 11?

我們現在將安裝OpenJDK依賴項。用以下命令來安裝:

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

如何安裝和配置PostgreSQL?

針對SonarQube的資料庫部分,我們將使用PostgreSQL(已棄用了支持MySQL的功能)。由於標準存儲庫中沒有PostgreSQL,我們必須添加它。

用以下命令下載並安裝GPG密鑰:

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

用以下命令創建新的apt存儲庫:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

用以下命令安裝PostgreSQL:

sudo apt install postgresql postgresql-contrib -y

用以下命令啟動並啟用資料庫服務:

sudo systemctl enable postgresql sudo systemctl start postgresql

用以下命令設置PostgreSQL密碼:

sudo passwd postgres

會提示您輸入並核實資料庫管理員用戶的新密碼。

用以下命令切換到postgres用戶:

su - postgres

用以下命令為SonarQube資料庫創建新用戶:

createuser sonar

用以下命令登錄到PostgreSQL控制臺:

psql

用以下命令為新的sonar用戶設置密碼:

ALTER USER sonar WITH ENCRYPTED PASSWORD 'password';

密碼是不重複的強密碼。

用以下命令創建新的sonarqube資料庫:

CREATE DATABASE sonarqube OWNER sonar;

用以下命令為資料庫授予必要的權限:

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

用以下命令退出PostgreSQL控制臺:

\q

用以下命令退出postgres用戶:

exit

用以下命令啟用PostgreSQL服務:

sudo systemctl enable postgresql

如何下載並解壓SonarQube?

處理好資料庫後,我們現在可以下載並解壓SonarQube。最新版是8.5.1.3814。您應該檢查下載連結,確保下載的是最新版。

想下載SonarQube,執行該命令:

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.5.1.38104.zip

用以下命令解壓該文件:

unzip sonarqube*.zip

如果您發現沒有unzip命令,用以下命令安裝它:

sudo apt-get install zip -y

用以下命令移動並重命名剛創建的目錄:

sudo mv sonarqube-8.5.1.38104 /opt/sonarqube

如果您下載的版本不是8.5.1.38104,確保用上述命令更改該版本號。

如何創建新的SonarQube組和用戶?

現在我們需要為SonarQube創建新的組和用戶。用以下命令創建一個組:

sudo groupadd sonar

下一步,用以下命令創建用戶,並添加到組(並將其主目錄設成/opt/sonarqube目錄):

sudo useradd -c "SonarQube - User" -d /opt/sonarqube/ -g sonar sonar

用以下命令更改/opt/sonarqube目錄的所有權:

sudo chown -R sonar:sonar /opt/sonarqube/

如何配置SonarQube?

下一步是配置SonarQube。用以下命令打開配置文件來編輯:

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

在該文件中尋找下列行:

#sonar.jdbc.username= #sonar.jdbc.password= #sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube #sonar.search.javaOpts=-Xmx512m -Xms512m -XX:+HeapDumpOnOutOf

您需要從上面四行刪除#字符,並將第一行改成:

sonar.jdbc.username=sonar

更改密碼行,加入為sonar PostgreSQL用戶創建的密碼。

還應該編輯下列行,確保它們體現了您在下面看到的內容:

sonar.jdbc.username=sonar sonar.jdbc.password=PASSWORD sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube sonar.web.host=0.0.0.0 sonar.web.port=9000 sonar.web.javaAdditionalOpts=-server sonar.search.javaOpts=-Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError sonar.log.level=INFO sonar.path.logs=logs

其中PASSWORD是您為sonar PostgreSQL用戶設置的密碼。

保存並關閉文件。

如何創建systemd文件並啟動服務?

現在不妨創建systemd文件,以便可以控制SonarQube服務。用以下命令創建文件:

sudo nano /etc/systemd/system/sonarqube.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

保存並關閉文件。

用以下命令啟用並啟動服務:

systemctl enable sonarqube systemctl start sonarqube

如何安裝和配置NGINX?

我們將使用NGINX作為SonarQube的反向代理。想安裝NGINX,執行該命令:

sudo apt-get install nginx -y

用以下命令啟動並啟用NGINX服務:

sudo systemctl enable nginx sudo systemctl start nginx

用以下命令創建新的NGINX配置文件:

sudo nano /etc/nginx/sites-enabled/sonarqube.conf

在該文件中,粘貼以下內容:

server{ listen 80; server_name sonarqube.da.com; access_log /var/log/nginx/sonar.access.log; error_log /var/log/nginx/sonar.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; } }

保存並關閉文件。

用以下命令重啟NGINX:

sudo systemctl restart nginx

如何訪問SonarQube?

SonarQube現已安裝,打開瀏覽器,指向http://SERVER_IP:9000(SERVER_IP是您伺服器的IP位址)。您會看到歡迎頁面(圖A)。

圖A:SonarQube歡迎頁面還充當儀錶板

點擊「登錄」,使用登錄信息admin/admin。一旦登錄進去,您會看到SonarQube主頁面,您可以在這裡開始上傳有待分析的代碼(圖B)。

圖B:SonarQube主頁面已準備就緒

恭喜您有了一款功能強大的工具,可幫助編寫沒有問題的乾淨代碼。經常且明智地使用它。

相關焦點

  • 如何在虛擬機上的ubuntu20.04安裝eclipse
    工具VMware WorkstationUbuntu20.04技術網絡在虛擬機上安裝好Ubuntu20.04,就直接在官網上下載解壓版的eclipse;而官網上也有在線安裝的eclipse。那麼,如何在線安裝eclipse?具體操作如下:操作步驟:1、在官網上下載安裝版本的eclipse-inst-linux64.tar.gz,然後複製到Ubuntu系統上
  • Ubuntu 20.04 LTS發布及安裝教程
    Ubuntu 20.04是 Ubuntu 的第 8 個 LTS 版本, 代號為"Focal Fossa",此次版本將會獲得 5 年的技術支持,直至2025年4月,本次長期支持版本包含了諸多增強的安全特性,包括可防止低層攻擊和包括可防止 rootkit 和低級攻擊的安全啟動。
  • 開源之系統:Ubuntu20.04下誤刪nvidia驅動後安裝顯卡驅動和CUDA
    之前自己的Ubuntu20.04作業系統電腦裡有驅動的。而且在軟體和驅動更新的附加驅動裡的列表裡都能找到。不過由於3D建模軟體裡一個渲染問題,讓自己納悶,在想是不是驅動版本問題,於是從nvidia官網下載了一個驅動安裝,還提示錯誤。
  • 如何在Ubuntu 18.04上安裝和配置Redis
    這就是在本教程中,我們將向您展示如何在Ubuntu 18.04上安裝Redis。為什麼要使用Redis?如上所述,Redis的性能和卓越功能使其比傳統資料庫更好。Redis中的計數器將保持一致  發布和訂閱–用戶可以使用「發布/訂閱」範式輕鬆分發數據如何在Ubuntu上安裝Redis?Redis存在於Ubuntu的官方軟體包存儲庫中。
  • Ubuntu20.04桌面版圖文安裝(超詳細)
    01Ubuntu20.04桌面版圖文安裝02準備工具VMWare Workstation15 Pro;ubuntu-20.04-desktop-amd64.iso;ISO鏡像文件(在「準備工作」章節所提及的Ubuntu20.04系統ISO鏡像);16)在(15)步驟中點擊「自定義硬體」選項後,在彈出的「硬體」配置框中,通過點選「新CD/DVD(SATA)」選項,可在右側的上下文菜單中指定所需使用的Ubuntu20.04 ISO鏡像文件;17)選擇好系統安裝所需的ISO鏡像後,返回至第
  • Ubuntu 20.04 切換至使用 Snap 版本的應用商店
    Ubuntu 開發團隊的郵件列表顯示,即將發布的 Ubuntu 20.04 將默認附帶 Snap 版本的應用商店。
  • Ubuntu 20.04 切換至使用 Snap 版本的應用商店 以代替常見apt/...
    Ubuntu開發團隊的郵件列表顯示,即將發布的Ubuntu 20.04將默認附帶Snap版本的應用商店。ubuntu-desktop和ubuntu-minimal meta-packages已被引入應用商店中,以代替常見的apt/repo版本。
  • Ubuntu-Base在iMX8MM平臺上的移植
    隨後我去串口終端登錄,用ifconfig看了看網連上沒有,再三確認獲取到了ip並且dns配置都沒問題之後,我ping了baidu.com,好的,網絡都是通的,那我就可以安裝我要的工具了吧。然而當我敲下apt update的時候,我還沒有意識到我面臨著多大的麻煩。
  • 如何在Ubuntu20.04安裝最新版本eclipse並創建Java項目
    1、打開Ubuntu20.04虛擬機,使用帳號和密碼登錄系統使用帳號和密碼登錄系統2、打開瀏覽器,搜索eclipse,進入官網,下載Linux-Ubuntu版本的eclipse,拷貝到虛擬機中拷貝eclipse到虛擬機3、在Ubuntu系統桌面上,滑鼠右鍵選擇創建終端,打開終端窗口
  • 雲安全日報201203:Ubuntu系統內核發現拒絕服務或執行任意代碼漏洞...
    它是一個開放原始碼的自由軟體,提供了一個健壯、功能豐富的計算環境,既適合家庭使用又適用於商業環境。Ubuntu為全球數百個公司提供商業支持。12月2日,Ubuntu發布了安全更新,修復了系統內核拒絕服務、執行任意代碼等重要漏洞。
  • Ubuntu 20.04 默認壁紙來了,這隻貓有「鐳射眼」
    Ubuntu 20.04 是 Ubuntu 的第 8 個 LTS 版本,計劃於今年 4 月 23 日發布。
  • 開源之系統:如何在Ubuntu20.04系統上安裝Java並配置環境變量
    當然我們要確認一下自己的Ubuntu系統電腦裡是否安裝了Java,而使用終端命令的代碼很簡單:Java -version。這個從字面意思上就可以看出來這是查詢Java的版本。如果安裝了Java,終端裡會顯示Java的版本。而如果沒有安裝Java,終端就會提示,Command 『java』 not found,but can be installed with:這樣的字樣。
  • Ubuntu 中安裝十字繡圖案軟體 KXStitch
    該軟體的特點:導入圖像多個牙線調色板多針類型模式庫讀取PCStitch文件靈活的列印選項如何在Ubuntu中安裝KXStitch 2.1.0:對於Ubuntu 16.04,Ubuntu 17.10,Ubuntu 18.04用戶,可以通過非官方的PPA輕鬆安裝。
  • 優麒麟 20.04.1 發布,多達 418 處更新!
    自優麒麟 20.04 LTS 發布後,官方匯總了論壇、微信、官網等平臺收到的反饋建議,並針對存在的問題進行及時修復,此前共發布 4 次系統更新,今日發布的 20.04.1 版本為第 1 個更新鏡像,包括 x86 版本和樹莓派版本。
  • Canonical 向 Plymouth 上遊貢獻改進,已用於 Ubuntu 20.04
    安裝 Ubuntu 20.04 系統的臺式機/筆記本在 UEFI 模式下啟動時,與舊版本最明顯的區別之一就是啟動界面的改進。過去一年來,Ubuntu 20.04 已擁有與 Fedora 和其他 Linux 發行版(如 Arch Linux)相似的的啟動體驗。
  • 代碼版本控制工具GitLab:從安裝到使用一步到位
    答:比如你的app要升級,v1、v2有兩份代碼 ,gitlab就可以分別存儲著兩份。 GitLab 是什麼? 如果聽說過 Git 或者 GitHub,那麼 GitLab 你一定也聽說過。
  • 開源之系統:Ubuntu20.04安裝中文字體文件
    之前介紹過一篇關於Ubuntu20.04系統下安裝Blender的文章,說是不要安裝2.82a版本,主要是不能用簡體中文。其實那個是不太準確的。表面上Blender2.82的確是不能選擇簡體中文,一選擇就是小方格空白。
  • 樹莓派 Ubuntu 64 位系統玩家體驗版
    前言我對於 Linux 裡的 Ubuntu 情有獨鍾,包括對樹莓派3也不放過,樹莓派3有一個64位的CPU,但一直使用的是32位的系統,太憋屈了,最近看見 barnami 大神移植了 Debian stretch arm64 到樹莓派上(項目地址 https://github.com/bamarni/pi64),不過,我想說的,還是 Ubuntu。
  • 乾貨|如何創建Facebook Pixel像素代碼
    什麼是FacebookPixel像素代碼FacebookPixel像素代碼是一種分析工具,設置FacebookPixel像素代碼後,當用戶在您的網站上執行操作時將觸發該Pixel像素代碼。執行的操作示例包括向購物車中添加商品或完成購買。
  • Ubuntu美化 - Flat Remix系列
    另外,也不知道大家喜不喜歡這個系列,反正我當初是因為一篇Ubuntu的美化教程入了Linux的坑,現在物理機是Ubuntu,滲透工具安裝也比Windows更方便,除了QQ、微信,完美!所以如果大家對這個感興趣,可以在結尾處點個讚,讓我看到一下,日後我會把Ubnutu優化和工具安裝都做一下,就這樣,不多bb,開始!