介绍
这是一系列博客中的第一篇,详细介绍了如何设置和使用在 Oracle 云中利用 MySQL HeatWave 的 LAMP 堆栈。
- 第 1 部分(本部分)将通过详细说明 LAMP 堆栈是什么以及 Oracle 云中可用的部署选项来设置场景。它还将列出本系列博客将构建的 LAMP 堆栈的架构愿景。
- 第 2 部分将在 Oracle 云中构建基础架构(网络、应用程序服务器、数据库服务器)。
- 第 3 部分将安装和配置剩余的 LAMP 堆栈软件。
- 第 4 部分将安装附加软件以帮助开发 Web 应用程序。
- 第 5 部分将考虑如何使堆栈更具可扩展性、可用性和安全性。
什么是 LAMP 堆栈?
LAMP 是一个首字母缩写词,代表 Linux、Apache、MySQL 和 PHP。这些技术共同形成一个堆栈来构建、部署和管理 Web 应用程序。LAMP 堆栈可能是所有 Web 开发框架中最古老的框架,并且仍然是最重要的框架之一,一些评论员认为,多达 50% 的新 Web 开发要么使用 LAMP 堆栈,要么使用 LAMP 堆栈的变体。
堆栈可视化如下:
堆栈以服务器和一些存储开始。在服务器上安装了 Linux 操作系统。Linux 操作系统允许其他堆栈组件读取和写入存储以及发起和接收网络调用。然后安装 MySQL。这是堆栈的数据库服务器,将存储 Web 应用程序状态(例如用户详细信息、商店库存等)。PHP 位于顶层。它负责实现我们 Web 应用程序的业务逻辑。作为该逻辑的一部分,PHP 将使用底层数据库来存储数据,然后在请求时检索它。最后,我们有 Web 服务器 Apache。这负责接收 http(s) 请求(例如对网页的请求)并响应它们(例如返回所请求的网页)。当 Apache 接收到请求时,它将确定该请求是否需要 PHP 处理并相应地转发它。对 PHP 的请求可能需要数据库的服务,在这种情况下,它将与 MySQL 数据库通信。MySQL 会将其结果返回给 PHP。PHP 可能会在将其数据(通常以网页的形式)返回给 Apache 之前进一步处理这些结果。然后 Apache 会将其打包为 http 响应并将其发送给请求者。
LAMP 堆栈具有灵活的架构:数据库服务器可以存储在与应用程序服务器(Apache 和 PHP)不同的服务器上。以这种方式拆分组件有很多好处:
- 数据库和应用程序服务器组件可以根据需要独立扩展。
- 堆栈可以高度可用。可以在许多主机上安装应用程序服务器组件并进行负载平衡。如果其中一台主机出现故障,则负载均衡器会将请求重定向到幸存者。数据库服务器可以实现为高可用集群;如果集群中的任何节点出现故障,请求将重新路由到幸存的节点。
- 通过简单地将数据库服务器与面向 Internet 的组件(即应用程序服务器)隔离开来,可以大大提高安全性
什么是 MySQL HeatWave?
MySQL HeatWave 是一项完全托管的数据库服务,使客户能够直接从他们的 MySQL 数据库运行 OLTP、OLAP 和机器学习工作负载。
作为一项服务,大多数管理任务都是为您完成的,让您专注于数据库模式。鉴于本系列博客的目的是详细介绍如何从头开始构建 LAMP 堆栈,仅讨论基本的 MySQL 数据库服务;OLAP 和机器学习超出了它的范围。
Oracle 云中的 LAMP 堆栈部署选项
目前(2022 年 7 月),有三种选择:
- 从头开始构建自己的。
- 使用 EMEA MySQL 社区管理器的 Terraform 脚本自动构建和部署 LAMP 堆栈。
- 使用 Oracle 市场映像。
本系列博客将遵循第一个选项:构建您自己的。这将使读者全面了解堆栈应如何部署和工作。此外,如果读者关注这些博客,他们将在软件版本控制、安全性和成本方面完全掌握自己的命运。
第二个选项是部署 LAMP 堆栈的好方法。它唯一的缺点是它目前没有部署最新版本的 Apache 和 PHP,并且不清楚它的脚本是否会在未来得到维护。如果您对这种方法感到满意并且喜欢它而不是构建自己的方法,那么请参阅社区管理员博客。
第三种选择似乎是部署 LAMP 堆栈的最简单方法。但是,它具有商业、安全和可扩展性限制:
- 它收取的费用超出了必须为云基础设施的任何收费项目支付的费用。在撰写本文时(2022 年 7 月),此费用为 0.05 美元/小时。这可能看起来不多,但很快就会增加:1.20 美元/天;8.40 美元/周;36 美元/月(30 天)和 438 美元/年(365 天)。
- 由于您所在的国家/地区和计费货币,您可能无法使用此图片。
- 该堆栈部署在单个服务器上,因此不容易扩展。
- 堆栈中使用的软件版本正在变旧。您不能在安装时指定版本。
- 使用 MySQL Community Edition 而不是 MySQL Database Service。这意味着您必须对数据库进行所有管理(例如升级、备份等),并且支持将完全基于社区。
- 需要额外的工作来保护堆栈 - 特别是对于预安装的 phpMyAdmin 应用程序。
建筑愿景
我们需要考虑的第一件事是基础架构架构:
- 我们将从数据库服务器中分离出应用程序服务器部分,以便:
- 提供更高的安全性:数据库将被防火墙隔离到无法从 Internet 访问的安全区域。我们将在防火墙中打开端口以允许应用程序服务器与数据库服务器进行通信。
- 为未来的扩展做准备。
- 为高可用性做准备
- 我们将使用 Oracle 云 (OCI)
- OCI 是所有公共云中最现代和最安全的。它也是最具竞争力的价格。请注意,Oracle 还经常提供大量的免费试用期——有关详细信息,请参阅https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier.htm。
- 使用 OCI 意味着我们可以从使用MySQL 数据库服务中受益。MySQL 数据库服务是完全托管的 Oracle 云基础设施原生服务,由 Oracle 中的 MySQL 团队开发、管理和支持。Oracle 自动执行备份和恢复以及数据库和操作系统修补等任务。您全权负责管理您的数据、架构设计和访问策略。
我们的逻辑基础架构架构设计将如下所示:
在软件方面,将使用 Apache、PHP 和 MySQL 的最新稳定版本。MySQL 正在作为服务实施,并且该服务始终提供最新的稳定版本(撰写本文时为 8.0.29,2022 年 7 月)。Apache 2.4 和 PHP 8.1 是最新的稳定版本,应该使用。要使用的 Linux 操作系统将是 Oracle Linux 8。注意:OL8 是从 Red Hat 8 源代码编译而来的,实际上是没有 Red Hat 品牌的 Red Hat。因此,本系列博客中的命令和工作流程应该适用于所有其他 Red Hat 操作系统的变体(即 Red Hat、Fedora 和 Centos)。如果您使用 Ubuntu,那么您应该仍然能够遵循工作流程,但在安装和使用软件时会有一些差异,例如:
为了不使事情过于复杂,管理将从应用程序服务器完成。在第一个实例中,唯一需要安装的附加软件是 MySQL Shell;这将允许将测试模式上传到数据库。
堆栈安装并运行后,将安装更多软件:
- Git – 允许开发人员管理他们的源代码(即版本控制/更改跟踪、协作工作等)。
- Certbot – 是一个免费的开源软件工具,用于在手动管理的网站上自动使用Let's Encrypt证书来启用 HTTPS。
就本系列博客而言,Git 将用于访问 GitHub 上一个简单的演示 Web 应用程序的源代码。Certbot 将用于提供 TLS/SSL 证书,以便 Web 应用程序的用户可以安全地访问它。
总结和后续步骤
总之,我们已经了解了 LAMP 堆栈是什么,并且对于我们将要构建的内容有一个清晰的架构愿景。剩下的就是继续阅读本系列博客的第二部分。
原文标题:How to Setup a LAMP Stack with MySQL HeatWave – Part 1/5
原文作者:Stuart Davey(MySQL 首席解决方案工程师)
原文地址:https://blogs.oracle.com/mysql/post/how-to-setup-a-lamp-stack-with-mysql-heatwave-part1