[Debian][NextCloud]关于 NextCloud 备份迁移&更换域名的一点经验分享(写于:20220404)

前面说这个月要折腾独服不再写文章了的,但是中间迁移服务器事情又比较多,有些内容我以前也没写过,忍不住还是想写点什么分享下,所以想了想还是先把中间的一些备份迁移的经验记录分享下吧,说不定会帮到后来的人呢……

一、前期准备

注意:本文除了此第一部分之外,后面的操作都不需要对你原有服务器进行任何更改了。

首先需要说的是,关于备份迁移官方有相关的文档指导,如果您看英文 OK 也具备一定知识的话,可以直接看官方的来操作,我自己也是参考官方的文档来的:https://docs.nextcloud.com/server/latest/admin_manual/maintenance/migrating.html

如果你不是那么自信或者想看点通俗易懂的教程,我这篇文章应该是能帮到你的。

在开始数据备份和迁移之前,最重要的就是要给你的 NextCloud 服务器开启维护模式。维护模式大家在平时更新 NextCloud 的时候应该会看到,开启这个模式之后会锁定对 NextCloud 的操作,主要的目的就是防止你在升级或者迁移过程前后出现数据不一致而导致整个 NextCloud 产生错误,所以我们在迁移之前务必要记得开启这个模式。

要开启 NextCloud 的维护模式,有两种办法,一种是直接通过 NextCloud 的 OCC 命令行工具,另一种比较简单直接通过修改 NextCloud 的配置文件即可实现。

OCC 命令行开启维护模式

使用下面的命令即可开启:

sudo -u www-data php occ maintenance:mode --on

简单的说一下,sudo -u www-data 是使用 www-data 用户执行后面的命令,如果提示找不到 sudo 命令(一般发生在全新的机器上),可以使用 apt 命令先安装一下(apt install sudo)。www-data 指的是你的网站运行所使用的用户,他可能叫 www-data,也可能叫 www,请以自己的实际情况进行修改。php 指的是使用 php 运行后续的命令,如果你的系统环境没有设置的话,可以直接填写 php 执行文件的绝对路径来执行,比如 /usr/local/php/bin/php。occ 指的是 NextCloud 的 occ 命令行文件,一般在网站的根目录,如果你不是在此目录输入的命令,可能需要指定这个文件的绝对路径。

最后的 maintenance:mode –on 就不用解释了,开启维护模式的意思。

修改配置文件开启维护模式

除了使用命令开启维护之外,更简单的方式是直接修改 NextCloud 的配置文件,此文件位于你网站根目录下的 config 文件夹内,比如 /home/wwwroot/example.com/config/config.php。

要开启维护模式,只需要在这个文件里另起一行,比如直接在末尾加入 “maintenance” => true, 这句就可以了。

当开启维护模式以后,我们仍然可以访问 NextCloud 网站,但是打开会看到 NextCloud 处于维护状态的提示,如果没看到还能正常打开浏览文件,说明维护模式开启未成功。

前期的准备主要就是开启这个维护模式就行了,之后就不要再对 NextCloud 进行任何更改了。另外注意下,确认维护模式开启成功之后,可以关闭你的 Web Server 或者 PHP 进程,但是最好等待一阵子让所有在连接的客户端都收到维护通知不再操作 NextCloud 以后再关闭,这样可以最大程度的避免完成迁移之后产生数据出错。

二、数据备份

数据备份这一步是在完成开启维护模式之后再来的,这一步最重要的只有备份数据库,你的网站目录和上传的数据文件备份是非必须的,因为我们后面会直接通过 rsync 来进行目录和文件的迁移,不需要你去手动恢复目录和文件。至于为什么使用 rsync 迁移,一是 rsync 可以保持迁移的机器两边文件的源信息不变(比如修改时间之类的),由于没有改变,迁移完成恢复同步之后客户端也不会认为文件产生了更改而重新同步;二是 rsync 能跨机器同步,且支持 SSH 连接,整个迁移过程都比较方便省心。

