创建启用负载均衡的 WordPress 网站

在 Amazon Lightsail 中

Amazon Lightsail 是开始使用 AWS 的最便捷方式。 它提供虚拟服务器、存储、数据库和联网,以及经济高效的月度计划。

本教程介绍了如何在 Amazon Lightsail 中创建启用负载均衡的 WordPress 网站。负载均衡器是负责在一组服务器上分配网络流量的服务器。将网络流量分配到一个服务器池后,能够显著提高 WordPress 网站可以处理的并发用户的数量。负载均衡器还可以提升容错能力。Lightsail 负载均衡器可确保附加到负载均衡器的 WordPress 实例中只有运行状况良好的才能接收流量。

可以通过增加附加到负载均衡器的实例数量,来水平扩展 WordPress 网站。此外,您也可以通过使用规模更大的 Lightsail 计划(例如,使用每月 5 USD 的计划,而非每月 3.50 USD 的计划)来替换附加到负载均衡器的实例,来垂直扩展 WordPress 网站。本教程中没有对垂直扩展方案进行介绍,但是可以使用类似的步骤来实现。

在本教程中,您将完成以下步骤:

  • 在 Lightsail 中创建 MySQL 托管数据库
  • 为 WordPress 实例创建 IAM 用户
  • 通过 SSH 连接到 WordPress 实例,来配置托管数据库和 IAM 用户凭证
  • 登录到 WordPress 网站的控制面板,并安装 WP Offload Media 插件
  • 复制 WordPress 实例
  • 在 Lightsail 中创建一个负载均衡器,并附加 WordPress 实例

开始免费使用 Amazon Lightsail。

关于本教程
时间 60 分钟                                           
费用 付费
使用案例 计算
产品 Amazon Lightsail
受众 开发人员
级别 中级 
上次更新日期 2020 年 4 月 16 日

已拥有账户? 登录

1.在 Lightsail 中创建 WordPress 实例

本教程需要您在 Lightsail 中创建一个 WordPress 实例。为此,请按照“使用 Amazon Lightsail 启动和配置 WordPress 实例”教程中的步骤操作。

2.在 Lightsail 中创建 MySQL 托管数据库

完成以下步骤,在 Lightsail 中创建 MySQL 托管数据库。新的 MySQL 托管数据库将作为所有启用负载均衡的 WordPress 实例的中央数据库。


a. 登录 Lightsail 控制台。 


b.在 Lightsail 主页的数据库选项卡中,选择创建数据库

lb1

c.为您的数据库选择 AWS 区域和可用区。

注意:您创建的数据库必须与您的 WordPress 实例位于同一区域。

lb2

d.选择最新版本的 MySQL 作为数据库引擎。也可以使用 PostgreSQL,但它与 WordPress 不兼容。

lb3

e.选择一个数据库计划。

计划包括可预测的低成本、机器配置(RAM、SSD、vCPU)和数据传输许可。您可以免费试用价值 15 USD 的 Lightsail 标准数据库计划一个月(最多 750 个小时)。

lb4

f.为数据库输入名称。

资源名称指南:

  • 在您 Lightsail 账户中的每个 AWS 区域内必须是唯一的。
  • 必须包含 2 到 255 个字符。
  • 必须以字母数字字符或数字开头和结尾。
  • 可以包含字母数字字符、数字、句点、破折号和下划线。
lb5

g.选择创建数据库

创建数据库可能需要几分钟时间。


h.创建数据库并待数据库可用后,在 Lightsail 控制台的“数据库”选项卡下选择数据库的名称。


i.在数据库管理页面的“连接”选项卡中完成以下步骤:

  1. 记下数据库 DNS 名称。本教程之后的部分中,需要使用。
  2. 记下数据库用户名。本教程之后的部分中,需要使用。
  3. 选择显示密码,然后选择更改密码。输入一个高强度密码,密码中不得包含特殊字符。您必须更改密码,删除其中的特殊字符,因为如果密码中包含特殊字符,在本教程之后的部分中,某些命令将无法正常使用。
  4. 记下数据库密码。本教程之后的部分中,需要使用。
hawp2i

3.为 WordPress 实例创建 Amazon S3 存储桶

完成以下步骤,创建一个 Amazon S3 存储桶,用于存储 WordPress 网站中的媒体。


a.登录到 Amazon S3 控制台


b.在左侧导航菜单中选择阻止公共访问


