两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

OpenShift / RHEL / DevSecOps 汇总目录

说明

  1. 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。

  2. 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。

  3. 所有被测软件的验证操作可参见上述前文中对应章节的说明。

准备 CentOS 6.0 及其他被验证软件

下载 CentOS 和 RHEL 的 ISO 介质

下载 CentOS 6.0 、RHEL 6.10、RHEL 7.9 的 ISO 文件。

准备 CentOS 6.0

  1. 在测试 VM 中使用 ISO 安装 CentOS 6.0。注意:需要安装 X Windows System,并将网卡配置为开机启动。在安装完后的初始启动时配置窗口中关闭防火墙。
  2. 由于在下载被验证软件时很多网站已不支持 CentOS 6.0 的 TLS1.0 和 TLS1.1 协议,因此需要先用 RHEL 6.10 的介质单独升级 openssl。
  3. 先将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后再执行命令挂载 RHEL 6.10 到指定目录,最后创建 RHEL 6 的 Yum Repo。
bash 复制代码
$ mkdir /mnt/rhel6
$ mount /dev/sr0 /mnt/rhel6
$ cat > /etc/yum.repos.d/rhel6-local.repo << EOF 
[rhel6-local-repo]
name = rhel6 local repo
baseurl=file:///mnt/rhel6
enabled=1
gpgcheck=0
EOF
  1. 执行命令升级 openssl。
bash 复制代码
$ yum update -y openssl
  1. 将 CentOS 6.0 的 ISO 挂载到主机中,然后依此创建 CentOS 6 的 Yum Repo。
bash 复制代码
$ umount /mnt/rhel6
$ mkdir /mnt/centos6
$ mount /dev/sr0 /mnt/centos6
$ cat > /etc/yum.repos.d/centos6-local.repo << EOF 
[centos6-local-repo]
name = centos6 local repo
baseurl=file:///mnt/centos6
enabled=1
gpgcheck=0
EOF

docker 1.7.1

注意:由于 CentOS 6.0 发布的时间在 2011 年,因此没有找到 CentOS 6.0 上可用的 docker 安装包。以下 Docker 1.7.1 可在稍晚的 CentOS 6.x 中作为验证环境。

执行以下命令,安装 Docker 环境。

bash 复制代码
wget https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/6/Packages/docker-engine-1.7.1-1.el6.x86_64.rpm --no-check-certificate
rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm
service docker start
service docker status

jdk 1.5.0_22 + tomcat 4.1.40

安装

  1. 从以下链接下载 JDK 和 Tomcat 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-amd64.bin
    https://archive.apache.org/dist/tomcat/tomcat-4/v4.1.40/bin/apache-tomcat-4.1.40.tar.gz
  2. 在用户默认目录下安装 JDK 和 Tomcat。
bash 复制代码
cd ~
./jdk-1_5_0_22-linux-amd64.bin
tar -xvf apache-tomcat-4.1.40.tar.gz
  1. 修改 apache-tomcat-4.1.40/bin/setclasspath.sh 文件,在最前方增加 export JAVA_HOME=/YOUR/PATH/jdk1.5.0_22 的内容。

验证

  1. 启动 Tomcat。
bash 复制代码
~/apache-tomcat-4.1.40/bin/startup.sh
  1. 打开以下链接访问 Tomcat,可以测试 Examples。
    http://<HOST-IP>:8080/

jdk 1.6.0_45 + weblogic 10.3.6

安装

  1. 从以下链接下载 JDK 和 WebLogic 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin
    https://download.oracle.com/otn/nt/middleware/11g/wls/1036/wls1036_generic.jar
  2. 在用户默认目录下安装 JDK 和 WebLogic (WebLogic 安装过程略)。
bash 复制代码
cd ~
./jdk-6u45-linux-x64.bin
~/jdk1.6.0_45 -jar wls1036_generic.jar

验证

  1. 运行命令,启动 WebLogic 测试 Domain 环境。该 Domain 的管理员/密码是:weblogic/welcome1。
bash 复制代码
 ~/Oracle/Middleware/wlserver_10.3/samples/domains/medrec/bin/startWebLogic.sh
  1. 打开以下链接访问 WebLogic 上的测试应用。
    http://<HOST-IP>:7011/medrec

mysql 5.1.47

  1. 执行命令,安装 CentOS 6.0 内置的 mysql 5.1.47。
