1 引言
本手册以「将sonarqube6.7.5升级到7.9.1」为例,日后的升级(包括迁移数据库)操作可参考本手册进行!
sonarqube软件仓库:https://binaries.sonarsource.com/Distribution/
2 调研
由于7.8版本及其以上版本都不再支持mysql,而原有环境使用的是mysql,因此还需要将数据从mysql迁移到postgresql上。
3 搭建6.7环境
详见
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数据库。升级问题很少见,但是如果有任何事情发生,您将需要备份。详情参照
- 假设您将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)备份数据库
详见
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汉化包
- 其他需要的插件