基于亚马逊云科技无服务器服务快速搭建电商平台——部署篇

受疫情影响消费者习惯发生改变,刺激了全球电商行业的快速发展。除了依托第三方电商平台将产品销售给消费者之外,企业通过品牌官网或者自有电商平台销售商品也是近几年电商领域快速发展的商业模式。独立站电商模式可以进行多方面、全渠道的互联网市场拓展,推广所带来的流量、品牌印象、知名度等都完全属于电商企业自己所有,从而逐步建立品牌优势发展私域流量。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

对比第三方平台卖家,自己搭建独立站需要完成建站、流量运营、订单履约、用户运营全链路的工作。如何快速建站成为电商企业需要考虑的第一个问题,目前建站主要有三种方式,每个企业不同的需求和技术现状决定各自适合的建站方式。第一种是全自主开发的方式,虽然可以实现最大程度的自定义和差异化但是需要投入大量研发时间和成本;第二种是选择 SaaS 系统快速构建电商平台,建站服务商会为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,SaaS 建站确实是最便捷的方式,但是随着电商平台规模的壮大可能会发现一些弊端,比如功能可扩展性,数据信息安全以及佣金。第三种是基于开源软件开发电商平台,开源的电商框架会具备库存管理、商品列表、购物车、下单、愿望清单以及支付这些必需的基础功能。开源组件的优势就在于灵活性强,企业可以根据实际运用需求自主二次开发功能板块构建自定义的电商平台,满足不同阶段的需求。这种建站方式降低了开发门槛,也提高了自由度和保证了数据安全,但是需要自行管理底层基础设施保证平台的稳定性。使用 Serverless 的架构来托管应用可以很大程度解决这个痛点,用户只需要管理应用代码而不需要运维底层的资源,另外 Serverless 的部署架构对于关注成本效益的用户来说是一个很好的起点。

本文主要会讲解如何利用亚马逊云科技 Serverless 服务 Lambda 做计算资源来托管开源的 WooCommerce,Lambda 以及其他无服务器服务内置功能扩展和弹性可以省去运维的烦恼,同时按运行时间计费的粒度提高了成本效率。为了帮助客户快速上手,我们还提供预定义的 CloudFormation 模版能够一键部署所有资源,包括网络环境,计算资源,数据库等,在两个小时内就能搭建起一个电商平台。

WooCommerce 简介

WooCommerce 是一个基于 WordPress.org 的开源的电商网站插件,它可以帮助企业在 WordPress 的基础上快速的构建一个在线电商平台,提供商品列表,购物车,下单和支付等电商相关功能。WooCommerce 在全球有超过1000万的下载量,在访问两超过百万的网站中 WooCommerce 占了27%,并且用户数量还在持续增长中。庞大的用户群也确保了 WooCommerce 拥有非常活跃的互动社区。这也意味着,你将加入互联网上增长最快的开源社区之一。此外,使用 WooCommerce 也就等于你可以使用超过50,000个 WordPress 插件,包括很多专门为 WooCommerce 设计的插件。 简洁明了的店铺风格也是电商平台给予消费者直观的体验之一,WooCommerce 具有丰富主题模版。所有 WordPress 主题都适用于 WooCommerce 插件,卖家可以从大约1000个 WooDesign 主题中自由选择。这一点较 Magento 和 Shopify 更有优势。此外,卖家还可以从 ThemeForest 等板块获取精美主题。 为了覆盖更多终端用户电商平台需要考虑到移动端的兼容,WooCommerce 在设计时就加入了移动友好特性,所以无论访客使用哪种设备浏览店铺,它都可以平稳地运行并完美地呈现商品。同时 WooCommerce 提供了很多分析工具和店铺管理功能。通过商品页可以看到单个商品的销售量,分类页则能以商品的类别进行数据统计。当然,你也可以根据日期和不同品牌来统计每日和每月的销售量。 WooCommerce 默认提供 PayPal 和 Stripe 付款。不过,由于 WooCommerce 是一个开源平台,因此许多区域性的或者不是特别大众的第三方支付服务也已为 WooCommerce 建立了集成(P.S.你也可以找到微信支付和支付宝的扩展插件)。同时,它也支持主要的信用卡、借记卡、网上银行等。 WooCommerce 的免费易用,轻量级和可扩展性成为大量独立站建站的第一选择。由于 WooCommerce 是在 WordPress 基础上安装插件做电商平台,所以第一步就需要安装部署 WordPress,比如创建计算实例 Amazon EC2和数据库 RDS,还有网络 VPC 和安全等基础设施的规划,然后在域名托管处比如 Route53将自己的购买的域名解析到对应的资源上。如果需要进一步提高用户访问速度,边缘加速服务 Amazon CloudFront 也是必不可少的部分,另外架构的高可用和弹性也会影响到用户体验,可以通过负载均衡器 ELB 和弹性扩容组 AutoScaling 来实现。 上述参考架构说明了在亚马逊云上部署 WordPress 和 WooCommerce 的完整最佳实践。

