在 Amazon Lightsail 上创建负载均衡的 WordPress 网站

若想以最简单的方式上手 AWS,不妨使用 Amazon Lightsail。Amazon Lightsail 提供虚拟服务器、存储、数据库和网络,以及经济实惠的月度资源套餐。

本教程将向您展示如何在 Amazon Lightsail 上创建负载均衡的 WordPress 网站。负载均衡器是一种服务器,负责在一组服务器之间分配网络流量。通过将网络流量分配到服务器池,WordPress 网站能够处理的并发用户数量将大幅增加。负载均衡器还增加了容错能力。Lightsail 负载均衡器可确保只有附加到负载均衡器的健康 WordPress 实例才能接收流量。

Y您可以通过增加为负载均衡器附加的实例数量来水平扩展 WordPress 网站。您还可以通过将附加到负载均衡器的实例替换为使用更高配额 Lightsail 套餐的实例来垂直扩展 WordPress 网站(例如,将每月 3.50 美元的资源套餐改为每月 5 美元的资源套餐)。垂直扩展场景没有在本教程中进行介绍,但可以使用类似的步骤来实现。

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

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

开始免费使用 Amazon Lightsail

关于本教程
时间 60 分钟                                        
               费用
需付费
使用场景 计算
产品 Amazon Lightsail
受众 开发人员
级别 中级
上次更新时间
2021 年 9 月 8 日

已经有账户?登录

1.在 Lightsail 上创建 WordPress 实例

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

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

通过完成以下步骤,在 Lightsail 上创建 MySQL 托管数据库。新的 MySQL 托管数据库将充当中心数据库,存储所有要进行负载均衡的 WordPress 实例。


a. 登录 Lightsail 控制台。 


b. 在 Lightsail 主页的 Databases(数据库)页签上,点击 Create database(创建数据库)。


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

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


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


e. 选择数据库套餐。

数据库套餐包含可预测的较低价格、机器配置(RAM、SSD、vCPU)和数据传输限额。您可以免费试用 15 美元的 Lightsail 标准数据库套餐 1 个月(最多 750 个小时)。


f. 输入数据库的名称。

资源命名准则:

  • 必须在 Lightsail 账户下的每个 AWS 区域中保持唯一性。
  • 必须包含 2 到 255 个字符。
  • 必须以字母数字字符或数字开头和结尾。
  • 可以包含字母数字字符、数字、句号、连接号和下划线。

g. 点击 Create database(创建数据库)。

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


h. 在数据库创建好并可以使用之后,在 Lightsail 控制台的 Databases(数据库)页签上选择数据库的名称。


i. 在数据库管理页面的 Connect(连接)页签上完成以下步骤:

  1. 记录数据库 DNS 名称。您需要在本教程的后续步骤中使用此信息。
  2. 记录数据库用户名。您需要在本教程的后续步骤中使用此信息。
  3. 选择 Show password(显示密码),然后选择 Change password(更改密码)。输入新的不包含特殊字符的强密码。您必须更改密码以删除特殊字符,原因在于,如果密码中使用特殊字符,本教程的后续步骤中的某些命令将无法按预期运行。
  4. 记录数据库密码。您需要在本教程的后续步骤中使用此信息。

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

通过完成以下步骤来创建 Amazon S3 存储桶,该存储桶将用于存储 WordPress 网站中的媒体。


a. 登录 Amazon S3 控制台


b. 在左侧导航菜单中选择 Block public access(阻止公共访问)。


c. 确保两个阻止通过访问控制列表 (ACL) 进行公共访问的选项处于关闭状态。如果这两个选项处于开启状态,则点击 Edit(编辑),取消选中这两个选项,然后点击 Save changes(保存更改)。这是为 WordPress 访问您创建的 Amazon S3 存储桶而必需设置的。

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


d. 在左侧导航菜单中选择 Buckets(存储桶),然后点击 Create bucket(创建存储桶)。


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

记录您选择的名称,在本教程的后续步骤中,您需要在 WordPress 配置中输入该名称。


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


g. 取消选中 Block all public access(阻止所有公共访问),然后选择 Block public access to buckets and objects granted through new public bucket or access point policies(阻止通过新公共存储桶或接入点策略对存储桶和对象进行公共访问)和 Block public and cross-account access to buckets and objects through any public bucket or access point policies(阻止通过任何公共存储桶或接入点策略对存储桶和对象进行公共访问和跨账户访问)。确保两个阻止通过访问控制列表 (ACL) 进行公共访问的选项未选中。


h. 选择确认所选设置。


i. 点击 Create bucket(创建存储桶)。


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

通过完成以下步骤来为您创建的 Amazon S3 存储桶创建策略,然后使用可访问 S3 存储桶的策略创建 IAM 用户。在本教程的后续步骤中,您将使用 IAM 用户凭据配置 WordPress 实例。

a. 登录 IAM 控制台


b. 在左侧导航菜单中选择 Policies(策略),然后点击 Create policy(创建策略)。

