1 引言
本手冊以「將sonarqube6.7.5升級到7.9.1」爲例,日後的升級(包括遷移數據庫)操作可參考本手冊進行!
sonarqube軟件倉庫:https://binaries.sonarsource.com/Distribution/
2 調研
由於7.8版本及其以上版本都不再支持mysql,而原有環境使用的是mysql,因此還需要將數據從mysql遷移到postgresql上。
3 搭建6.7環境
詳見https://blog.csdn.net/qq_35550345/article/details/103586647
4 升級sonarqube測試
4.1 官方升級說明主要tips
1) MySQL的不再支持
SonarQube不再支持MySQL。要將MySQL從MySQL遷移到受支持的數據庫,請參見免費的MySQL Migrator工具。
2) Java的11所需要
SonarQube服務器現在需要Java 11分析,可能會繼續在必要時使用Java 8。
3) Pylint應該手動
運行已棄用python分析期間自動運行Pylint。此外,它在Windows的此版本中已損壞。如果需要,必須提前運行Pylint,並將結果報告傳遞到分析中。
4)ElasticSearch更新需要重建索引,從而可能需要更多的文件空間
4.2 參照官方給出的升級步驟:
- 在開始之前,請備份SonarQube數據庫。升級問題很少見,但是如果有任何事情發生,您將需要備份。詳情參照https://blog.csdn.net/qq_35550345/article/details/103588917
- 假設您將SonarQube版本的版本下載並解壓縮到一個新目錄中,
$NEW_SONARQUBE_HOME
- 手動安裝與您的SonarQube版本兼容的非默認插件。使用兼容性列表可確保您安裝的版本與服務器版本兼容。請注意,默認情況下會安裝您版本中所有SonarSource代碼分析器的最新版本。不建議將插件從舊服務器簡單地複製到新服務器;不兼容或重複的插件可能會導致啓動錯誤。
- 使用目錄中相關文件的設置(Web服務器URL,數據庫,ldap設置等)更新
sonar.properties
和wrapper.conf
文件的內容(中的)。不要複製粘貼舊文件。如果使用的是Oracle DB,則將其JDBC驅動程序複製到$NEW_SONARQUBE_HOME/conf$OLD_SONARQUBE_HOME/conf$NEW_SONARQUBE_HOME/extensions/jdbc-driver/oracle
- 停止舊的SonarQube服務器
- 啓動新的SonarQube服務器
- 瀏覽
http://yourSonarQubeServerURL/setup
並遵循設置說明 - 重新分析您的項目以獲取新數據
4.3 升級操作流程
4.3.1 準備工作
1)下發升級通知「何時升級+預計多久+影響功能」
例:【SonarQube升級通知】各位好,計劃於_年_月_日_時_分升級Sonarqube,預計升級1個小時,屆時無法正常使用sonar scanner分析代碼,請知悉。
2)備份數據庫
詳見https://blog.csdn.net/qq_35550345/article/details/103588917
3)下載mysql-migrator工具 mysql-migrator-1.1.0.119.zip
4)準備oracleJDK11安裝包 jdk-11.0.5_linux-x64_bin.tar.gz
5)準備sonarqube8.0安裝包 sonarqube-7.9.1.zip
4.3.2 準備postgre數據庫
1)安裝yum源
rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
2)安裝postgresql server
yum install -y postgresql10-server postgresql10
3)初始化PGDATA
/usr/pgsql-10/bin/postgresql-10-setup initdb
4)修改/var/lib/pgsql/10/data/pg_hba.conf以開啓MD5認證
host all all 127.0.0.1/32 md5
- 默認情況下,postgresql server監聽的地址爲localhost。如果需要遠程連接postgresql server,則需要修改/var/lib/pgsql/10/data/postgresql.conf中的監聽地址如下:
listen_addresses = '*'
- 同時,如果需要遠程連接postgresql server,還需要修改/var/lib/pgsql/10/data/pg_hba.conf中的MD5認證爲:
host all all 0.0.0.0/0 md5
5)如果開啓了防火牆,則需要開啓TCP5432端口的監聽
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
6)啓用postgresql server並設置開機自啓
systemctl start postgresql-10
systemctl enable postgresql-10
7)檢查一下postgresql server的運行狀態
systemctl status postgresql-10
netstat -tulpn | grep 5432
8)爲sonarqube服務創建數據庫
sudo -u postgres psql
CREATE DATABASE sonar;
CREATE USER sonar WITH ENCRYPTED PASSWORD 'SonarTest2019@';
GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
ALTER DATABASE sonar OWNER TO sonar;
\q
4.3.3 遷移數據庫
1)遷移數據
- 停止sonar
systemctl stop sonar
- 將sonarqube6.7.5 copy一份,修改原sonar的sonar.properties指定新的數據庫(修改sonar.jdbc參數)
sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar
- 啓動sonar
./sonar.sh start
- 停止sonar
./sonar.sh stop
- 將原sonar的配置文件改回,並將副本的配置文件改成
sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar
- 遷移數據
./mysql-migrator-1.1.0.119/bin/mysql-migrator -source /opt/sonarqube/conf/sonar.properties -target /opt/sonarqube-6.7.5/conf/sonar.properties
- 檢驗數據是否成功複製到了postgre
sudo -u postgres psql
\c sonar
\dt
select * from projects;
2)刪除舊的索引,重啓服務
rm -fr ./sonarqube/
data/es5
systemctl start sonar
到此,數據遷移成功!
4.3.4 升級sonarqube到7.9.1
1)安裝JDK11
#因爲現在在通過jdk8運行sonar6.7.5,所以暫時可以不配置全局變量,升級完成後將jdk13配置成全局即可。
tar zxf jdk-11.0.5_linux-x64_bin.tar.gz -C /usr/local/
2)配置sonarqube7.9.1
unzip sonarqube-7.9.1.zip -d /opt/
cp sonarqube/conf/sonar.properties sonarqube-7.9.1/conf/sonar.properties
注意:7.9.1中的一定要是這個:sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar
vim sonarqube-7.9.1/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk-11.0.5/bin/java
3)停止sonarqube6.7.5,啓動7.9.1
systemctl stop sonar
mv sonarqube sonarqube-6.7.5.bak
mv sonarqube-7.9.1 sonarqube
chown -R sonar:sonar sonarqube
systemctl start sonar
4)重新登錄頁面
http://172.16.212.133:9000/setup
admin/admin登錄
升級成功!
4.3.5 收尾工作
1)配置JDK11爲全局變量
vim /etc/profile
JAVA_HOME=/usr/local/java/jdk-11.0.5
JRE_HOME=/usr/local/java/jdk-11.0.5/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
2)安裝插件
- 安裝Chinese漢化包
- 其他需要的插件