c.确保通过访问控制列表 (ACL) 阻止公共访问的两个选项都已关闭。如果这两个选项处于开启状态,请选择“编辑”,取消选择这两个选项,然后选择保存更改。 这两个选项是 WordPress 访问您创建的 Amazon S3 存储桶所必需的。

注意:这些设置将应用于所有 S3 存储桶,因此请确保这些设置也可以应用于您现有的其他 S3 存储桶。

update1
update2

d.选择左侧导航栏的存储桶,然后选择创建存储桶

update3

e.为您的存储桶指定名称。所有 S3 存储桶名称都具有全局唯一性,因此您不能使用与本教程中相同的名称。

记下您选择的名称,在本教程之后的部分中,您需要在 WordPress 配置中输入这一名称。


f.为 S3 存储桶选择 AWS 区域。您应该在同一 AWS 区域中创建本教程的所有资源,因此请在 WordPress 实例所在区域创建您的 S3 存储桶。

update4

g.取消选择阻止所有公共访问,然后选择阻止通过新公共存储桶或访问点策略授予的对存储桶和对象的公共访问,以及阻止通过任何公共存储桶或访问点策略阻止对存储桶和对象的公共和跨账户访问。确保取消选中通过访问控制列表 (ACL) 阻止公共访问的两个选项。


h.选择确认您所选择的设置。

update6

i.选择创建存储桶


3.为 WordPress 实例创建 IAM 策略和用户

完成以下步骤,为您创建的 Amazon S3 创建一个可以访问 S3 存储桶的策略,然后使用该策略创建一个 IAM 用户。在本教程之后的部分中,您将使用 IAM 用户的凭证来配置 WordPress 实例。

a.登录到 IAM 控制台


b.在左侧导航栏中选择策略,然后选择创建策略

c.在“创建策略”页面,选择“JSON”选项卡,然后将以下策略粘贴到文本框中。 请务必将您的存储桶名称替换为您之前在本教程中创建的 Amazon S3 存储桶的名称。

结果应如下图所示。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::<your bucket name>",
                "arn:aws:s3:::<your bucket name>/*"
            ]
        }
    ]
}
update7

d.选择查看策略

e.为您的策略命名,例如wp-s3-policy,然后选择创建策略

现在,您有了一个可以应用于新 IAM 用户的策略。在接下来的一组步骤中,您将创建一个新的 IAM 用户

update8

f. 在左侧导航栏中,选择用户。然后,选择添加用户

lb7

g.输入用户名。

例如:wp-s3-user


h.选择编程访问

i.选择下一步:权限

lb8

j.选择直接附加现有策略


k.搜索您在之前的步骤中创建的 IAM 策略的名称,例如 wp-s3-policy

 


l. 在搜索结果中选择您创建的策略。

m.选择下一步:标签。

 

update10

n.您无需向 IAM 用户添加标签。选择下一步:查看


o. 查看用户详细信息,然后选择创建用户

lb10

p. 复制用户的访问密钥 ID,并将其粘贴到您之前在本教程中创建的凭证文本文件中。

lb11

q.在“秘密访问密钥”列下选择显示


r.复制秘密访问密钥,然后将其粘贴到凭证文本文件中。


s.安全保存好凭证文本文件。在本教程之后的部分中,您需要使用这些凭证。


t.单击关闭

现在,您已完成对 IAM 控制台的操作,可以将其关闭。

4.通过 SSH 连接到 WordPress 实例,来配置托管数据库和 IAM 用户凭证

完成以下步骤,从 WordPress 实例上的 MySQL 数据库中导出数据,然后将数据导入到 Lightsail 中新的 MySQL 托管数据库中。您还将对 WordPress 实例进行配置,以连接到 MySQL 托管数据库,并在 WordPress 实例中配置 IAM 用户凭证。


a.登录到 Lightsail 控制台


b.在 Lightsail 主页的实例选项卡上,为 WordPress 实例选择基于浏览器的 SSH 客户端图标。

lb12

c.打开基于浏览器的 SSH 客户端窗口后,输入以下命令,检索 WordPress 实例上应用程序的 Bitnami 默认密码:

cat $HOME/bitnami_application_password

        d.复制显示的密码,然后将密码粘贴到存储凭证的文本文件中。

lb13

e.逐一输入以下命令,使用您复制并粘贴到凭证文本文件中的信息建立环境变量。

LSDB_USERNAME=<DatabaseUserName>
LSDB_ENDPOINT=<DatabaseEndpoint>
LSDB_PASSWORD='<DatabasePassword>'
ACCESS_KEY=<AccessKeyID>
SECRET_KEY=<SecretAccessKey>

