如何將SonarQube代碼質(zhì)量分析工具安裝到Ubuntu Server 20.04上?
譯文【51CTO.com快譯】如果您是云原生開(kāi)發(fā)人員(或任何其他開(kāi)發(fā)人員),可能需要一款工具來(lái)分析代碼,幫助查找安全問(wèn)題、缺陷、漏洞、異常和一般問(wèn)題。如果您只從事一個(gè)小項(xiàng)目,可以通過(guò)老式的手動(dòng)方法來(lái)解決。如果您經(jīng)常為CI/CD之類(lèi)的項(xiàng)目編寫(xiě)代碼,工作量決定了您可能無(wú)法手動(dòng)檢查。這時(shí)如何是好?
您總是可以安裝SonarQube之類(lèi)的工具。這個(gè)基于Web的軟件擅長(zhǎng)使開(kāi)發(fā)人員能夠編寫(xiě)更干凈更安全的代碼。如果您恰好擁有本地Linux服務(wù)器或者AWS、谷歌云或Azure之類(lèi)的云帳戶(hù),可以免費(fèi)部署SonarQube社區(qū)版。該版本有以下功能:
- 為15種廣泛使用的語(yǔ)言支持靜態(tài)代碼分析
 - 缺陷和漏洞檢測(cè)
 - 代碼中的安全熱點(diǎn)審查
 - 代碼異常跟蹤
 - 技術(shù)債務(wù)解決
 - 代碼質(zhì)量度量指標(biāo)和歷史記錄
 - CI/CD集成
 - 可擴(kuò)展,有50多個(gè)社區(qū)插件
 - 您還可以從版本矩陣中查看SonarQube收費(fèi)版本的功能
 
下面介紹在Ubuntu Server 20.04上安裝并運(yùn)行SonarQube社區(qū)版的過(guò)程。
您需要什么?
- Ubuntu Server 20.04的運(yùn)行實(shí)例
 - 擁有sudo特權(quán)的用戶(hù)
 
如何修改內(nèi)核系統(tǒng)限制?
我們要做的頭件事是對(duì)幾個(gè)內(nèi)核系統(tǒng)限制進(jìn)行一番修改。使用以下命令打開(kāi)sysctl.conf文件進(jìn)行編輯:
- sudo nano /etc/sysctl.conf
 
將以下幾行添加到該文件的末尾:
- vm.max_map_count=262144
 - fs.file-max=65536
 - ulimit -n 65536
 - ulimit -u 4096
 
保存并關(guān)閉文件。
下一步,我們將編輯limits.conf。用以下命令打開(kāi)該文件:
- sudo nano /etc/security/limits.conf
 
在該文件末尾,添加以下內(nèi)容:
- sonarqube - nofile 65536
 - sonarqube - nproc 4096
 
保存并關(guān)閉文件。
重啟系統(tǒng),以便變更生效。
如何安裝OpenJDK 11?
我們現(xiàn)在將安裝OpenJDK依賴(lài)項(xiàng)。用以下命令來(lái)安裝:
sudo apt-get install openjdk-11-jdk -y
如何安裝和配置PostgreSQL?
針對(duì)SonarQube的數(shù)據(jù)庫(kù)部分,我們將使用PostgreSQL(已棄用了支持MySQL的功能)。由于標(biāo)準(zhǔn)存儲(chǔ)庫(kù)中沒(méi)有PostgreSQL,我們必須添加它。
用以下命令下載并安裝GPG密鑰:
- wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
 
用以下命令創(chuàng)建新的apt存儲(chǔ)庫(kù):
- 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
 
用以下命令啟動(dòng)并啟用數(shù)據(jù)庫(kù)服務(wù):
- sudo systemctl enable postgresql
 - sudo systemctl start postgresql
 
用以下命令設(shè)置PostgreSQL密碼:
- sudo passwd postgres
 
會(huì)提示您輸入并核實(shí)數(shù)據(jù)庫(kù)管理員用戶(hù)的新密碼。
用以下命令切換到postgres用戶(hù):
- su - postgres
 
用以下命令為SonarQube數(shù)據(jù)庫(kù)創(chuàng)建新用戶(hù):
- createuser sonar
 
用以下命令登錄到PostgreSQL控制臺(tái):
- psql
 
用以下命令為新的sonar用戶(hù)設(shè)置密碼:
- ALTER USER sonar WITH ENCRYPTED PASSWORD 'password';
 
密碼是不重復(fù)的強(qiáng)密碼。
用以下命令創(chuàng)建新的sonarqube數(shù)據(jù)庫(kù):
- CREATE DATABASE sonarqube OWNER sonar;
 
