我有一个网站在 VPS 实例上启动并运行Vultr运行 Ubuntu 18.04LTS,一切都很好。我想在恢复会话中尝试实例的快照,以防系统出现问题。所以我创建了一个新的实例并按预期部署了该快照,但在将 DNS 更改为新 IP 地址后,我无法查看我的网站error establishing a database connection
。因此,在这种情况下,恢复会话失败,没有实现其目标。我联系了支持团队,但他们只指出,我必须在快照恢复后更正新实例上的一些网络配置,但没有关于如何在 Ubuntu 18.04LTS 上执行此操作的具体说明。我咨询了他们的文档,但没有提到在 Ubuntu 180.04LTS 服务器中netplan
替换的新网络设置。ifupdown
让我逐一查看文档,我注意到了以下几点:
- 在我的新实例中,该
/etc/udev/rules.d/70-persistent-net.rules
文件是空的,里面什么都没有。 - 当我检查内容时,发现
/etc/network/interfaces
里面没有 IP 地址,而是出现了这条注释掉的消息。
# 此系统上的 ifupdown 已被 netplan(5) 取代。请参阅 # /etc/netplan 了解当前配置。# 要在此系统上重新启用 ifupdown,您可以运行:# sudo apt install ifupdown
因此我检查了/etc/netplan
设置,发现有两个文件:
01-netcfg.yaml
,且为空。
另一个10-ens3.yaml
文件里面有这个设置:
network:
version:2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
因此,鉴于此,我对此设置完全不了解。我觉得它与新netplan
系统无关。因此,如果您能帮助我在这种情况下正确配置网络以恢复我的实时网站,我将不胜感激。
答案1
@MichaelHampton 提供的提示促使我在设置 WordPress 端进行调试操作。是的,我的复制网站现在再次启动并运行,并在更改 DNS 后准备好公开。但是,我现在不打算这样做,因为我只是想研究这种方法,以便在我的系统发生问题时可以随时使用。顺便说一句,这为我开辟了如何在不同的VPS 服务器。是的,有人可能会认为它的缺点是你必须为该服务器付费,但没关系,这将促使我尽快进行开发,只要我能负担得起新服务器的费用(每小时支付相对便宜)。另一个优点是,我可以其他的在进入生产站点之前,访问开发站点并征求他们的意见。
我所要做的就是告诉他们新的 IP 地址和域名,当然,他们会以/etc/hosts
这种方式在他们的机器上进行相应的编辑:
[new-ip-address-no-brackets-pls] example.com www.example.com
他们可以清除浏览器上的浏览数据,然后从当前实时站点的快照中查看部署的开发站点,而所有其他宇宙都以原始状态查看同一站点,这对于网站开发来说是多么美妙的设置啊!
这绝对是我开发时首选的方法。我不知道还有什么方法可以轻松超越这个,如果有人愿意分享一些,我会很高兴。
解决方案
只需将找到的“IP 地址”更改为新实例上新指定的 IP 地址即可:-wp-config.php
/etc/mysql/my.cnf
两个地点host
和bind-address
/etc/ee/ee.conf
但这可能不需要现在最棘手的部分是编辑 MySQL,我使用的是 MariaDB。首先,即使完成了上述所有替换,您也无法像以前一样登录到 mysql,无论如何我都不会被授予在此新服务器上登录 mysql 的权限(不知道为什么)。因此,一种解决方法是作为 localhost 登录,这样可以节省场景:
mysql -u root -h localhost -p
然后您必须登录:登录后您可以对所有数据库进行替换,users@old-ip-address
例如user@new-ip-address
:
mysql> RENAME USER root@[old-ip-add-without-square-brackets] TO root@[new-ip-address-again-without-square-brackets];
确保替换所有用户的 IP 地址,最后执行以下操作:
mysql> FLUSH PRIVILEGES;
然后我就可以查看我新恢复的实例及其所有站点。如果您有多个站点,显然您必须在相应的文件中更改 IP 地址wp-config.php
,下面的所有其他替换/etc/
都集中在服务器上,与站点无关。