注意:请务必在 LSDB_PASSWORD 参数之前和之后加上单引号。

例如:

LSDB_USERNAME=dbmasteruser
LSDB_ENDPOINT=ls-24e932a56656a5b471398ea052a04bc32ea0703d.czowadgeezqi.us-west-2.rds.amazonaws.com
LSDB_PASSWORD='3stTVwnfJh9CnKR6'
ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

f.输入以下命令,为 WordPress 实例上的 MySQL 数据库创建转储。此命令会在当前目录中创建一个 dump.sql 文件。

mysqldump -u root --databases bitnami_wordpress --single-transaction --order-by-primary -p > dump.sql

g.提示输入密码时,请输入 Bitnami 默认密码。即您在之前的步骤中获得的 WordPress 实例上应用程序的 Bitnami 默认密码。


h.输入以下命令,将 dump.sql 文件导入到 Lightsail 中的 MySQL 托管数据库中。

cat dump.sql | mysql --user $LSDB_USERNAME --host $LSDB_ENDPOINT -p

i.提示输入密码时,请输入 MySQL 托管数据库密码。即之前在本教程中从 Lightsail 控制台获取的 MySQL 托管数据库的密码。


j.在接下来的一组步骤中,我们将修改 wp-config.php 文件。请先输入以下命令,对 wp-config.php 文件进行备份,然后再继续,以防万一出现问题。

cp /home/bitnami/apps/wordpress/htdocs/wp-config.php /home/bitnami/apps/wordpress/htdocs/wp-config.php.bak

k.输入以下命令,从 wp-config.php 文件中获取实例上 MySQL 数据库的密码,并将其设置为 WPDB_PASSWORD 环境变量。

WPDB_PASSWORD=`cat /home/bitnami/apps/wordpress/htdocs/wp-config.php | grep DB_PASSWORD | cut -d \' -f 4`

l.输入以下命令,将端口添加到您的 Lightsail 数据库终端节点环境变量。

LSDB_ENDPOINT=$LSDB_ENDPOINT:3306

m.输入以下命令,使用 WordPress 命令行将 MySQL 托管数据库的用户名、密码和终端节点添加到 wp-config.php 文件中。

wp config set DB_USER $LSDB_USERNAME && wp config set DB_PASSWORD $LSDB_PASSWORD && wp config set DB_HOST $LSDB_ENDPOINT

n.输入以下命令,创建一个 credfile.txt,其中包含您之前在本教程中创建的 IAM 用户的凭证。

cat <<EOT >> credfile.txt
define( 'AS3CF_SETTINGS', serialize( array (
    'provider' => 'aws', 
    'access-key-id' => '$ACCESS_KEY', 
    'secret-access-key' => '$SECRET_KEY',
) ) );
EOT

o.输入以下命令,将 credfile.txt 的内容插入到 wp-config.php 文件中。

sed -i "/define( 'WP_DEBUG', false );/r credfile.txt" /home/bitnami/apps/wordpress/htdocs/wp-config.php

p. 输入以下命令,删除 credfile.txt,因为无需再使用它了。此时,您还可以将包含您之前在本教程中复制并粘贴的所有凭证的凭证文件删除。

sudo rm –r credfile.txt

q.前一组命令重置 wp-config.php 文件的权限。输入以下命令,纠正 wp-config.php 文件和您创建的备份的权限。

sudo chown bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-config.php && sudo chown bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-config.php.bak

r.输入以下命令,重新启动实例上的服务。

sudo /opt/bitnami/ctlscript.sh restart

您可以关闭基于浏览器的 SSH 客户端窗口。现在,您的 WordPress 实例已配置为连接到 Lightsail 中新的 MySQL 托管数据库。您将新帖子发布到 WordPress 网站时,这些帖子的数据将写入 Lightsail 中 的 MySQL 托管数据库,而不再写入实例上的 MySQL 托管数据库。

5.登录到 WordPress 网站的控制面板,并安装 WP Offload Media 插件

完成以下步骤,在 WordPress 网站上安装 WP Offload Media 插件。WP Offload Media 插件使用在本教程先前部分中配置的 IAM 凭证在您的 AWS 账户中创建 Amazon S3 存储桶。它还会将您的 WordPress 连接到新的 S3 存储桶,以便将上传到您网站的媒体文件保存到新的 S3 存储桶。新的 S3 存储桶将作为所有启用负载均衡的 WordPress 实例的中央媒体文件位置。