c. 在 Create policy(创建策略)页面中,选择 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>/*"
            ]
        }
    ]
}

d. 点击 Review policy(查看策略)。

e. 为您的策略命名(如 wp-s3-policy),然后点击 Create policy(创建策略)。

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


f. 在左侧导航菜单中选择 Users(用户)。然后点击 Add user(添加用户)。


g. 输入用户名。

例如:wp-s3-user


h. 选择 Programmatic access(编程访问)。

i. 点击 Next: Permissions(下一步: 权限)。


j.选择 Attach existing policies directly(直接附加现有策略)。


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


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

m. 点击 Next: Tags(下一步: 标签)。

 


n. 您无需为 IAM 用户添加标签。点击 Next: Review(下一步: 查看)。


o. 查看用户详细信息,然后点击 Create user(创建用户)。


p. 复制用户的访问密钥 ID,然后将其粘贴到在本教程的前面步骤中创建的凭据文本文件中。


q.在 Secret access key(私有访问密钥)列下面点击 Show(显示)。


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


s. 将凭据文本文件保存到安全位置。您需要在本教程的后续步骤中使用这些凭据。


t. 点击 Close(关闭)。

您现已完成 IAM 控制台中的操作,可以关闭它了。

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

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


a. 登录 Lightsail 控制台


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


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

cat $HOME/bitnami_application_password

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


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 文件。

sudo 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 | sudo mysql --user $LSDB_USERNAME --host $LSDB_ENDPOINT -p

i. 当系统提示您输入密码时,输入 MySQL 托管数据库密码。这是您在本教程的前面步骤中从 Lightsail 控制台获取的 MySQL 托管数据库密码。


j.我们将在下一组步骤中修改 wp-config.php 文件。为防止此文件损坏,在继续操作之前输入以下命令,以创建 wp-config.php 文件的备份。

cp /opt/bitnami/wordpress/wp-config.php /opt/bitnami/wordpress/wp-config.php.bak

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

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

l.输入以下命令以向 Lightsail 数据库端点环境变量中添加端口。

LSDB_ENDPOINT=$LSDB_ENDPOINT:3306

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

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" /opt/bitnami/wordpress/wp-config.php

p. 输入以下命令以删除不再需要的 credfile.txt。此时,您还可以删除凭据文件,其中包含您在本教程的前面步骤中复制和粘贴的所有凭据。

sudo rm –r credfile.txt

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

sudo chown bitnami:daemon /opt/bitnami/wordpress/wp-config.php && sudo chown bitnami:daemon /opt/bitnami/wordpress/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 地址,如下图所示:


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


c. 点击 Login(登录)。


d. 在 Username(用户名)文本框中输入 user,然后在 Password(密码)文本框中输入 Bitnami 默认密码。然后点击 Log In(登录)。


e. 将光标悬停在左侧导航菜单中的 Plugins(插件)上,然后选择 Add New(添加新插件)。


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


g. 在搜索结果中,点击 WP Offload Media Lite 插件旁边的 Install Now(立即安装)。


h. 插件安装后,点击 Activate(激活)。


i. 插件激活后,将光标悬停在左侧导航菜单中的 Settings(设置)上,然后选择 Offload Media Lite


j.在 Offload Media Lite 设置页面 的 Bucket(存储桶)文本框中,输入您在本教程的前面步骤中创建的 S3 存储桶的名称。

然后点击 Save Bucket Setting(保存存储桶设置)。


Offload Media Lite 页面确认您的设置已保存。

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

6.复制 WordPress 实例

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


a. 登录 Lightsail 控制台


b. 在 Lightsail 主页的 Instances(实例)页签上,选择 WordPress 实例的名称。


c. 在实例管理页面上,选择 Snapshots(快照)页签。 

d. 选择 Create snapshot(创建快照),然后选择 Create(创建)。


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


f. 在 Create an instance from a snapshot page(从快照页面创建实例)中,不要更改默认选项。滚动到页面底部,然后点击 Create instance(创建实例)。

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

重复本教程这一部分中的步骤,创建需要进行负载均衡的任意多个实例。继续执行本教程的下一部分,在 Lightsail 上创建负载均衡器并附加您的实例。

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

通过完成以下步骤在 Lightsail 上创建负载均衡器并附加 WordPress 实例。


a. 登录 Lightsail 控制台


b. 在 Lightsail 主页上,选择 Networking(网络)页签。


c. 点击 Create load balancer(创建负载均衡器)。


d. 在 Create a load balancer(创建负载均衡器)页面上,为您的负载均衡器命名,然后点击 Create load balancer(创建负载均衡器)。


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


f. 在 Target instances(目标实例)页面的 Target instances(目标实例)部分下面,选择下拉菜单,然后选择一个 WordPress 实例。选择 Attach(附加)以附加实例。


g. 点击 Attach another(附加其他)可向负载均衡器附加其他实例。

将所有的 WordPress 实例副本都附加到负载均衡器。


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


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

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

恭喜您

您已在 Lightsail 上创建了一个负载均衡的 WordPress 网站。

Amazon Lightsail 非常适合开发人员、网络专家以及任何希望以经济实惠的方式快速上手 AWS 的用户。您可以用托管的方式启动实例、数据库和基于 SSD 的存储,以及传输数据、监控资源等等。

此页内容对您是否有帮助?