前言
我的搭建博客的VPS使用的是Centos7系统。有鉴于Centos以后全面转向Stream分支,以及知乎上大佬对于Centos的一些负面评价。为了以后能够更好地获得新特性和支持,我决定将博客迁移到新的Linux发行版上。
选择发行版
我个人对于Linux方面了解并不多,所以在希望选择一个社区人数多,网上教程比较多的流行发行版。要论最流行的发行版,那必然是非Ubuntu莫属了。最终我选择了Ubuntu。
最新版还是长期支持版
摆在我面前有两个Ubuntu版本可供选择:
- Ubuntu 20.04.3 LTS
- Ubuntu 21.10
最终我选择了Ubuntu 21.10版本,原因如下:
- 我的博客站实际上对于稳定性的要求并不是特别高
- 最新版的Ubuntu已经足够稳定
- 我更想尝鲜新版本的软件
- Ubuntu升级版本也并不麻烦
迁移前的备份工作
主要包含以下内容:
- 备份MariaDB数据库
- 备份nginx配置文件
- 备份nginx网站文件
- 备份迁移https证书
- 备份迁移https证书生成脚本(包含在https证书路径下)
备份MariaDB数据库
使用下面的命令备份所有数据库
mysqldump -u -root -p -all-databases > /home/all.sql
备份nginx配置文件
备份以下路径下的配置文件
/etc/nginx/conf.d/
备份nginx网站文件
备份以下路径下的网站资源文件
/usr/share/nginx/
备份https证书和生成脚本
我使用的是acme.sh生成的https证书。我的acme证书和脚本都放在以下路径下面
~/.acme.sh/
这里我还通过crontab -e 命令设置了自动更新的定时任务,这个也要备份一下
28 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
迁移后的还原工作
安装软件
我的博客是基于WordPress搭建的。我的WordPress运行在nginx+php+MariaDB上面的,所以需要安装这几个软件。
php mysql插件不生效的问题
我在安装php以后遇到过WordPress提示php没有mysql插件的问题。但是我已经有安php-mysql包。后来我发现我还安了php8.0的包,导致了冲突。
解决办法是卸载所有php-mysql相关的包,重新安装php8.0-mysql然后重启服务器。
还原备份的内容
数据库使用下面的命令还原
mysql -u root -p < /home/backup.sql
其他文件放到对应路径即可。定时任务通过crontab -e进行设置。
防火墙的问题
在切换到新系统后出现了无法访问nginx上的网站的问题,后来才想起来没有在防火墙上开放相应端口。不过我使用的是VPS提供商Vultr提供的防火墙设置,在这里我只需把防火墙关闭即可。
后记
其实这次迁移并不复杂,主要还是卡在了因为不熟悉运维方面的知识,导致没有及时意识到防火墙的问题和php安装的问题,最后花费了很多时间排查。后续有考虑将相关服务切换到docker上,这样无论更换任何系统或是迁移到新服务器上会省事很多。