在 AWS 上为 WooCommerce 创建可靠的生产和暂存环境





0/5 (0投票)
WooCommerce 实际暂存环境的创建指南
引言
每个开发者在处理 WordPress 及其电子商务插件 WooCommerce 时都会面临重大挑战。在网店中,产品会不断添加,订单也会不断下达。同时,您的开发团队正在开发新功能,需要一种方法来测试他们的更改而不中断在线网站。理想情况下,您需要为“生产”商店和“暂存”环境分别设置服务器,以便在新功能可以独立测试。但是,如何同步这两个环境,确保无缝的开发过程和高质量的用户体验呢?
挑战在于 WordPress 的固有设计。WordPress 将不同类型的数据,如产品、订单和帖子,存储在共享表(如 wp_posts
和 wp_postmeta
)中。因此,如果开发人员尝试将更改推送到生产网站,他们将面临冲突,因为这些共享表会同时发生更改。
在本指南中,我们将介绍一个可靠的流程,用于在 Amazon Web Services (AWS) EC2 上为您的 WooCommerce 网站设置短期暂存环境并维护一个强大的生产应用程序。
必备组件
在本文中,我将描述如何在 AWS 上设置托管环境,而不是如何设置 WooCommerce 网站或配置 Web 服务器。我假设您已经知道如何进行这些操作。
AWS 术语
- EC2 (Elastic Cloud Compute) 是 AWS 用于管理虚拟专用服务器 (VPS) 的服务。运行在 EC2 上的 VPS 通常被称为“实例”。
- EBS (Elastic Block Storage) 卷是在 EC2 实例中使用的主要存储设备。它们相当于您计算机中的硬盘。
- 可以基于卷创建快照。它们是包含卷上完整数据集的异地备份。反过来,您可以基于快照创建新卷。
- 密钥对是一对私钥和公钥,用于代替密码访问您的 EC2 实例。
步骤 1:构建生产环境
创建 EC2 实例:首先登录到您的 AWS 管理控制台。然后,导航到 EC2 控制面板,然后点击 **启动实例**。
根据您的喜好为服务器命名;名称仅供您参考。选择一个操作系统。我通常选择 Ubuntu,因为它最常用,并且在线上有最多的相关知识资料。保持架构为 64 位 (x86)。
生成一个新的密钥对。您可以将所有设置保留为默认值。一个密钥文件将下载到您的计算机,稍后您将需要它来访问服务器。
选择实例类型。这是一个棘手的问题,因为没有哪条规则规定哪种实例适合您的商店,因为资源使用情况取决于您的商店的构建方式以及您的 Web 服务器的配置方式。但不用担心,您以后可以更改!“t3”是一个出色的通用系列,所以我通常会选择其中一个。对于一个平均每天有 500 名访客的中小型网店,我会从“t3.medium”开始。
在 **网络设置** 中,创建一个新的安全组,并允许 SSH、HTTP 和 HTTPS 流量。
最后,配置存储—20 GiB 的“gp3”存储适合大多数中型 WooCommerce 商店。不用担心,如果磁盘空间不足,以后可以增加。请记住,在 AWS 上,您不需要在服务器上存储备份。您可以将备份存储为快照,这会便宜很多。
现在,您可以启动服务器。等待实例状态变为“运行中”。您可以使用 SSH 连接到服务器。如果您选择 Ubuntu 作为您的操作系统,用户名将是“ubuntu”,IP 地址可以在下方面板中找到。您还需要之前下载的密钥对。
ssh -i /path/my-key-pair.pem ubuntu@18.194.234.218
设置您的网站。如果您想将文件从本地计算机复制到服务器,您可以使用 SFTP 客户端,因为大多数现代 SFTP 客户端都支持使用密钥对进行身份验证。
步骤 2:创建暂存环境
创建相同的 EC2 实例:按照上述过程创建生产环境的克隆。重用您之前创建的密钥对和安全组。
当您的暂存服务器启动并运行时,您需要做的第一件事是将其关闭。
在 **弹性块存储** 下,转到 **卷** 菜单。选择附加到生产服务器的卷,然后创建一个快照。
转到 **快照** 菜单,等待快照完成,这可能需要一分钟。标记快照,然后从中创建一个卷。
将卷放置在与您的暂存服务器相同的可用区中至关重要。
选择当前附加到暂存服务器的卷,然后将其分离。分离后,您可以删除此卷。
选择新创建的卷,然后在操作菜单中点击“**附加卷**”。
将您的设备命名为 /dev/sda1,因为这是 Ubuntu 上的默认引导设备。这在不同的发行版上可能有所不同。
启动您的暂存服务器,它现在应该与您的生产服务器相同。要访问此服务器,您需要更改域名。您需要 SSH 到此服务器,如前所述。
要分配一个测试域名,请使用 WordPress CLI
wp option update home http://your-test-domain.com
wp option update siteurl http://your-test-domain.com
您可能还需要在 Web 服务器和 DNS 配置中更改此设置。
步骤 3:开发和测试
现在轮到您在暂存服务器上工作了。请记住,您可以通过从原始快照重新创建卷来随时重置状态!
步骤 4:将生产环境切换到维护模式
当您完成新功能的开发后,您应该将这些功能推送到生产环境。在进行任何迁移之前,将生产环境切换到维护模式。这可以确保在迁移过程中不会产生新订单或进行更改,从而避免数据丢失。
WooCommerce 内部没有内置的切换按钮可以使网站进入维护模式。您可以配置您的 Web 服务器显示维护页面或使用插件。
步骤 5:迁移数据
在软件开发中,通常我们会将已部署到暂存环境的更改推送到生产环境。但是,由于 WordPress 和 WooCommerce 的固有设计,这会很困难,我在介绍中已经提到过。更简单的方法是获取生产环境中的更改,将它们重新应用于当前的暂存服务器,然后将整个内容迁移到生产环境。
让我们考虑一下生产环境中的这些更改
- 可能会有新订单。
- 现有订单的状态可能会发生变化。
- 可能会添加新产品。
- 可能会向产品添加新媒体(图像)。
- 现有产品可能会被编辑。
有许多插件可以将这些实体从一个 WooCommerce 网站迁移到另一个。但是,如果您想自动化此过程,可以使用 WordPress REST API、WooCommerce REST API、SQL 脚本和 SCP(安全 copy)来编写自己的代码。
步骤 6:更新生产服务器
您现在可以通过从暂存卷创建快照并从该快照创建新卷来更新您的生产服务器。此过程与上述过程相同。通过将此新卷附加到您的生产服务器,生产环境将使用在暂存环境中进行的和已测试的所有更改进行更新。
由于生产服务器现在是暂存服务器的克隆,您必须在 WordPress 和 Web 服务器设置中设置生产域名。
wp option update home http://your-production-domain.com
wp option update siteurl http://your-production
步骤 7:善后清理
此过程的最后一步涉及更新后的清理。终止暂存 EC2 实例并删除暂存 EBS 卷。这些暂存环境的优点在于它们是暂时的,即它们仅存在于开发冲刺的持续时间内。
大功告成!借助 AWS 和 EC2,您可以高效地设置临时暂存环境,并为您的 WooCommerce 网站维护一个强大的生产应用程序。此过程的真正魅力在于其可重复性,适用于每个开发冲刺,保证了安全开发和部署过程。祝您获得更顺畅的 WooCommerce 体验!
历史
- 2023 年 6 月 23 日:初版
- 2023 年 6 月 23 日:已修复图片