image.png

  • 用户请求从 Amazon CloudFront (1) 中的边缘缓存进来,Amazon CloudFront 将内容缓存在最终用户附近的边缘节点,以加快用户访问速度。
  • 动态请求回源到 Application Load Balancer (4)转发到 WordPress 的 EC2实例,边缘节点没有命中的静态请求回源到 S3存储桶。
  • WordPress 的 EC2实例配置为 Auto Scaling 组运行(6)。
  • ElastiCache 集群 (7) 缓存频繁查询的数据以加快响应速度。
  • 使用 Amazon Aurora MySQL 实例(8) 托管 WordPress 数据库。
  • WordPress 的 EC2实例通过每个可用区中的 EFS 挂载目标共享 EFS 文件系统实现数据共享 (9)。

Serverless-WooCommerce 建站方案架构

为了解决用户部署基础设施的工作,本文提供的 Serverless-WooCommerce 一键部署方案是基于亚马逊云无服务器服务 Amazon Lambda 来部署 WordPress 和 WooCommerce。对比前文提到基于服务器部署 WordPress 和 WooCommerce,Serverless-WooCommerce 主要是用 Lambda 来实现动态请求的处理,替换了原有架构中的负载均衡器 ELB 和弹性扩展组 Autoscaling,架构图详情如下:

image.png

  1. Amazon Route53 负责域名的解析,Amazon CloudFront通过边缘节点加速用户的访问。
  2. 用户的动态请求回源到 Lambda URL 触发后续 Lambda 运行,边缘节点没有命中的静态请求回源到 S3存储桶。
  3. Lambda Adapter 接收到 Lambda 事件并将其转换成 Wordpress 能处理的 HTTP 请求。
  4. 数据库层使用 ElastiCache 集群缓存频繁查询的数据以加快响应速度,使用 Amazon Aurora MySQL 实例做数据库。
  5. 通过每个可用区中的 EFS 挂载目标将 Amazon EFS 文件系统挂载到Lambda 本地目录,实现 WooCommerce 的共享文件系统。

快速部署 WooCommerce on serverless

通常我们会使用 GUI 和 CLI 来创建和管理云资源,但是随着系统的复杂度提升,底层资源的增加,手动管理会成为一个噩梦,一个很小的人为失误可能导致系统崩溃。 本方案采用 Amazon 原生的IaC(Infrastructure as Code)工具,CDK(Cloud Development Kit)部署云资源。CDK 是 cloudformation 的高级封装,可以通过高级语言去定义云资源。使用 CDK,通过代码的方式(而非手动流程)来管理云资源,可以确保每次置备的环境都完全相同,并避免发生未记录的临时配置更改。CDK 也可以和 DevOps 结合起来。 本解决方案通过 CDK 一键部署所有资源,为减少实验成本,在 CDK 模板里拉起的 ElastiCache 和 RDS aurora 实例规模很小,客户可自行修改 CDK 模板,调整资源规模以适应生产。

前提

  • 具有 亚马逊云科技 账户管理员访问权限的 IAM 用户身份。
  • 如果您在本地运行本项目需要提前安装 Amazon CDK 与 CLI,您可以选择使用 Cloud9。另外需要注意 AWS CLI 版本需要在19 以上,Amazon CDK 版本需要在 2.24 以上。
  • 一个可用于公网访问的域名

部署无服务器电商网站基础设施

  1. 获取部署代码
