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