a.浏览到您的实例。例如:http://192.0.2.0

您可以从 Lightsail 控制台获取实例的公有 IP 地址,如下图所示:

lb14

b. 选择页面右下角的 Bitnami 管理图标

lb15

c.选择登录

lb16

d.在用户名文本框中输入用户,然后在密码文本框中输入 Bitnami 默认密码。然后,选择登录

lb17

e.将光标悬停在左侧导航栏中的插件上,然后选择新增

lb18

f.在搜索文本框中输入 WP Offload Media,然后按 Enter 键。

lb19

g.在搜索结果中,选择 WP Offload Media Lite 插件旁边的立即安装

lb29

h.安装完插件后,选择激活

lb21

i.激活插件后,将光标悬停在左侧导航栏中的设置上,然后选择卸载 Media Lite

lb22

j.在“卸载Media Lite 设置”页面中,将之前在本教程中创建的 S3 存储桶的名称输入到存储桶文本框中。

然后,选择保存存储桶设置

update11

“卸载Media Lite”页面确认您的设置已保存。

您的 WordPress 网站现已配置为将媒体文件上传到您的 Amazon S3 存储桶。WordPress 媒体文件有了新的中央 S3 存储桶、Lightsail 中有了新的中央 MySQL 托管数据库,这意味着您现在可以复制 WordPress 实例,并且该实例的每个复制版本都将引用 S3 存储桶和 MySQL 托管数据库。下一步,复制 Lightsail 中的 WordPress 实例。

Picture1

6.复制 WordPress 实例

完成以下步骤,创建 WordPress 实例的快照,然后使用该快照创建实例副本。


a.登录到 Lightsail 控制台


b.在 Lightsail 主页的实例选项卡上,选择您的 WordPress 实例的名称。

lb26

c.在您的实例管理页面,选择快照选项卡。 

d.选择创建快照,然后选择创建

lb28

e.快照创建完成后,选择省略号 (⋮) 图标,然后选择创建新实例

lb29real

f.在从快照创建实例页面中,请勿更改默认选择。滚动到页面底部,然后选择创建实例

这将创建与原始 WordPress 实例完全相同的副本,该实例已经配置为连接到 MySQL 托管数据库和之前在本教程中创建的 Amazon S3 存储桶。

重复教程中本部分的步骤,创建尽可能多的需要启用负载均衡的实例。继续本教程的下一部分,在 Lightsail 中创建一个负载均衡器并附加实例。

lb30
lb31

7.在 Lightsail 中创建一个负载均衡器并附加 WordPress 实例

完成以下步骤,在 Lightsail 中创建一个负载均衡器,并附加 WordPress 实例。


a.登录到 Lightsail 控制台


b.在 Lightsail 主页,选择联网选项卡。


c.选择创建负载均衡器

lb32

d.在“创建负载均衡器”页面,为负载均衡器命名,并选择创建负载均衡器


e.为您的负载均衡器选择名称。

lb33

f.在目标实例选项卡中,在页面的目标实例部分下,选择下拉菜单,然后选择您的一个 WordPress 实例。选择附加,附加实例。

lb34

g.选择继续附加,继续向负载均衡器附加实例。

将所有复制的 WordPress 实例附加到负载均衡器。

lb35

h.在负载均衡器管理页面的顶部,复制负载均衡器的 DNS 名称。

lb36

i.打开一个新的浏览器窗口,将 DNS 名称粘贴到地址文本框中,然后按 Enter 键。

您的请求将通过负载均衡器进行路由,并会加载您的 WordPress 网站。加载的网站来自附加到您的负载均衡器的一个 WordPress 实例。此时,您的负载均衡器已配置为路由到一个复制的 WordPress 实例。要完成此过程,请将负载均衡器的 DNS 名称作为地址 (A) 记录添加到注册域的 DNS 中。

恭喜

您已经在 Lightsail 中创建了一个启用负载均衡的 WordPress 网站。

Amazon Lightsail 非常适合开发人员、WebPro,及寻求快速廉价地开始使用 AWS 的任何人使用。您可以通过托管方式启动实例、数据库、基于 SSD 的存储,传输数据、监控资源等等。

本教程对您是否有帮助?

谢谢
请告知我们您喜欢什么。
关闭
很抱歉让您失望了
是否存在过时、令人困惑或不准确的内容? 请向我们提供反馈,帮助我们改进本教程。
关闭