git clone <https://github.com/aws-samples/serverless-WooCommerce-workshop.git>
  1. 初始化 CDK 项目
#通过 Cli 获取账户相关信息
aws sts get-caller-identity
#填入上述命令返回的 Account-id 替换以下命令的 ACCOUNT-NUMBER
`cdk bootstrap aws``:``//<ACCOUNT-NUMBER>/<REGION>`

3.配置环境变量

  1. 创建环境变量文件:复制 cdk 目录下的隐藏文件.env.example,重命名为.env
  2. 替换示例文件中的域名:用提前准备好的可公开访问的自定义域名,替换如下配置中的域名部分,该域名需要在 route 53里面有托管区
  3. 替换配置文件中对应的密钥:访问网站: https://keys.live.lambdashop.xyz/ 生成随机密钥,并替换配置文件中对应的密钥
`#域名替换部分
# a DNS domain hosted on Route53`
`ROUTE53_HOSTEDZONE``=<``site``.``example``.``com``>`
`# the name for your site`
`ROUTE53_SITENAME``=<``site``.``example``.``com``>`
`# specifyWordPress environment: development, staging or production.`
`WP_ENV``=``production`
`# URL forWordPress home`
`WP_HOME``=``https``:``//<site.example.com>`
`# URL forWordPress root. Bedrock is under /wp`
`WP_SITEURL``=``https``:``//<site.example.com>/wp#密钥替换部分
# Generate your keys with 'openssl rand -base64 48'
AUTH_KEY="replace me..."
SECURE_AUTH_KEY="replace me..."
LOGGED_IN_KEY="replace me..."
NONCE_KEY="replace me..."AUTH_SALT="replace me..."
SECURE_AUTH_SALT="replace me..."
LOGGED_IN_SALT="replace me..."
NONCE_SALT="replace me..."
`

4.部署网站,大约需要25分钟

cd cdk
npm install
make diff
make deploy

5.等到返回 Stack ARN 和对应资源的访问链接表示部署完成

安装配置 WordPress 与 WooCommerce

  1. 访问上一步设定的自定义域名再填入网站标题及管理员密码等信息,点击安装 WordPress

  2. 待 WordPress 安装完成之后点击 Log In 登陆到管理控制页面

image.png

  1. 点击控制台左侧 Appearance 根据自己的喜好选择,以安装 Blocksy 为例

image.png

  1. 安装好之后 WordPress 页面左边导航条会出现 Blocksy,点击之后在 starter sites 浏览页面的基本样式

  2. 安装必要的 Blocksy WordPress 插件,点击控制台左侧 plugins,点击安装 Stackable – Gutenberg Blocks,同样的操作安装 WPForms 用于留言板 , Query Monitor 则可以帮助我们在开发环节调试查看当前页面性能,最后安装 WooCommerce 插件

image.png

  1. 安装激活 WooCommerce 后会跳转到 WooCommerce 网站配置页面,根据实际情况配置商家地址,所售物品类别与数量等。然后在 WordPress 管理页面左边导航条继续配置 WooCommerce 商店信息,包括商品信息,支付方式,税率,发货方式等等。

  2. 使用 Blocksy 配置 WooCommerce,使其成为一个可用的电商网站。

a. 删除 wordpress已有页面, 点击页面左侧 Pages => 全选 => Move to Trash => Apply

b. 导入 Blocksy 预留主题,点击页面左侧 Blocksy => Starter Sites => Gadgets => import

c. 取消选择 Install Child Theme,同样的 WPForms 和 Stackable 已经安装好了,这里我们取消选中,然后下一步。

d. 等待几分钟 Blocksy 安装完成,点击 View Site 查看我们 WooCommerce 网站,可以看到我们主页已经有很多商品,还可以下单测试网站功能,下单完成之后还可以在后台看到订单详情。

image.png

至此整个 WooCommerce 站点配置已经完成,本文以 Blocksy 为例自定义了整个网站主题,该站点具有下单,支付,订单管理功能。

总结

本文介绍的无服务器建站方式提供了快速构建电商独立站的一种方式,非常适合初期建站的用户使用。利用 Amazon 的 Serverless 服务 Lambda,无需管理 WordPress 的基础设施,自动扩缩容以应对流量高低峰。数据库和缓存也使用 Amazon 托管服务,最大程度减少运维工作量。同时提供 CDK 代码来部署和管理整套资源,让您可以方便的通过修改 CDK 代码来进行扩展。

