搬瓦工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
发表评论