搬瓦工vps centos7升级到rocky linux8

缘起

众所周知centos本来是个挺稳定的系统,提供了十年的超长支持周期,且是readhat红帽linux的下游稳定版本,适合作为服务器使用,之前vps上也一直使用centos7系统。

但在centos所属的redhat被IBM收购后,21年宣布未来centos不会作为redhat的下游,而是变成了介入fedora和redhat之间的测试版非稳定系统。

当前的centos8系统在2022年已经终止支持(本来要到2029年停止的),centos7也会在2024年6月终止支持。

当前的时间点,也快到centos终止支持的时间了,考虑到未来的稳定性等原因,需要迁移到其他系统上。

迁移过程

可选择对比

经过晚上查询,目前继承之前centos衣钵,能够提供和之前centos一样的兼容性和稳定性的发行版有两个:rocky linux和alma linux,其二者差异不大,我选择了centos创始人新创建的rocky linux,因此也就有了这篇文章

迁移过程

因为搬瓦工vps镜像的特殊性,开始迁移操作前,需要处理下epel源,否则无法安装诸如rpmconf等软件,且后续过程也会出问题。

1、处理epel源,卸载重新安装

yum -y remove epel-release

yum -y install epel-release

2、去除老的elrepo.repo,在/etc/yun.repo.d/elrepo.repo,可以删除或者移动重命名

3、按照https://zhuanlan.zhihu.com/p/571385318文章的步骤升级,这里保存备忘

1.安装epel源

yum -y install epel-release

2.更新系统至最新版本,防止升级时出现各种奇葩问题

yum -y update

3.重启系统

reboot

4.安装rpmconf和yum-utils

yum -y install rpmconf yum-utils

5.执行rpmconf,如果出现一些提示,按需进行操作(自己修改过的配置,建议保留)

rpmconf -a

6.安装dnf

yum -y install dnf

7.移除yum和yum-metadata-parser

dnf -y remove yum yum-metadata-parser

8.安装RockyLinux8的源和升级epel源

rpm -e --nodeps `rpm -qa|grep centos-`



rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-release-8.7-1.2.el8.noarch.rpm  

rpm -ivh --nodeps  --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-repos-8.7-1.2.el8.noarch.rpm  

rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-8.7-1.2.el8.noarch.rpm  

dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  


dnf clean all

9.卸载centos7的内核及修改python编码

rpm -e --nodeps `rpm -qa|grep -i kernel`

修改python2编码

vi /usr/lib/python2.7/site-packages/sitecustomize.py

把下面这段代码加入文件里面

# encoding=utf8   
import sys   
 
reload(sys)   
sys.setdefaultencoding('utf8')   
# encoding=utf8  import sys    reload(sys)  sys.setdefaultencoding('utf8')

10.升级到RockyLinux8,这一步一般会报错,如果没有报错请进行第10步操作

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

执行完上面的命令之后如果报下面的错,如果没报下面的错跳过这一步即可(请认真阅读错误提示!)。

请把红框里面的包名(可能有多个包,重复下面的步骤)替换到下面命令:命令:

find /var/cache/dnf/ -name *包名*

如:

find /var/cache/dnf/ -name *flatpak-1.8.7-1.el8.x86_64*

如:

rpm -ivh --nodeps --force /var/cache/dnf/appstream-7992bedf6cf283a9/packages/flatpak-1.8.7-1.el8.x86_64.rpm

之后往下操作:

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

发现报错之后先卸载类似于图上from package后面的包名

rpm -e --nodeps sysvinit-tools-2.88-14.dsf.el7.x86_64  rpm -e --nodeps python36-rpmconf-1.0.22-1.el7.noarch

卸载完后再次执行升级

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

11.执行rpmconf,依然是按需进行选择Y或N

rpmconf -a

12.安装内核(防止有些时候没安装内核开机失败,开机失败的可以用RockyLinux-8 ISO镜像救援模式安装内核)

dnf -y install kernel kernel-core   
dnf -y install shim grub2-tools-extra grubby grub2-common grub2-pc   
dnf -y install grub2-tools-efi   grub2-tools-minimal grub2-efi grub2-pc-modules grub2-tools

13.执行下面的命令,防止迁移完成后找不到引导,重启开不了机,根据以下命令选择分区表类型,根据分区表类型执行相关命令

查看分区表类型

fdisk -l GPT分区表

MBR分区表

GPT分区(UFFI的BIOS)

export grubcfg=`find /boot/ -name rocky`
grub2-mkconfig -o $grubcfg/grub.cfg
rm -rf `find /boot/ -name centos`

MBR分区(传统的BIOS、dos、msdos)(注意/dev/nvme0n1需根据实际情况自行选择磁盘路径,具体参考上图)

grub2-mkconfig -o /boot/grub2/grub.cfg   

grub2-install /dev/nvme0n1

14.这一步选择性执行,执行这一步能解决安装yum报错。

rm -rf /etc/yum

15.安装基础环境

dnf -y groupinstall "Minimal Install"

16.重启机器

reboot

迁移的注意点:

使用rpmconf -a进行配置时,自己自定义处理修改过的配置项,最好要保留下来,防止配置丢失;其余软件的冲突可以选择使用新版本的(即选择Y同意更新)

迁移后的处理

1、python命令丢失(由于centos8系统的改变导致),可以创建软链接解决

ln -s /usr/bin/python2 /usr/bin/python

2、php挂掉了,网站无法访问

由于没有详细日志不好分析,通过对比升级前后的软件情况,确认是php相关的周边软件环境的问题,可以通过重新安装解决

dnf install php php-mysqlnd

dnf install php-gd php-zip  php-json php-xml php-gettext php-curl php-intl

php-mysqlnd php-json 是必须的,其他的也可以安装一下 ,中途查看php500错误的具体原因,还是没有找到,非常的奇怪

3、邮箱挂了

发现dovecot不能收信,但是可以发信

 Warning: please set ssl_dh=</etc/dovecot/dh.pem
 dovecot[1211]: config: Warning: You can generate it with: dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem
dovecot[1211]: imap-login: Error: Failed to initialize SSL server context: Can't load DH parameters (ssl_dh setting): error:1408518A:SSL routines:ssl3_ctx_ctrl:dh key too small: user=<>, rip=sxxx, lip=xxx, session=<xxx>

这里有个坑,按照提示的方式生成dh后,并不能解决问题,会提示dh key too small错误,通过网上查询后,是需要生成更高强度额秘钥,可以使用如下命令生成:

openssl dhparam -out /var/dovecot/dh.pem 4096

然后在/etc/dovecot/conf.d/10-ssl.conf增加 ssl_dh=</var/dovecot/dh.pem

这个是新的dovecot新增的,需要4096的秘钥长度,应该是安全性加强导致的,升级安装后出现问题。

总结

开源软件,社区真的很重要,商业化的公司维护的系统,有可能因为商业原因等改变策略,导致支持出现问题。

这次redhat对centos的操作,感觉是被IBM收购后的商业考虑导致的变化,真的是很坑的。。。

像操作系统这种,很依赖系统稳定性和持续维护的产品更是如此,希望rocky linux能够社区化发展的很好吧。

另外未来再放长远看,如果rocky linux的维护也出现问题,会迁移到debian、ubuntu这种发行版上来。

参考文档

https://zhuanlan.zhihu.com/p/571385318

https://tecadmin.net/install-lamp-centos-8/

https://bugs.centos.org/view.php?id=17341

https://askubuntu.com/questions/1263950/imap-login-error-failed-to-initialize-ssl-server-context-cant-load-ssl-certi


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。