bash 复制代码
yum install mysql
chkconfig mysqld on
service mysqld start
service mysqld status
  1. 参照前文登录 mysql,然后创建数据库、表并添加数据。

postgresql 8.4.4

  1. 执行命令,安装 CentOS 6.0 内置的 postgresql 8.4.4。
bash 复制代码
yum -y install postgresql postgresql-libs postgresql-plperl postgresql-plpython postgresql-server
service postgresql initdb
chkconfig postgresql on
service postgresql start
service postgresql status
  1. 参照前文登录 postgresql,然后创建用户、数据库、表并添加数据。

mongodb 4.2.25

  1. 执行命令,创建安装 mongodb 用的 Repo。
bash 复制代码
$ cat > /etc/yum.repos.d/mongodb.repo << EOF 
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=0
enabled=1
EOF
  1. 安装 mongodb。
bash 复制代码
yum install -y mongodb-org
service mongod start
service mongod status
  1. 参照前文向 mongodb 添加数据。

redis 3.2.8

说明:采用编译源码方式安装 redis。

  1. 安装编译环境。
bash 复制代码
yum install make gcc tcl -y
  1. 下载 redis 源码,然后编译。
bash 复制代码
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -xvzf redis-3.2.8.tar.gz
cd redis-3.2.8
make
make install
  1. 使用默认配置安装 redis。
bash 复制代码
cd utils
./install_server.sh
service redis_6379 status
redis-cli --version
  1. 参照前文向 redis 添加数据。

rabbitmq 3.7.10

  1. 下载并安装 rabbitmq 及其依赖包。
bash 复制代码
wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/6/erlang-21.3.8.18-1.el6.x86_64.rpm/download.rpm?distro_version_id=27"
rpm -ivh erlang-21.3.8.18-1.el6.x86_64
 
wget https://www.rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/socat-1.7.1.3-1.el6.rf.x86_64.rpm --no-check-certificate
rpm -ivh socat-1.7.1.3-1.el6.rf.x86_64.rpm
 
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el6.noarch.rpm --no-check-certificate -O rabbitmq-server-3.7.10-1.el6.noarch.rpm
rpm -ivh rabbitmq-server-3.7.10-1.el6.noarch.rpm
  1. 启动 rabbitmq。
bash 复制代码
service rabbitmq-server start
service rabbitmq-server status
  1. 安装 rabbitmq 的管理控制台,并初始化用户。
bash 复制代码
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
  1. 参照前文访问 rabbitmq 控制台。

Oracle 12.1.0.2

  1. 安装必要的依赖环境。
bash 复制代码
yum install compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libXext libXtst  libXau libxcb libXi make sysstat unixODBC unixODBC-devel compat-libcap1 -y
  1. 准备必要的用户、目录并分配权限。
bash 复制代码
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
 
mkdir /u01 
mkdir /u02
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u02
chmod -R 775 /u01 
chmod -R 775 /u02
chmod g+s /u01 
chmod g+s /u02
  1. 如果不用 DNS 解析,执行以下命令将主机名和 IP 添加到 /etc/hosts 中。