数据库备份有很多种方法,比如直接通过命令行执行 mysqldump 命令,也可以通过一些网页端管理数据的工具(比如 phpMyAdmin)导出,所以我就不说具体的操作方法了。

PS:数据库备份可参考官方文档里的命令,https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html 如果你看不懂或者不会操作,推荐使用上面提到的 phpMyAdmin,全程都能在网页上完成。

三、数据迁移

搞定了上面的备份之后,首先确保你有在新机器上安装好相应的环境,比如 PHP 和 MySQL 之类的,这部分和你原来创建环境没什么差别。环境搭建好之后,首先将自己备份的数据库恢复到新机器上,此部分可以参考下官方文档的命令:https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html 数据库的恢复没有特别需要注意的地方,如果是新手不会的话,还是推荐使用上面提到的 phpMyAdmin 直接在网页上进行操作。

跳过数据库恢复这部分不提,我来说下迁移到新机器并正式上线之前,我们需要做的一些其它事情。

3.1 迁移网站目录及数据目录

前面提到使用 rsync 这个工具来帮我们复制原服务器的网站目录和数据目录到新机器上,现在来详细说下怎么操作吧。

首先,我们需要确保系统有安装 rsync 这个工具,对于 Debian 来说,执行下面的命令就可以安装上了。

apt install rsync

安装好之后,再来说下具体怎么使用,我这里举个简单的例子,比如下面这个命令:

rsync -av -t -e 'ssh -p 22' /home/wwwroot/example.com user@IP:/home/wwwroot

这个命令可以分几个部分来解释:

  1. -a 命令的意思是递归传输,在这里的意思是本机 /home/wwwroot/example.com 下的子文件夹和文件全部传输
  2. -av 里的 v 指的是传输过程要输出详细信息
  3. -t 的意思是传输要保持文件时间信息不变
  4. -e ‘ssh -p 22’ 的意思是通过 SSH 方式远程连接某主机的 22 端口,如果你的主机改了 SSH 端口这里记得也要改动
  5. user@IP 这里指定 SSH 远程连接主机的 IP 以及连接登录所使用的用户(user)
  6. /home/wwwroot 指定传输过来的文件保存在远程主机的哪个位置

基本上我这个命令就能完全满足我们的迁移需求了,大家根据我上面的说明改动中间的信息再实际执行就行。

3.2 确认配置文件无误

在数据库和网站目录/数据目录都在新主机上搞定之后,先不要急着启动生效,再检查下 NextCloud 的配置文件,如 /home/wwwroot/example.com/config/config.php 这个,确定新机子上的配置没有什么问题了,我们再进行后续的操作。

提示:因为是新机器,可能会涉及到 data 数据目录的位置移动或者数据库的信息的修改(名称,端口,登录用户等),最主要的就是检查这几个设置有没有问题。

3.3 修改配置文件内指定的域名(更换域名专属)

如果你跟我一样,不仅仅只是将 NextCloud 从一台机器迁移到了另一台机器,而且还使用了新域名的话,务必注意把 NextCloud 配置文件里的这两项给修改了。

'trusted_domains' => 
  array (
    0 => 'example.com',
    1 => 'example.org',
  ),
'overwrite.cli.url' => 'https://example.org',

trusted_domains 这项是一个数组,我们需要按照上面例子中的样子,将我们连接 NextCloud 的域名都给写进去,比如老域名是 example.com,新域名是 example.org,那就按照上面的例子把新域名给添加进去,但是注意最好把老域名先保留着,这样可以避免潜在的问题。

overwrite.cli.url 这项可以理解为我们平时使用的主域名,所以填写我们的新域名就行了。

PS:如果 trusted_domains 不加入我们的新域名,会导致用新域名访问 NextClouud 时被拒绝,提示未信任域名。

3.4 更新数据指纹(如果有的话)

先检查下 NextCloud 的配置文件,如果里面有 data-fingerprint 这项而且设置的不是空值的话,我们需要在正式启用新机子上的 NextCloud 前先执行下有关的 occ 命令跟新下数据指纹,目的相当于是通知有关程序我们恢复过数据了,文件可能需要重新同步。

