记一次博客从Centos迁移至Ubuntu

Posted by
内容纲要

前言

我的搭建博客的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上,这样无论更换任何系统或是迁移到新服务器上会省事很多。

Leave a Reply

您的电子邮箱地址不会被公开。