数据库架构设计实验
实验介绍
关于本实验
本实验将使用华为云搭建WordPress网站,通过配置弹性云服务器ECS、云数据库GaussDB(for Mysql)搭建WordPress 网站,通过部署GeminiDB实例对接WordPress提供Redis服务,实现WordPress网站的页面加速。
说明:本实验以“北京四”区域为例,学员可以根据实际情况选择相应区域进行实验。
实验目的
理解云数据库服务架构中各云服务的使用。
掌握对云数据库服务可用性、统一管理等方面的设计方法。
实验组网
软件介绍
Redis(RemoteDictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,是一个高性能的 key-value 数据库。
实验配置
创建安全组
步骤1 登录华为云,在“华北-北京四”中选择“网络控制台>访问控制>安全组”,点击右上角“创建安全组”,按照以下配置创建安全组sg-rds。
说明:该安全组供后续GaussDB数据库实例使用,需要放通3306端口。
- 名称:sg-rds
- 模板:快速添加规则
- 入方向规则:数据库(3306)
步骤2 按照以下配置创建安全组sg-wordpress。
- 说明:该安全组用于后续搭建WordPress的云服务器,需要使用通用Web服务器模板。
- 名称:sg-wordpress
步骤3 按照以下配置创建安全组sg-redis。
- 名称:sg-redis
- 模板:快速添加规则
- 入方向规则:Redis(6379)
创建VPC
步骤1 在服务列表中选择“虚拟私有云>我的VPC”,点击右上角“创建虚拟私有云”。
说明:本实验的后续资源将在此VPC中创建。
步骤2 按照以下配置创建虚拟私有云“vpc-db”。
基本信息:
- 区域:华北-北京四
- 名称:vpc-db
- IPv4 网段:192.168.0.0/16
默认子网:
- 可用区:可用区1(本VPC以可用区1为例,学员可根据实际情况选择相应可用区,后续类似资源不再赘述
- 名称:vpc-db-subnet
- 子网IPv4网段:192.168.2.0/24
购买云数据库实例
步骤1 在“华北-北京四”服务列表中,选择“云数据库RDS”。
步骤2 点击“购买”。
说明:后续需要在该实例中创建数据库,对接WordPress应用。
步骤3 按照以下要求填写参数,并点击“立即购买”。
- 计费模式:按需计费
- 区域:华北-北京四
- 数据库引I擎:MySQL
- 数据库版本:8.0
- 实例类型:主备
- 存储类型:SSD云盘
- 主可用区:可用区一
- 备可用区:可用区七
- 性能规格:独享型 2 vCPU |4 GB
- 存储空间:40 GB
- 实例名称:gaussdb-wordpress
- 管理员密码:自定义
- 虚拟私有云:vpc-db|vpc-db-subnet|自动分配IP地址
- 安全组:sg-rds
- 参数模板:Default-MySQL-8.0
- 购买数量:1
- 其他参数默认即可
步骤4 确认配置后点击“提交”,大约等待5-10分钟,实例创建完毕。
为WordPress创建数据库
步骤1 在实例管理界面,记录数据库“读写内网地址”(本实验为192.168.2.167),点击实例右侧“登录”按钮,登录数据库。
步骤2 在实例登录页面,输入用户名密码后点击“测试连接”,并勾选“记住密码”,测试通过后选择“登录”。
步骤3 在首页选择“新建数据库”(后续使用该数据库对接WordPress)。
步骤4 按以下配置填入数据库名称和字符集后单击“确定”。
- 数据库名称:wordpress
- 字符集:utf8mb4
步骤 5 创建完成后可以在数据库列表查看刚创建的数据库wordpress。
安装部署WordPress
步骤1 在服务列表中选择“弹性云服务器ECS”,点击右上角“购买弹性云服务器”。
说明:该云服务器用于部署WordPress。
步骤2 按以下配置选择相应参数,创建云服务器。
- 计费模式:按需计费
- 区域:华北-北京四
- 可用区:随机分配
- CPU架构:x86计算
- 规格:通用计算增强型|2vCPUs|4GiB
- 镜像:公共镜像|CentOS 7.6 64 bit(10 GB)
- 主机安全:免费版安全基础防护
- 系统盘:通用型SSD|40 GB
- 网络:vpc-db|vpc-db-subnet|自动分配 IP 地址
- 安全组:sg-wordpress
- 弹性公网IP:现在购买
- 线路:全动态BGP
- 公网带宽:按流量计费
- 带宽大小:10 Mbit/s
- 云服务器名称:ecs-wordpress
- 登录凭证:密码
- 密码:用户自定义
步骤3 在弹性云服务器列表中点击操作栏的“远程登录”,登录esc-wordpress云主机。
步骤4 通过以下命令安装Apache相关组件。
#安装 Apache httpd 服务;install 安装软件,-y 自动回答 yes[root@ecs-wordpress ~]# yum install httpd -y步骤5 通过以下命令安装php相关组件,根据提示,输入“y”,完成软件安装。
#安装 remi 软件源(提供 php72 软件包);-i 安装、-v 显示详细过程、-h 显示安装进度条[root@ecs-wordpress ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmRetrieving http://rpms.famillecollet.com/enterprise/remi-release-7.rpm warning: /var/tmp/rpm-tmp.sFYZ7T: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY Preparing...################################# [100%]Updating / installing...1:remi-release-7.9-6.el7.remi################################# [100%]#临时启用 remi、remi-php72 仓库安装 php 及所需扩展;--enablerepo 临时启用指定仓库,php-opcache 为字节码缓存[root@ecs-wordpress ~]# yum install --enablerepo=remi --enablerepo=remi-php72 php php-opcache php-devel php-mysqlnd php-gd php-redis步骤6 使用wget命令下载WordPress安装包并解压。
#从华为云 OBS 下载 WordPress 中文安装包;wget 非交互下载,https 指向安装包地址[root@ecs-wordpress ~]# wget https://cloudservice-v3.obs.cn-east-3.myhuaweicloud.com/wordpress-5.2.3_zh.zip--2025-04-0921:20:50-- https://cloudservice-v3.obs.cn-east-3.myhuaweicloud.com/wordpress-5.2.3_zh.zip Resolving cloudservice-v3.obs.cn-east-3.myhuaweicloud.com(cloudservice-v3.obs.cn-east-3.myhuaweicloud.com)...121.36.239.144,121.36.239.137,121.36.239.130 Connecting to cloudservice-v3.obs.cn-east-3.myhuaweicloud.com(cloudservice-v3.obs.cn-east-3.myhuaweicloud.com)|121.36.239.144|:443... connected.# connected 表示 443 端口连接成功HTTP request sent, awaiting response...200OK# 200 OK 表示服务器正常响应Length:12765467(12M)[application/zip]# 文件大小 12M,类型 zipSaving to:'wordpress-5.2.3_zh.zip'100%[============================================================================================================================================================================]12,765,46733.3MB/sin0.4s2025-04-0921:20:50(33.3MB/s)-'wordpress-5.2.3_zh.zip'saved[12765467/12765467]# saved 表示文件已完整保存#解压下载的 zip 安装包[root@ecs-wordpress ~]# unzip wordpress-5.2.3_zh.zip#查看当前目录,确认解压结果[root@ecs-wordpress ~]# lswordpress wordpress-5.2.3_zh.zip# 列出 wordpress 目录与 zip 压缩包步骤7 使用如下命令拷贝WordPress文件夹到Apache的工作目录“/var/www/html”。
#递归强制拷贝 wordpress 目录到 Apache 站点根目录;-r 递归、-f 强制覆盖[root@ecs-wordpress ~]# cp -rf wordpress /var/www/html/步骤8 通过以下命令切换到httpd的工作目录,并复制配置文件。
#切换到 Apache 站点下的 wordpress 目录[root@ecs-wordpress ~]# cd /var/www/html/wordpress#把样例配置复制为正式配置文件 wp-config.php[root@ecs-wordpress wordpress]# cp wp-config-sample.php wp-config.php步骤9 使用vim命令修改wp-config.php文件,配置数据库参数对接之前创建的“wordpress”数据库。
#编辑 wp-config.php 数据库配置文件[root@ecs-wordpress wordpress]# vim wp-config.php修改wp-config.php文件中数据库的配置参数,如下内容:
- 数据库名称(DB_NAME): wordpress
- 数据库用户名(DB_USER): root
- 数据库密码(DB_PASSWORD):(学员自定义)
- 数据库主机(DB_HOST): 192.168.2.167:3306(数据库实例的内网IP地址:端口号)
- 文字编码(DB_CHARSET): utf8mb4
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** // /** WordPress数据库的名称 */ define('DB_NAME','wordpress');/** MySQL数据库用户名 */ define('DB_USER','root');/** MySQL数据库密码 */ define('DB_PASSWORD','自定义密码');/** MySQL主机 */ define('DB_HOST','192.168.2.167:3306');/** 创建数据表时默认的文字编码 */ define('DB_CHARSET','utf8mb4');/** 数据库整理类型。如不确定请勿更改 */ define('DB_COLLATE','');步骤10 并在当前文件(wp-config.php)末尾,添加如下内容,添加完成后,保存退出。
define("FS_METHOD","direct");define("FS_CHMOD_DIR", 0777);define("FS_CHMOD_FILE", 0777);# wp-config.php完整内容如下[root@ecs-wordpress wordpress]# cat wp-config.php<?php /** * WordPress基础配置文件。 * * 这个文件被安装程序用于自动生成wp-config.php配置文件, * 您可以不使用网站,您需要手动复制这个文件, * 并重命名为“wp-config.php”,然后填入相关信息。 * * 本文件包含以下配置选项: * * * MySQL设置 * * 密钥 * * 数据库表名前缀 * * ABSPATH * * @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php * * @package WordPress */ // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** // /** WordPress数据库的名称 */ define('DB_NAME','wordpress');/** MySQL数据库用户名 */ define('DB_USER','root');/** MySQL数据库密码 */ define('DB_PASSWORD','自定义密码');/** MySQL主机 */ define('DB_HOST','192.168.2.167:3306');/** 创建数据表时默认的文字编码 */ define('DB_CHARSET','utf8mb4');/** 数据库整理类型。如不确定请勿更改 */ define('DB_COLLATE','');/**#@+* 身份认证密钥与盐。 * * 修改为任意独一无二的字串! * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 密钥生成服务}* 任何修改都会导致所有cookies失效,所有用户将必须重新登录。 * * @since2.6.0 */ define('AUTH_KEY','put your unique phrase here');define('SECURE_AUTH_KEY','put your unique phrase here');define('LOGGED_IN_KEY','put your unique phrase here');define('NONCE_KEY','put your unique phrase here');define('AUTH_SALT','put your unique phrase here');define('SECURE_AUTH_SALT','put your unique phrase here');define('LOGGED_IN_SALT','put your unique phrase here');define('NONCE_SALT','put your unique phrase here');/**#@-*//** * WordPress数据表前缀。 * * 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置 * 不同的数据表前缀。前缀名只能为数字、字母加下划线。 */$table_prefix='wp_';/** * 开发者专用:WordPress调试模式。 * * 将这个值改为true,WordPress将显示所有用于开发的提示。 * 强烈建议插件开发者在开发环境中启用WP_DEBUG。 * * 要获取其他能用于调试的信息,请访问Codex。 * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define('WP_DEBUG',false);/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */ /** WordPress目录的绝对路径。 */if(!defined('ABSPATH')){define('ABSPATH', dirname(__FILE__).'/');}/** 设置WordPress变量和包含文件。 */ require_once(ABSPATH.'wp-settings.php');define("FS_METHOD","direct");define("FS_CHMOD_DIR", 0777);define("FS_CHMOD_FILE", 0777);[root@ecs-wordpress wordpress]#步骤11 通过以下命令开启Apache服务并查看,配置文件权限,并启动服务。
#递归给 wp-content 目录授予 777 权限,保证可写主题、插件、上传文件[root@ecs-wordpress wordpress]# chmod -R 777 wp-content#启动 Apache httpd 服务[root@ecs-wordpress wordpress]# systemctl start httpd#查看 httpd 进程是否启动成功;ps -ef 显示所有进程,grep httpd 过滤 httpd[root@ecs-wordpress wordpress]# ps -ef | grep httpdroot94921021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDapache94939492021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDapache94949492021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDapache94959492021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDapache94969492021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDapache94979492021:31 ? 00:00:00 /usr/sbin/httpd-DFOREGROUNDroot95368157021:32 pts/0 00:00:00grep--color=auto httpd[root@ecs-wordpress wordpress]#步骤12 打开本地PC浏览器,输入:ecs-wordpress云服务器的EIP/wordpress/index.php,登录网站。
(本实验是:124.70.34.67/wordpress/index.php)。登录后完成以下配置内容,点击“安装WordPress”
- 站点标题:HCIP
- 用户名:huawei(学员可自定义)
- 密码:自定义
- 电子邮件:自定义
步骤13 安装完成后,点击“登录”,输入设置的账号和密码信息,登录网站。
步骤14 输入刚设置的用户名和密码登录WordPress,如下图所示,证明WordPress搭建完成。
步骤15 在左侧页签中选择“插件>安装插件”。
步骤16 在右侧的搜索栏中输入“redis”,找到“Redis Object Cache”,点击“现在安装”。
说明:为后续对接Redis服务做好插件准备。
# 下载https://curl.se/ca/cacert.pem 将文件里的内容全部复制下来,然后替换 /var/www/html/wordpress/wp-includes/certificates/ca-bundle.crt 里面的内容保存,就可以了# 将ca-bundle.pem 上传到ecs,然后复制成ca-bundle.crt#把上传的 cacert.pem 复制为 WordPress 内置证书库 ca-bundle.crt,更新 CA 根证书[root@ecs-wordpress certificates]# cp cacert.pem /var/www/html/wordpress/wp-includes/certificates/ca-bundle.crt创建GeminiDB Redis服务
步骤1 在“华北-北京四”的服务列表中选择“云数据库GeminiDBRedis接口”,点击右上角“购买数据库实例”,按照以下配置购买数据库实例。
步骤2 点击右上角的“购买数据库实例”,并参照以下参数完成配置。
说明:本实验中使用该GaussDBRedis数据库实例为WordPress提供Redis服务。
- 计费模式:按需计费
- 区域:华北-北京四
- 实例名称:redis-wordpress
- 兼容接口:Redis
- 部署模式:经典
- 产品类型:标准型
- 实例架构:主备版(或集群版)
- 兼容版本:7.0
- CPU类型:x86
- 可用区:默认
- 规格选择模式:自定义资源
- 规格类型:标准型
- 节点规格:1vcpu | 4 GB
- 节点数量:2节点
- 实例存储容量:8 GB
- 虚拟私有云:vpc-db
- 子网:vpc-db-subnet
- 内网安全组:sg-redis
- 数据库端口:默认(6379)
- 管理员密码:学员自定义
步骤3 查看并选中已购买的数据库实例,等待创建完成,创建过程预计需要5-10分钟。
步骤4 点击数据库名称,在“基本信息”页签中查看并记录用户名、负载均衡地址、端口号和所配置的登录密码。
步骤5 登录弹性云主机ecs-wordpress,通过以下命令修改网站的配置文件。
#切换到 WordPress 站点目录[root@ecs-wordpress ~]# cd /var/www/html/wordpress/#编辑 wp-config.php,在关系型数据库配置后添加 Redis 配置[root@ecs-wordpress wordpress]# vim wp-config.php在该文件中增加以下内容用以对接Redis服务(请顺序地添加到关系型数据库配置的后边,否则非关系型数据库Redis连接可能不生效)。
/*redis config*/ define('WP_REDIS_HOST','192.168.2.96');define('WP_REDIS_PORT','6379');define('WP_REDIS_PASSWORD','自定义密码');说明:以上内容中“192.168.2.96”为上一步骤中Redis负载均衡服务地址,配置时请注意替换为实际服务地址。以上内容设置的数据库密码,配置时请注意替换为实际密码。
步骤6 配置完成后,保存退出。
启用Redis
步骤1 返回Wordpress页面,浏览器页面按“F12”键,勾选“Disable cache”(停用缓存)选项,查看页面加载时间。刷新WordPress界面,待其完全加载完成,可以在页面下方看到DOMContentLoaded为“445 ms”左右。
先F12,勾选Disable cache,然后刷新页面看底部时间
步骤2 关闭浏览器的工具面板页面(按F12),在WordPress页面,选择“插件”,找到“RedisObject Cache-对象缓存”,点击“启用”。
步骤3 在“概览”页签下点击“启用对象缓存”(或:Enable Object Cache)。
步骤4 查看状态,显示“已连接”(或Connected),证明Redis服务已成功对接并启用。点击"刷新缓存"flush cach按钮,清除 cache 中缓存。
实验验证
步骤1 登录Wordpress网页,并进入刚才的页面(例如安装插件页面),在浏览器中按“F12”键,勾选“Disablecache”(停用缓存)选项,查看启用Redis的页面加载时间。
请多刷新几次页面进行对比,当前加载时间约为“335 ms”,低于启用Redis服务之前的445s,通过启用Redis服务提升网站响应速度的需求(因实验页面内容量较少或网络波动等原因,通常实际效果并不明显,主要是熟悉相关场景的操作及配置),至此本实验配置完成。
观察redis使用现象
观察监控指标
看缓存
实验恢复
步骤1 删除 GeminiDB Redis实例。
在服务列表中选择“云数据库GeminiDBRedis接口”,在列表中找到本实验创建的数据库实例,点击操作栏中的“更多>删除实例”
步骤2 删除GaussDB数据库实例。
在服务列表中选择“云数据库GaussDB(forMySQL”,在列表中找到本实验创建的数据库实例,点击操作栏中的“更多>删除实例”。
步骤3 删除ECS。
在服务列表中选择“云服务器ECS”,找到本实验创建的云服务器,点击操作栏中的“更多>删除”。
在弹出的对话框中勾选EIP和数据盘选项,并删除ECS。
步骤4 删除安全组。
在服务列表中选择“虚拟私有云VPC”,在“访问控制>安全组”中找到本实验创建的安全组,点击操作栏的“更多>删除”。
步骤5 删除VPC。
在服务列表中选择“虚拟私有云VPC”,点击“子网”页签,在列表中找到本实验创建的子网,点击操作栏中的“删除”。
点击“虚拟私有云”页签,找到本实验创建的VPC,点击操作栏中的“删除”。