几天前我搭建在 HostHatch 的 Nextcloud 服务突然无法访问了。心想 HostHatch 此前已经连续稳定运行数年,故障大概率是我自己的设置问题或是服务器被入侵了,立马慌了。随即 ssh 登录服务器查看状况,结果 ssh 无法登录。又到控制台想通过VNC登录了解情况,结果系统卡在 GRUB 无法正常引导。进入 GRUB 救援模式,修改 GRUB 启动分区,加载基本模块等一通操作下来还是白忙活。ls查看设备状态,硬盘还是能读出来的。索性懒得折腾了,重装系统吧,反正本地还有备份不怕丢数据。
CentOS8 目前已不受官方支持,而我又不想用 Stream 版的,考虑再三还是用 Rocky Linux 吧。
由于这次故障来的太突然,而且故障的原因又不明,卡在 GRUB 估计与我上次安装系统使用了自定义 ISO 有关。所以这次舍弃了之前通过挂载 ISO 的方式直接装 Rocky Linux,而是先通过官方的 Image 重装 CentOS 8,再从 CentOS 8 迁移到 Rocky Linux。
从 CenOS 8 迁移到 Rocky Linux
重装完 CentOS 8 后首先修复存储库
sed -i -r \
-e 's!^mirrorlist=!#mirrorlist=!' \
-e 's!^#?baseurl=http://(mirror|vault).centos.org/\$contentdir/\$releasever/!baseurl=https://dl.rockylinux.org/vault/centos/8.5.2111/!i' \
/etc/yum.repos.d/CentOS-*.repo
下载官方推荐的的迁移脚本文件
curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh
赋予脚本文件可执行权限
chmod u+x migrate2rocky.sh
执行迁移脚本
./migrate2rocky.sh -r
等待一段时间迁移成功会有提示信息,需要重启系统,然后查看系统是否迁移成功
hostnamectl
Rocky Linux 下 Nextcloud 的部署
添加 EPEL 存储库
yum install epel-release
安装 snapd
yum install snapd
启用管理主 snap 通信的 systemd 单元
systemctl enable --now snapd.socket
启用经典 /var/lib/snapd/snap 快照支持
ln -s /var/lib/snapd/snap /snap
重启系统,然后安装 Nextcloud
snap install nextcloud
更改 Nextcloud 的 HTTP 端口
snap set nextcloud ports.http=**
调整 PHP 内存限制
snap set nextcloud php.memory-limit=512M
默认情况下用户的同步数据会放在 /var/snap/nextcloud/common/ 文件夹下,如果需要更改数据存放路径,需要修改 php 配置
vi /var/snap/nextcloud/current/nextcloud/config/config.php
找到 ‘datadirectory’ => ’ 将后面的路径修改为你需要的路径
然后在路径根目录下新建一个名为 “.ocdata” 的空白文件,Nextcloud 方可将新指定的文件夹识别为数据存放位置。
浏览器输入 IP 地址和服务端口登录 Nextcloud,按照提示设置管理员账户和密码就大功告成了 当我一切都完成之后,没想到 HostHatch 发来邮件了。是他们的存储节点故障导致的这次宕机,他们也注意到了,故障恢复后个别机器在启动过程中卡住了。哎……自己动手解决问题,没发工单给他们添乱。
总结了一下,这次宕机的可能原因有二:
1.我使用的自定义 ISO 他们在故障修复的过程中没有充分的考虑到,导致不兼容
2.上次因为要禁用 IPv 6 而替换了 GRUB 引导文件,与新的宿主机不兼容,导致引导错误
总之,没有这次他们的节点故障,也就不会出现引导失败的问题。