具体命令:

sudo -u www-data php occ maintenance:data-fingerprint

因为不想同样的话说两边,所以我就直接复制粘贴前面的说明了。233333

简单的说一下,sudo -u www-data 是使用 www-data 用户执行后面的命令,如果提示找不到 sudo 命令(一般发生在全新的机器上),可以使用 apt 命令先安装一下(apt install sudo)。www-data 指的是你的网站运行所使用的用户,他可能叫 www-data,也可能叫 www,请以自己的实际情况进行修改。php 指的是使用 php 运行后续的命令,如果你的系统环境没有设置的话,可以直接填写 php 执行文件的绝对路径来执行,比如 /usr/local/php/bin/php。occ 指的是 NextCloud 的 occ 命令行文件,一般在网站的根目录,如果你不是在此目录输入的命令,可能需要指定这个文件的绝对路径。

maintenance:data-fingerprint 这个就是更新数据指纹的意思。

四、新服验证

数据库恢复完成,网站目录和数据目录迁移完成,配置文件检查完成,基本上做完这三个就差不多了,现在我们就可以验证下新机子上的 NextCloud 是否运行正常了。

首先自然是先确定有修改域名的相关 A/AAAA 记录,等 DNS 更新之后打开网站,如果能看到 NextCloud 的维护模式提示的话,就相当于成功一大半了,之后只需要再检查下 NextCloud 数据目录里的日志有没有什么异常,Nginx&PHP 的日志有没有异常,如果都没有的话就相当于是迁移完成了。

如果出现异常的话,我总结的大概有这么几个情况:

  1. 打开网页白屏(500 错误之类的),可能是 Nginx 配置问题或者网站目录权限设置问题
  2. 可以看到 NextCloud 相关的提示但是不是维护通知,可能是存在 NextCloud 的配置问题,比如数据库配置错误,data 数据目录配置不对等,可以看下 NextCloud data 目录下的日志有没有记录到错误信息
  3. NextCloud 目前还不支持 PHP 8.1,如果使用 PHP 8.1 运行 NextCloud 的话,网页必会出现不支持的 PHP 版本提示

结束

差不多写到这里该说的都说完了,只要在上面的新服验证这里没有出现什么状况的话,那么就可以根据参考前期准备的说明关闭维护模式了(occ maintenance:mode –off 或者修改配置文件里的的选项为 false),关闭之后整个 NextCloud 的迁移也算是完成了,后面怎么处理老机子就看大家自己了。如果说还需要注意什么的话,那就是换了域名的记得修改客户端的同步配置文件,因为里面会保存同步所使用的域名,当然你要是不介意再完整同步一遍目录的话,直接在客户端重新添加新域名所属的账号也是可以的。

PS:文章特色图片与正文无关,是在这里找到的:https://yande.re/post/show/949366 不过源不是 Yande.re 的,是一个游戏的图,虽然咱没玩过不过还是提一下吧,毕竟咱白嫖图片也没贡献啥:https://nikke-jp.com

文章标题:[Debian][NextCloud]关于 NextCloud 备份迁移&更换域名的一点经验分享(写于:20220404)
本文作者:希卡米
链接:https://hikami.moe/master/program/4223.html

如非文内特别说明,博客内作品均默认采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
知识共享许可协议

评论

  1. 1 年前
    2023-2-03 14:39:21

    我发现更换域名后有一些文件无法访问。似乎是因为这些文件仍关联了旧的域名。

    • 希卡米
      博主
      Bensz
      1 年前
      2023-2-04 0:07:16

      不知道你说的是什么样的文件,NextCloud 官方文档是说不支持完全替换域名的(说是 APP 可能不支持),我当时是两个新旧域名都在生效的情况下测试倒是没什么问题,不过后来因为迁移数据使用新 S3 提供商所以还是全新安装了一次。(/ω\)

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