附录

基于亚马逊云科技无服务器服务快速搭建电商平台——性能篇

本篇作者

image.png

汪其香

Amazon 解决方案架构师,负责基于 Amazon 云计算方案的架构咨询和设计实现,具有丰富的解决客户实际问题的经验,同时热衷于深度学习的研究与应用。

image.png

许昌月

Amazon 解决方案架构师,负责基于 Amazon 的云计算方案架构咨询和设计,实施和推广,擅长软件开发,具有丰富的解决客户实际问题的经验。

文章来源:https://dev.amazoncloud.cn/column/article/6309bb2376658473a321ffd1?sc_medium=regulartraffic&amp;sc_campaign=crossplatform&amp;sc_channel=CSDN 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/111410.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git分布式版本控制系统与github

第四阶段提升 时 间&#xff1a;2023年8月29日 参加人&#xff1a;全班人员 内 容&#xff1a; Git分布式版本控制系统与github 目录 一、案例概述 二、版本控制系统 &#xff08;一&#xff09; 本地版本控制 &#xff08;二&#xff09;集中化的版本控制系统 &…

DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件

操作系统内核与云基础软件 鲲鹏软件构成硬件特定软件 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 操作系统内核Linux系统调用Linux进程调度Linux内存管理Linux虚拟文件系统Linux网络子系统Linux进程间通信Linux可加载内核模块Linux设备驱动程序Linu…

Vue 项目性能优化 — 实践指南

前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术&#xff0c;帮我们处理了前端开发中最脏最累的 DOM 操作部分&#xff0c; 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM&#xff1b;但 Vue 项目中仍然存在项目首屏优化、Webpack 编译配置优化等问题&#xff0c;所…

自然语言处理(四):全局向量的词嵌入(GloVe)

全局向量的词嵌入&#xff08;GloVe&#xff09; 全局向量的词嵌入&#xff08;Global Vectors for Word Representation&#xff09;&#xff0c;通常简称为GloVe&#xff0c;是一种用于将词语映射到连续向量空间的词嵌入方法。它旨在捕捉词语之间的语义关系和语法关系&#…

Python小知识 - Python中的多线程

Python中的多线程 线程是进程中的一个执行单元&#xff0c;是轻量级的进程。一个进程可以创建多个线程&#xff0c;线程之间共享进程的资源&#xff0c;比如内存、文件句柄等。 在Python中&#xff0c;使用threading模块实现线程。 下面的代码创建了两个线程&#xff0c;一个输…

2023.8.29 关于性能测试

目录 什么是性能测试&#xff1f; 性能测试常见术语及其性能测试衡量指标 并发 用户数 响应时间 事务 点击率 吞吐量 思考时间 资源利用率 性能测试分类 基准性能测试 负载性能测试 压力性能测试 可靠性性能测试 性能测试执行流程 什么是性能测试&#xff1f; 性…

实用的面试经验分享:程序员们谈论他们的面试历程

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

docker 学习-- 04 实践2 (lnpmr环境)

docker 学习 系列文章目录 docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 docker 学习-- 03 环境安装 docker 学习-- 04 实践 1&#xff08;宝塔&#xff09; docker 学习-- 04 实践 2 &#xff08;lnpmr环境&#xff09; 文章目录 docker 学习 系列文章目录1. 配…

财务数据分析?奥威BI数据可视化工具很擅长

BI数据可视化工具通常是可以用户各行各业&#xff0c;用于不同主题的数据可视化分析&#xff0c;但面对财务数据分析这块难啃的骨头&#xff0c;能够好好地完成的&#xff0c;还真不多。接下来要介绍的这款BI数据可视化工具不仅拥有内存行列计算模型这样的智能财务指标计算功能…

flutter 上传图片并裁剪

1.首先在pubspec.yaml文件中新增依赖pub.dev image_picker: ^0.8.75 image_cropper: ^4.0.1 2.在Android的AndroidManifest.xml文件里面添加权限 <activityandroid:name"com.yalantis.ucrop.UCropActivity"android:screenOrientation"portrait"andro…