bash 复制代码
ifconfig | grep eth -A 2|grep "inet addr" | cut -d: -f2 | awk '{ print $1 "\t" "'''$HOSTNAME'''"}' >> /etc/hosts
  1. 准备安装介质。
bash 复制代码
unzip ~/V46095-01_1of2.zip -d /stage/
unzip ~/V46095-01_2of2.zip -d /stage/
chown -R oracle:oinstall /stage/
  1. 安装数据库并创建实例。说明:具体安装步骤可参见《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》的相关章节。
bash 复制代码
$ su - oracle
$ export DISPLAY=<CLIENT-HOST-IP>:0.0
$ /stage/database/runInstaller
  1. 参照前文访问 Oracle 实例,并查询测试表数据。

CentOS 6.0 到 RHEL 6.10 升级转换

安装 conver2rhel

convert2rhel v0.18 支持直接将 CentOS 6.0 升级并转换为 RHEL 6.10。

  1. 下载并安装 convert2rhel 依赖包。由于部分依赖包不在 CentOS 6.0 中,因此可以从 https://access.redhat.com/downloads/content/69/ver=/rhel---6/6.10/x86_64/packages 网站下载以下离线包,然后安装。
bash 复制代码
rpm -ivh ~/conver2rhel/python-six-1.9.0-2.el6.noarch.rpm
rpm -ivh ~/conver2rhel/virt-what-1.11-1.3.el6.x86_64.rpm
 
rpm -ivh ~/conver2rhel/m2crypto-0.20.2-7.el6.x86_64.rpm
rpm -ivh ~/conver2rhel/pexpect-2.3-6.el6.noarch.rpm               
rpm -ivh ~/conver2rhel/python-decorator-3.0.1-3.1.el6.noarch.rpm  
rpm -ivh ~/conver2rhel/python-dmidecode-3.10.12-1.el6.x86_64.rpm
  1. 下载并安装 convert2rhel。注意:由于 CentOS 6 已经停更,因此较新版的 convert2rhel 已不支持 CentOS 6 迁移转换了,为此本文使用了较早版本的 convert2rhel。另外较早的 convert2rhel 还支持一步操作完成 CentOS 版本升级 + RHEL 迁移转换。
bash 复制代码
wget https://github.com/oamg/convert2rhel/releases/download/v0.18/convert2rhel-0.18-1.el6.noarch.rpm -O ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm --no-check-certificate
rpm -ivh ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm

CentOS 6.0 到 RHEL 6.10 升级转换

  1. 将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel6。
bash 复制代码
umount /mnt/centos6
mount /dev/sr0 /mnt/rhel6
  1. 查看升级转换前系统中各软件包的供应商。注意:convert2rhel 只转换由 CentOS 供应的软件。
bash 复制代码
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort
  1. 执行命令将 CentOS 6.0 升级并转换到 RHEL 6.10。
bash 复制代码
convert2rhel --disable-submgr --enablerepo=rhel6-local-repo --no-rpm-va -y
  1. 完成后重启系统。
  2. 查看升级转换后系统中各软件包的供应商,确认 CentOS 都已变为 Red Hat, Inc.
bash 复制代码
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort

验证

根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。

注意:由于在准备环境过程中 postgresql 和 mysql 使用的是 CentOS 自带的软件,因此它们也会在 CentOS 升级过程中随之升级(postgresql 升级至 8.4.20,mysql 升级到 5.1.73)。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。

RHEL6.10 到 RHEL7.9 升级

安装原地升级程序

  1. https://access.redhat.com/downloads/content/69/ver=/rhel---6/6.10/x86_64/packages 下载以下原地升级程序相关的软件包到 ~/rhel6-rhel7-preupgrade/ 目录中。
bash 复制代码
preupgrade-assistant                              
preupgrade-assistant-el6toel7                        
preupgrade-assistant-el6toel7-data                 
redhat-upgrade-tool
fakeroot                                            
fakeroot-libs                                         
openscap
openscap-engine-sce
openscap-scanner
openscap-utils
pykickstart
redhat-rpm-config
rpm-build
rpmdevtools
  1. 确保当前只有 RHEL 6.10 的 Repo 有效,然后安装以上软件包。
bash 复制代码
mount /dev/sr0 /mnt/rhel6
mv /etc/yum.repos.d/centos6-local.repo /etc/yum.repos.d/centos6-local.repo.bak
yum localinstall ~/rhel6-rhel7-preupgrade/*

RHEL 6.10 到 RHEL 7.9 升级

  1. 将 RHEL 7.9 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel7,最后创建 rhel7 的 Yum Repo。
bash 复制代码
$ umount /mnt/rhel6
$ mv /etc/yum.repos.d/rhel6-local.repo /etc/yum.repos.d/rhel6-local.repo.bak
$ mkdir /mnt/rhel7
$ mount /dev/sr0 /mnt/rhel7
$ cat > /etc/yum.repos.d/rhel7-local.repo << EOF 
[rhel7-local-repo]
name = rhel7 local repo
baseurl=file:///mnt/rhel7
enabled=1
gpgcheck=0
EOF
  1. 执行预升级。
bash 复制代码
preupg
  1. 完成后可在 ~/preupgrade 中查看执行评估生成的相关文件。
bash 复制代码
$ ll ~/preupgrade
total 2104
drwxr-xr-x.  5 root root   4096 May 15 08:54 cleanconf
drwxr-xr-x.  2 root root   4096 May 15 08:53 common
drwxr-xr-x.  5 root root   4096 May 15 08:59 dirtyconf
drwxr-xr-x.  3 root root   4096 May 15 08:55 etc
drwxr-xr-x.  2 root root   4096 May 15 08:53 hooks
drwxr-xr-x.  2 root root   4096 May 15 09:00 kickstart
drwxr-xr-x.  2 root root   4096 May 15 08:55 noauto_postupgrade.d
drwxr-xr-x.  2 root root   4096 May 15 08:55 pkgdowngrades
drwxr-xr-x.  2 root root   4096 May 15 08:53 postmigrate.d
drwxr-xr-x. 14 root root   4096 May 15 09:00 postupgrade.d
drwxr-xr-x.  2 root root   4096 May 15 09:00 preupgrade-scripts
-rw-r--r--.  1 root root 642236 May 15 09:00 preupg_results-240515090037.tar.gz
-rw-r--r--.  1 root root   6383 May 15 08:53 README
-rw-r--r--.  1 root root 742570 May 15 09:00 result.html
-rw-r--r--.  1 root root 706045 May 15 09:00 result.xml
drwxr-xr-x. 16 root root   4096 May 15 08:54 RHEL6_7
  1. 打开 result.html 文件,可查看评估报告详细内容。
  2. 执行强制升级。
bash 复制代码
$ redhat-upgrade-tool --device /mnt/rhel7 --cleanup-post -f
setting up repos...
upgradedevice                                                                                              | 2.8 kB     00:00 ...
upgradedevice/primary                                                                                      | 2.1 MB     00:00 ...
getting boot images...
vmlinuz-redhat-upgrade-tool                                                                                | 6.5 MB     00:00 ...
initramfs-redhat-upgrade-tool.img                                                                          |  54 MB     00:00 ...
setting up update...
upgradedevice/filelists                                                                                    | 3.1 MB     00:00 ...
upgradedevice/productid                                                                                    | 1.6 kB     00:00 ...
testing upgrade transaction
rpm transaction 100% [===========================================================================================================]
rpm install 100% [===============================================================================================================]
setting up system for upgrade
Finished. Reboot to start upgrade.
[root@c2r-demo ~]# reboot

Broadcast message from root@c2r-demo
        (/dev/pts/0) at 8:11 ...
 
The system is going down for reboot NOW!
  1. 升级准备好后系统会自动重启进行升级操作,升级完成后还会重启一次。

验证

根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。

注意:由于 postgresql 和 mysql 使用的是 CentOS 自带的软件,它们会在 CentOS 升级过程中版本随之升级,因此可能需要进行以下单独处理。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。

mysql

注意:RHEL6.10 内置的 mysql 5.1.73 在升到 RHEL 6.10 后会被升级到社区版 mariadb 5.5.68。

  1. 启动 mariadb 服务。
bash 复制代码
systemctl status mariadb
systemctl start mariadb
  1. 参照前文 mysql 部分,先登录 mariadb 实例,然后查询测试表数据。

postgresql

注意:在从 RHEL 6.10 升级到 RHEL 7.9 后,postgresql 程序的版本会从 8.4.4 升级到 9.2.24。在升级后还需手动对数据库格式进行单独的升级。

  1. 下载 postgresql 9.2.24 的升级程序包。
bash 复制代码
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
yum localinstall postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
  1. 对 postgresql 数据库进行升级,然后启动 postgresql 即可。
bash 复制代码
postgresql-setup upgrade
systemctl start postgresql
systemctl status postgresql
  1. 参照前文 postgresql 部分,查询测试表数据。

问题处理

在从 CentOS 6.10 转换到 RHEL 7.9 的过程中,如果没做预检查,转换重启后用户登录可能会遇到以下错误:

bash 复制代码
grep: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory

原因请参考 https://access.redhat.com/solutions/5565431。执行以下命令将 grep 的版本降到 2.20-3 即可解决该问题。

bash 复制代码
$ yum downgrade /mnt/rhel7/Packages/grep-2.20-3.el7.x86_64.rpm

参考

https://www.oracle.com/java/technologies/javase/products-doc-jdk8-jre8-certconfig.html

https://www.oracle.com/java/technologies/jdk-jre-7-cs-config.html

https://www.oracle.com/java/technologies/system-configurations.html

https://www.oracle.com/java/technologies/javase/system-configurations.html

相关推荐
挥剑决浮云 -8 分钟前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学1 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥2 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy2 小时前
11. 异步编程
运维·服务器·javascript
x晕x2 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人2 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou3690986553 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
北京智和信通3 小时前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控
fasewer3 小时前
第五章 linux实战-挖矿 二
linux·运维·服务器
楚灵魈3 小时前
[Linux]从零开始的网站搭建教程
linux·运维·服务器