在 AWS 上搭建无服务器静态 WordPress,每天只需 0.01 美元
你可能会觉得这篇文章是标题党,但并非如此。我用 AWS 搭建了一个功能齐全的静态无服务器 WordPress 解决方案,配备了全球 CDN、WAF 和 A 级 SSL 证书,每天只需一美分。它速度快、弹性好、可扩展,而且不像很多 WordPress 网站那样容易受到暴力破解登录攻击。
更重要的是:你也可以做到。它被封装在一个开源的 Terraform 模块中,我真心希望它能凭借其简单易用的特性风靡网络。你可以在不到 30 分钟的时间内从零开始完成设置。
Serverless Static WordPress 能做什么?
Serverless Static Wordpress是 TechToSpeech 的一个社区 Terraform 模块,它只需要一个已注册的域名,并且其 DNS 指向 AWS 即可。
它创建了一个完整的基础架构框架,允许您启动一个临时的、瞬态的 WordPress 容器。然后,您可以像管理任何 WordPress 网站一样登录并对其进行自定义,最后将其发布为静态网站,并通过全球 CloudFront CDN 和 S3 源服务器进行前端部署。完成后,您只需关闭 WordPress 容器,而且几乎无需任何成本。
重点在于极简配置,因为您所需的大部分东西都已按照行业最佳实践预先安装和预先配置,并且运行成本非常高效。
想把现有网站转换成无服务器静态WordPress网站?没问题。
这里的内容很多,所以这篇文章分成了两篇文章:简短版和完整版。如果您想立即上手,请选择简短版;如果您想了解这个解决方案的底层工作原理以及开发过程中的所有工作,请选择完整版。
如果您熟悉 AWS,速度会快很多,但即使这是您第一次使用,简短版步骤也应该能让您立即上手运行。
简短版
在所有这些步骤中,我们将使用示例域名www.peter.cloud。
步骤 0 -创建 AWS 账户。
步骤 1 - 域
在您的 AWS 账户中,为您的域名创建一个 Route53 托管区域。创建完成后,将显示四个指向您新网站的 DNS 名称服务器。
请前往您的域名注册地(可以是 AWS 本身,也可以是其他任何地方),并将 DNS 服务器更新为刚刚创建的四个服务器。
步骤 2 - 工具和凭证
请确保您已安装Terraform、AWS-CLI(需要用户和凭证),并且(最好是)已启动服务的Docker 。
步骤 3 - 代码和计划
请查看项目的GitHub README文件,其中包含大量代码示例,可帮助您快速进行设置和部署。
该模块几乎可以自动完成所有操作,但这里指定了一些额外的资源,可以实现完全无需人工干预的端到端流程。这些资源需要安装 Docker,并使用默认区域和配置文件正确配置 AWS CLI。
执行 Terraform 初始化、规划和应用,然后就可以放松一下,喝杯饮料了。整个端到端创建过程大约需要 10 分钟。除非您操作有误,否则应该不会出现任何错误——但以防万一,请尝试再次运行规划和应用步骤。
第四步 - 启动 WordPress
您在步骤 3 中创建了启动 WordPress 和发布静态网站所需的一切,但它尚未启动。如果您没有添加可选的 Terraform 资源来触发 CodeBuild 作业,则需要前往所选区域的 CodeBuild 控制台,启动“-serverless-wordpress-docker-build”作业并等待其完成(大约需要 2 分钟)。
将模块的“launch”属性值从 0 改为 1,然后再次运行“terraform apply”命令。WordPress 现在应该会启动。首次设置大约需要 5 分钟,期间会创建、配置初始站点并安装必要的插件。
默认情况下,您的 WordPress 安装将可通过http://wordpress.yourdomain.com访问(为什么这部分没有 SSL?详情请查看完整版本)。
默认用户名是“supervisor”,默认密码是“techtospeech.com”。您可以在模块配置中覆盖这些用户名和默认子域名,也可以在登录 WordPress 后进行修改。请务必这样做!
第五步 - 发布
现在,这就像一个普通的 WordPress 安装。您可以安装大多数插件(但任何带有明确服务器端功能的插件在静态网站中都无法运行),安装您喜欢的任何主题,甚至可以导入现有网站的备份。像Yoast这样的 SEO 插件也能正常工作。如果网站闲置超过 5 分钟,后端数据库将会暂停(以节省资源),但只需刷新一下管理控制台,几秒钟后数据库就会重新启动。
要停止容器,只需将 Terraform 配置中的“launch”属性值改回 0,然后重新运行“terraform apply”命令即可。您也可以在 AWS 控制台中手动将 ECS 服务的任务数缩减至 0。未来我们将推出更便捷的一键启动和停止站点的方法!停止容器不会丢失任何数据——数据库以及您安装的所有文件、图像、插件和主题都会在后台保存。容器的状态将完美保留,直到您下次启动它。
但是,至关重要的是,您在使用完毕后务必记得关闭容器。否则它会一直运行——虽然不会造成太大的费用,但此方案的初衷是为了省钱,而不是浪费!(未来的更新将加入空闲时自动关闭的功能)
准备就绪后,就可以发布网站了。请查看已自动为您安装的WP2Static 插件及其S3 附加组件。这些插件的创建者是Leon Stafford 。他是开源静态 WordPress 领域的专家,没有他,这个项目就没有部署机制。我在《完整版》中详细介绍了 Leon 。
您可以查看所有 WP2Static 选项,并根据需要调整部署配置,但自动设置已预先填充了发布所需的一切。点击“生成静态站点”按钮,并定期刷新日志以查看状态。系统将抓取并重写每个 URL,生成简洁的静态版本,然后将其直接推送到支持站点静态版本的 S3 存储桶中。
这个过程可能只需 3-5 分钟,但如果您的网站规模较大,则可能需要更长时间。我们正在努力寻找更快捷的方法来完成这些步骤(非常感谢您的帮助!),但目前,此设置中包含的版本稳定可靠,只需您稍加耐心即可。
一旦流程完成……大功告成!访问您网站的 https 版本(在本例中为https://www.peter.cloud),您会惊叹于您的网站与之前一模一样,只不过现在它是无服务器的、静态的,并使用全球 CDN 进行缓存,不会再受到微弱的 DDoS 攻击或 wp-login 暴力破解的威胁。事实上,您可以尝试访问https://www.peter.cloud/wp-admin——哈!它不存在!
真的每天只要 0.01 美元吗?
是,但也不是。这要看情况。
设想一下典型的使用场景。你是一个热爱技术的极客,拥有一个个人博客网站(我也是,可以看看petewilcock.com),上面有一些文章,每天大概有 50 到 200 次访问量。在这样的流量下,网站可以以静态形式运行,无需任何人工干预,每天只需花费大约 0.01 美元——完全合法。
另一方面,如果你是一家全球知名的海量内容生成企业,每月拥有数千篇文章和数百万次的点击量……那成本就会更高。流量方面唯一的变动成本是 CloudFront 分发费用,你可以通过购买 CloudFront安全优惠包来降低这部分成本,或者如果你是规模特别大的企业,可以直接向 AWS 咨询定制的 CloudFront 定价。WAF 有一些不可避免的固定成本,这与我标题中的“吸引眼球”完全不符,而且每天至少会增加 0.6 美元的运行成本。但如果你真的需要 WAF,我猜你肯定负担得起。
由于我用这套方案运行着几个静态 WordPress 网站,我每月只需支付 1 美元即可购买优惠套餐,这足以满足我的大部分使用需求。之前我用的是 T3 虚拟主机服务器,配备 cPanel 控制面板,每年费用大约 600 美元。当然,由于一些原因(例如,这套方案目前还不支持电子邮件——但敬请期待未来的更新!),这样的比较并不完全公平,但您应该能大致了解这套方案与传统虚拟主机方案在基础网站托管方面的区别。即使是其他静态 WordPress 网站托管服务商也无法与之匹敌,因为他们需要盈利,而您不需要。
除此之外,您唯一需要注意的费用是支持 WordPress 的 ECS Fargate 容器运行成本(它以 Spot 模式运行,因此非常便宜),以及支持 WordPress 数据库的 RDS Aurora Serverless v1 数据库。这实际上是最昂贵的部分(您可能已经猜到了,未来的版本会提供更便宜的替代方案,如果您愿意牺牲一些功能和便利性),但您只需为实际修改网站的时间付费。例如,如果我编辑网站几个小时,费用可能在 0.30 美元左右。关键在于,绝大多数时间里,当您不添加内容时,几乎不需要任何费用。
故障排除
任何配置都不可能完美无缺,所以如果您在使用 Terraform 模块时遇到任何问题,请在我们的 GitHub 上提交报告,我们会尽快查看。我们也欢迎您贡献代码!
如果您在使用 WP2Static 插件时遇到问题,请查看他们的问题页面,那里有常见问题及解决方案。您遇到的任何问题都可能可以通过调整来解决,使其符合您的需求。您可以随时升级插件或 WordPress 本身,但务必先进行备份!我推荐UpdraftPlus,它是一款优秀的免费 WordPress 备份插件。
综上所述
首先再次提醒一下。完成后别忘了关闭 WordPress 容器!
这个模块是我历经数月痛苦迭代的结晶,最初是为了满足我自己的需求,之后又反复修改完善,最终才得以公开发布,不至于让自己难堪。它融合了我自 2014 年开始使用 AWS 以来积累的所有经验,并将我所掌握的 DevOps 和 Web 开发知识浓缩成一个简洁高效的解决方案,适用于任何人。希望它也能对您有所帮助!
想了解更多关于这段疯狂旅程的信息,请查看完整版文章。
Pete Wilcock 是一位拥有 9 项 AWS 认证的 DevOps 顾问、AWS 社区建设者,也是 TechToSpeech 的技术撰稿人。如果我没有因为忙于某个项目而精神崩溃、社交生活完全停滞,你可以在LinkedIn、Twitter、GitHub或我的个人网站上找到我。
文章来源:https://dev.to/aws-builders/serverless-static-wordpress-on-aws-for-0-01-a-day-1b29