用以下命令為數(shù)據(jù)庫(kù)授予必要的權(quán)限:
- GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;
 
用以下命令退出PostgreSQL控制臺(tái):
- \q
 
用以下命令退出postgres用戶(hù):
- exit
 
用以下命令啟用PostgreSQL服務(wù):
- sudo systemctl enable postgresql
 
如何下載并解壓SonarQube?
處理好數(shù)據(jù)庫(kù)后,我們現(xiàn)在可以下載并解壓SonarQube。最新版是8.5.1.3814。您應(yīng)該檢查下載鏈接(https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.5.1.38104.zip),確保下載的是最新版。
想下載SonarQube,執(zhí)行該命令:
- wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.5.1.38104.zip
 
用以下命令解壓該文件:
- unzip sonarqube*.zip
 
如果您發(fā)現(xiàn)沒(méi)有unzip命令,用以下命令安裝它:
- sudo apt-get install zip -y
 
用以下命令移動(dòng)并重命名剛創(chuàng)建的目錄:
- sudo mv sonarqube-8.5.1.38104 /opt/sonarqube
 
如果您下載的版本不是8.5.1.38104,確保用上述命令更改該版本號(hào)。
如何創(chuàng)建新的SonarQube組和用戶(hù)?
現(xiàn)在我們需要為SonarQube創(chuàng)建新的組和用戶(hù)。用以下命令創(chuàng)建一個(gè)組:
- sudo groupadd sonar
 
下一步,用以下命令創(chuàng)建用戶(hù),并添加到組(并將其主目錄設(shè)成/opt/sonarqube目錄):
- sudo useradd -c "SonarQube - User" -d /opt/sonarqube/ -g sonar sonar
 
用以下命令更改/opt/sonarqube目錄的所有權(quán):
- sudo chown -R sonar:sonar /opt/sonarqube/
 
如何配置SonarQube?
下一步是配置SonarQube。用以下命令打開(kāi)配置文件來(lái)編輯:
- 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用戶(hù)創(chuàng)建的密碼。
還應(yīng)該編輯下列行,確保它們體現(xiàn)了您在下面看到的內(nèi)容:
- 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用戶(hù)設(shè)置的密碼。
保存并關(guān)閉文件。
如何創(chuàng)建systemd文件并啟動(dòng)服務(wù)?
現(xiàn)在不妨創(chuàng)建systemd文件,以便可以控制SonarQube服務(wù)。用以下命令創(chuàng)建文件:
- sudo nano /etc/systemd/system/sonarqube.service
 
在該文件中,粘貼以下內(nèi)容:
- [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
 
保存并關(guān)閉文件。
用以下命令啟用并啟動(dòng)服務(wù):
- systemctl enable sonarqube
 - systemctl start sonarqube
 
如何安裝和配置NGINX?
我們將使用NGINX作為SonarQube的反向代理。想安裝NGINX,執(zhí)行該命令:
- sudo apt-get install nginx -y
 
用以下命令啟動(dòng)并啟用NGINX服務(wù):
- sudo systemctl enable nginx
 - sudo systemctl start nginx
 
用以下命令創(chuàng)建新的NGINX配置文件:
- sudo nano /etc/nginx/sites-enabled/sonarqube.conf
 
在該文件中,粘貼以下內(nèi)容:
- 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;
 - }
 - }
 
保存并關(guān)閉文件。
用以下命令重啟NGINX:
- sudo systemctl restart nginx
 
如何訪問(wèn)SonarQube?
SonarQube現(xiàn)已安裝,打開(kāi)瀏覽器,指向http://SERVER_IP:9000(SERVER_IP是您服務(wù)器的IP地址)。您會(huì)看到歡迎頁(yè)面(圖A)。
圖A:SonarQube歡迎頁(yè)面還充當(dāng)儀表板
點(diǎn)擊“登錄”,使用登錄信息admin/admin。一旦登錄進(jìn)去,您會(huì)看到SonarQube主頁(yè)面,您可以在這里開(kāi)始上傳有待分析的代碼(圖B)。
圖B:SonarQube主頁(yè)面已準(zhǔn)備就緒
恭喜您有了一款功能強(qiáng)大的工具,可幫助編寫(xiě)沒(méi)有問(wèn)題的干凈代碼。經(jīng)常且明智地使用它。
原文標(biāo)題:How to install the SonarQube code quality analyzer on Ubuntu Server 20.04,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

















 
 
 









 
 
 
 