抱歉,如果这个问题已经被问过,我搜索了一下,但没有看到我计划的确切场景(或者我错过了,但我想确保我做对了,因为我以前从未做过)。
我还在使用 18 版本(我从那里开始;我从未升级过 Linux 操作系统,只进行过安全更新),所以很快我将升级到 22 版本。我在这里读到的所有内容都表明,迁移到新的安装比升级现有安装要明智得多,因为可能存在许多随机问题,这些问题可能会发生也可能不会发生,但风险不值得冒,因为如果它们确实发生了,那将是一件毫无意义的麻烦事。
我确实阅读了本指南 https://meta.discourse.org/t/move-your-discourse-instance-to-a-different-server/15721,但它指的是从某个服务器迁移到 DigitalOcean(或反之亦然),这使得快照不适用,而我计划从现有的 DigitalOcean Droplet 迁移到一个新的 Droplet(我已经看到多个参考资料表明这样做效果很好,并且是升级的理想选择)。
所以,关于 DO 到 DO 的迁移,我的问题是,我是否可以关闭我的 Droplet,拍摄快照,在新升级的 Ubuntu 上启动一个新的 Droplet,加载快照,然后就完成了(调整域名的 DNS 记录等)?基本上可以绕过指南中详细说明的“完全重新安装 Discourse”。根据我对快照的理解,它们应该与 Droplet 上的安装 1:1 相同,而备份专门用于您的 Discourse 设置,这需要进行完全安装才能实际利用。我的理解正确吗?除了更长的停机时间之外,还有什么缺点吗?
简而言之:我可以直接拍摄快照,创建新的升级版 Droplet,加载快照然后完成吗?
Stephen
(Stephen)
2023 年4 月 16 日 09:14
2
DO 快照包含操作系统版本。恢复快照将回滚操作系统。
你的实际选择是移动备份,或者 rsync /var/discourse 并手动重新安装 docker。
2 个赞
Jagster
(Jakke Lehtonen)
2023 年4 月 16 日 09:15
3
希望我没有完全错,但从 18 恢复快照到 22 会将你退回到 18,因为快照是 整个液滴的 1:1 副本。
对我来说,启动一个全新的液滴总是最后的选择,因为我需要安装 Ubuntu(或任何其他操作系统)所需的一切,包括邮件系统等。
我完全确定这对于那些会的人来说只是另一个微不足道的小任务,但在 10 年后,我从未学会如何轻松地启动一个新的功能性液滴。
2 个赞
安装 Discourse 大约需要 30 分钟?
只需备份您的站点和 app.yml,在新操作系统版本上创建一个新的 droplet,将 IP 重新分配给您的新 droplet(以便域名指向正确的新位置),安装 Discourse(您可以退出向导并更新 app.yml,然后重建),然后导入您的备份。
整个过程应该在一个小时内完成。
此过程永远不会触及您现有的 droplet,因此如果一切都失败了,回滚会很容易吗?
2 个赞
Ed_S
(Ed S)
2023 年4 月 16 日 17:48
5
如果从一个LTS版本操作系统迁移到下一个版本,我期望过程会相当顺利。所以,我可能会备份——当然——为了安全起见下载它——当然——然后尝试操作系统更新。如果不行,我就可以尝试一个全新的操作系统。
但这样做会增加论坛的停机时间。
我有点不愿意迁移到一个全新的实例,主要是因为我需要更新DNS并等待其传播。虽然我看到我上面的帖子说我可以带走我的IP地址,这很好,这也消除了我的顾虑。
事实上,我将完全改变我的答案,如果我能将我的IP地址带到一个新的实例,那将是首选。可能并非所有提供商都允许这样做。可能对于某些提供商来说,你会失去一个免费的IP地址并开始为IP付费,因为它已经移动了,即使它没有改变。
1 个赞
Stephen
(Stephen)
2023 年4 月 16 日 18:11
6
Ed S:
我需要更新DNS并等待其传播。
一个非常简单的缓解方法是设置一个非常低的TTL(或将名称服务器切换到一个支持此功能的服务器)。这样一来,记录的过期时间就会比重建所需的时间短。
2 个赞
pfaffman
(Jay Pfaffman)
2023 年4 月 18 日 07:48
7
您可以使用静态 IP(我不记得 DigitalOcean 现在称它们为什么)。在网络中,您可以获取一个新的 IP 地址,然后将其映射到旧的 Droplet。然后,您可以更改 DNS 并让其传播。当您准备好迁移到新服务器时,只需将 IP 指向新服务器即可。这会立即发生,如果出现问题,您可以随时切换回来。
1 个赞
Jakke Lehtonen:
希望我没有完全错,但从 18 恢复到 22 的快照会将你还原到 18,因为快照是 整个液滴的 1:1 副本。
对我来说,启动一个全新的液滴总是最后的选择,因为我需要安装 Ubuntu(或任何操作系统)所需的一切,包括邮件系统等。
我完全确定这对那些会的人来说只是另一个微不足道的小任务,但 10 年后我从未学会如何轻松启动一个新的功能性液滴
这说得通,我之前根本没考虑到操作系统迁移的问题。
启动一个新液滴也将是我的最后选择,因为我以前从未迁移过液滴(这是我的第一个),也从未升级过操作系统,但这里几乎所有的指南似乎都推荐这样做,而不是仅仅升级你正在使用的液滴,所以我认为如果两种方式都有风险,而且我两种都没做过,那就不如跟随大多数人的做法。
我的想法是,如果升级完全搞砸了,现在你就有尝试的停机时间,你还有在被迫尝试修复(或放弃并创建一个新的)时的停机时间,而新液滴可能无法工作,而你的原始液滴仍然运行并完好无损。我不知道它为什么会搞砸,但在这里搜索元信息,有很多人说它搞砸了,或者有人说他们永远不会推荐这种方式(再加上这里的官方指南和 DigitalOcean 的建议)。
我想我这个周末就试试吧。
保留 IP(据称以前称为浮动 IP)
只是为了让我完全清楚,遵循指南 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
在 5. 安装 Discourse 之后,我可以在那个时候退出向导而不是进行配置,替换我的 app.yml,然后
./launcher rebuild app
然后它应该就可以了?(然后进入管理员界面并确保它已更新/恢复备份)?
正确:如果您创建一个空的 app.yml 文件(例如,在 containers 目录中通过 touch app.yml 命令),然后小心地将您其他服务器的内容粘贴进去,您根本不需要运行 ./discourse-setup。
本周困扰我的一个问题是我的电子邮件设置:请确保您的电子邮件服务不需要您正在调用的确切 IP 地址。如果需要,请务必更新该配置(在您的服务提供商处)。
2 个赞
pfaffman
(Jay Pfaffman)
2023 年4 月 19 日 12:19
11
不过,这是最安全的方法。如果搞砸了,你的旧网站会继续运行。零风险。
有一个关于这个的帖子。你可以复制你的 yml 文件和 let’s encrypt 的东西,甚至可以通过更改本地 DNS 指向新服务器来查看它是否正常工作。
如果你有 S3 上的备份,那么你可以睡个好觉,因为你知道如果有什么地方出了大问题,你可以启动一个新服务器并在大约 30 分钟内恢复备份。
2 个赞
Jay Pfaffman:
不过,这是最安全的选择。如果弄坏了,你的旧网站会继续运行。零风险。
有一个关于这个的帖子。你可以复制你的 yml 文件和 Let’s Encrypt 的配置,甚至可以通过更改本地 DNS 指向新服务器来查看它是否正常工作。
如果你有 S3 备份,那么你可以睡个好觉,因为你知道如果出了什么严重问题,你可以在大约 30 分钟内启动一个新服务器并恢复备份。
我唯一真正的担忧不是迁移它本身,而是完成整个设置过程,并在某个环节搞砸了某个设置,无论是电子邮件服务还是 Let’s Encrypt,并且直到很久以后一切都崩溃了才意识到。显然,如果它能直接读取我的旧 app.yml,那就没问题了。
不太确定这是什么意思,但我不认为它会…我使用的是 Mailgun,并且正在检查那里的所有记录/GoDaddy 中的 DNS,似乎没有任何东西与任何特定 IP 相关联。
好吧,听起来很简单,我这周会试试。也许同时升级到一个更好的 Droplet。
1 个赞
pfaffman
(Jay Pfaffman)
2023 年4 月 19 日 12:50
13
Kartoon:
我认为它没有
你说得对!
我找不到我确信存在的那个主题。简而言之,在你的环境变量设置中配置 S3 备份,通过 /var/discourse 进行 rsync,或者也许只是 SSL、letsencrypt 和 containers 目录,然后重建。