Django基础7——用户认证系统、Session管理、CSRF安全防护机制

文章目录 一、用户认证系统二、案例&#xff1a;登陆认证2.1 平台登入2.2 平台登出2.3 login_required装饰器 三、Django Session管理3.1 Django使用Session3.1.1 Cookie用法3.1.2 Session用法 3.2 案例&#xff1a;用户登录认证 四、Django CSRF安全防护机制 一、用户认证系统…

3d激光slam建图与定位(2)_aloam代码阅读

1.常用的几种loam算法 aloam 纯激光 lego_loam 纯激光 去除了地面 lio_sam imu激光紧耦合 lvi_sam 激光视觉 2.代码思路 2.1.特征点提取scanRegistration.cpp&#xff0c;这个文件的目的是为了根据曲率提取4种特征点和对当前点云进行预处理 输入是雷达点云话题 输出是 4种特征点…

透过源码理解Flutter InheritedWidget

InheritedWidget的核心是保存值和保存使用这个值的widget&#xff0c;通过对比值的变化&#xff0c;来决定是否要通知那些使用了这个值的widget更新自身。 1 updateShouldNotify和notifyClients InheritedWidget通过updateShouldNotify函数控制依赖其的子组件是否在Inherited…

vue cli构建的项目出现 Uncaught runtime errors

使用 vue/cli 脚手架构建的项目&#xff0c;在 npm run dev 运行后&#xff0c;页面出现 Uncaught runtime errors 报错遮罩层&#xff0c;如下图所示。 报错原因 这种错误通常是运行时出的问题&#xff0c;可能是网络错误&#xff0c;可能是变量未定义等等。 这种错误默认在开…

七、Kafka-Kraft 模式

目录 7.1 Kafka-Kraft 架构7.2 Kafka-Kraft 集群部署 7.1 Kafka-Kraft 架构 左图为 Kafka 现有架构&#xff0c;元数据在 zookeeper 中&#xff0c;运行时动态选举 controller&#xff0c;由controller 进行 Kafka 集群管理 右图为 kraft 模式架构&#xff08;实验性&#xff…

华为数通方向HCIP-DataCom H12-821题库(单选题:161-180)

第161题 以下关于 URPF(Unicast Reverse Path Forwarding) 的描述&#xff0c; 正确的是哪一项 A、部署了严格模式的 URPF&#xff0c;也能够可以同时部署允许匹配缺省路由模式 B、如果部署松散模式的 URPF&#xff0c;默认情况下不需要匹配明细路由 C、如果部署松散模式的…

Java IDEA Web 项目 1、创建

环境&#xff1a; IEDA 版本&#xff1a;2023.2 JDK&#xff1a;1.8 Tomcat&#xff1a;apache-tomcat-9.0.58 maven&#xff1a;尚未研究 自行完成 IDEA、JDK、Tomcat等安装配置。 创建项目&#xff1a; IDEA -> New Project 选择 Jakarta EE Template&#xff1a;选择…

RT-Thread在STM32硬件I2C的踩坑记录

RT-Thread在STM32硬件I2C的踩坑记录 0.前言一、软硬件I2C区别二、RT Thread中的I2C驱动三、尝试适配硬件I2C四、i2c-bit-ops操作函数替换五、Attention Please!六、总结 参考文章&#xff1a; 1.将硬件I2C巧妙地将“嫁接”到RTT原生的模拟I2C驱动框架 2.基于STM32F4平台的硬件I…

Git小白入门——了解分布式版本管理和安装

Git是什么&#xff1f; Git是目前世界上最先进的分布式版本控制系统&#xff08;没有之一&#xff09; 什么是版本控制系统&#xff1f; 程序员开发过程中&#xff0c;对于每次开发对各种文件的修改、增加、删除&#xff0c;达到预期阶段的一个快照就叫做一个版本。 如果有一…

iOS开发Swift-1-Xcode创建项目

1.创建项目 双击Xcode App&#xff0c;选择Create a new Xcode project。 选择创建一个iOS普通的App项目。选择Single View App&#xff0c;点击Next。 填写项目名&#xff0c;组织名称等&#xff0c;点击next。 选择好文件的存储路径&#xff0c;点击create。 2.为前端添加组件…