如何在 AWS 上构建 WordPress

WordPress 构建

您好,
我是系统解决方案部门的矢谷。上个月,我生平第一次染发,但因为没有采取任何措施,第一次就染成了蓝色。
现在看来,我好像没有安全的选择了,所以想问问大家下次应该染什么颜色。

我的第一篇 Beyond Blog 文章将介绍如何使用 AWS 服务构建 LAMP 环境,并最终实现 WordPress 发布功能。我不会详细介绍
每项服务,因为那样文章会太长,所以我只会简要介绍一下设置。
*我们将创建一个 Web 和数据库位于同一服务器上的配置。*

AWS

[VPC]
名称:wp-test-vpc
CIDR:10.0.0.0/16

[互联网网关]
标签名称:wp-test-igw
键名 值:wp-test-igw

创建完成后,选择 wp-test-igw,然后从“操作”菜单中选择“附加到 VPC”。
可用 VPC:wp-test-vpc

[路由表]
名称标签:wp-test-rt
VPC:wp-test-vpc
创建后,选择 wp-test-rt ⇒ 编辑路由 ⇒ 添加路由
目标地址:0.0.0.0/0 目标地址:wp-test-igw

[子网]
名称:wp-test-public-subnet-1a
VPC:wp-test-vpc
CIDR:10.0.0.0/24

[安全组]
安全组名称:wp-test-sg
描述:wp-test-sg
VPC:wp-test-vpc
入站规则
类型:SSH 协议:TCP 端口范围:22 源:我的 IP
类型:HTTP 协议:TCP 端口范围:80 源:自定义 0.0.0.0/0

[EC2]
Amazon Linux 2
t2.micro
VPC:wp-test-VPC
子网:wp-test-public-subnet-1a
自动分配的公网 IP:已启用
存储:默认
标签键:名称 值:wp-test-ec2
安全组:wp-test-sg
密钥对:
创建新密钥对 密钥
对名称:wp-test-key

现在我们已经完成了 AWS 控制台中的任务,接下来将在服务器上安装和配置中间件。
您可以使用命令提示符或 Windows PowerShell 等工具连接到服务器,只需指定密钥、用户名和公网 IP 地址即可,如下所示:
ssh -i wp-test.pem ec2-user@【公网 IP】

阿帕奇

我们先来安装 Apache。

# yum install httpd -y

只要最后显示“完成!”就可以了。

启动 Apache

# systemctl start httpd

按如下方式配置自动启动,以便即使重启实例也能自动启动。

# systemctl enable httpd

请查看下方,如果已启用,则表示正常。

# systemctl is-enabled httpd

我们将创建一个虚拟主机,并设置以下参数:
路径:/etc/httpd/conf.d/wp-test.conf
服务器名称:wp-test
文档根目录:/var/www/html/wp-test
访问日志:/var/log/httpd/wp-test-access_log
错误日志:/var/log/httpd/wp-test-error_log

首先,创建文档根目录和验证文件。

# vi /var/www/html/wp-test/index.html 测试
# vi /etc/httpd/conf.d/wp-test.conf <VirtualHost *:80> ServerName wp-test DocumentRoot "/var/www/html/wp-test" CustomLog "/var/log/httpd/wptest-access_log" combined ErrorLog "/var/log/httpd/wptest-error_log" </VirtualHost>

由于我们对配置文件进行了一些更改,因此需要重启 Apache 服务才能使更改生效。

# systemctl restart httpd

如果在浏览器中搜索公网 IP 地址,并且显示“test”,则说明没问题。
确认无误后,删除 index.html 文件。

# rm -f /var/www/html/wp-test/index.html

PHP

现在我们来安装 PHP。
默认情况下只安装了 5.4 版本,所以我们首先安装 EPEL 仓库和 Remi 仓库。

# yum info php 已加载插件:extras_suggestions、langpacks、priorities、update-motd 可用软件包 名称:php 架构:x86_64 版本:5.4.16 发行版:46.amzn2.0.2 大小:1.4 M 仓库:amzn2-core/2/x86_64 摘要:用于创建动态网站的 PHP 脚本语言 URL:http://www.php.net/ 许可证:PHP、Zend 和 BSD 描述:PHP 是一种嵌入 HTML 的脚本语言。PHP 旨在让开发者轻松编写动态生成的网页。PHP 还为多种商业和非商业数据库管理系统提供内置的数据库集成,因此使用 PHP 编写支持数据库的网页相当简单。PHP 代码最常见的用途可能是替代 CGI 脚本。 php 包包含模块(通常称为 mod_php):该模块为 Apache HTTP 服务器添加了对 PHP 语言的支持。.

安装 epel 存储库

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

remi 存储库安装

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

我们来检查一下是否安装了7.3系列。

# yum info php --enablerepzo=remi-php73 已加载插件:extras_suggestions、langpacks、priorities、update-motd remi-php73 | 3.0 kB 00:00:00 remi-php73/primary_db | 234 kB 00:00:01 由于仓库优先级保护,已排除 261 个软件包 可用软件包 名称:php 架构:x86_64 版本:5.4.16 发行版:46.amzn2.0.2 大小:1.4 M 仓库:amzn2-core/2/x86_64 摘要:用于创建动态网站的 PHP 脚本语言 URL:http://www.php.net/ 许可证:PHP、Zend 和 BSD 描述:PHP 是一种嵌入 HTML 的脚本语言。PHP 旨在让开发人员能够轻松编写动态生成的网页。 PHP 还内置了对多种商业和非商业数据库管理系统的数据库集成,因此使用 PHP 编写支持数据库的网页相当简单。PHP 代码最常见的用途可能是替代 CGI 脚本。php 包包含一个模块(通常称为 mod_php),该模块为 Apache HTTP 服务器添加了对 PHP 语言的支持。.

现在是 5.4 版本。
这是因为 amzn2-core 存储库的优先级更高。

# less /etc/yum.repos.d/amazon-2-core.repo [amzn2-core] name=Amazon Linux 2 core repository mirrorlist=$awsproto://$amazonlinux.$awsregion.$awsdomain/$releasever/$product/$target/$basearch/mirror.list priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2 enabled=1 metadata_expire=300 mirrorlist_expire=300 report_instanceid=yes [省略]

它的优先级设置为“priority=10”,所以将其更改为“priority=99”以降低优先级。

# vi /etc/yum.repos.d/amazon-2-core.repo [amzn2-core] name=Amazon Linux 2 core repository mirrorlist=$awsproto://$amazonlinux.$awsregion.$awsdomain/$releasever/$product/$target/$basearch/mirror.list priority=99 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2 enabled=1 metadata_expire=300 mirrorlist_expire=300 report_instanceid=yes [省略]

再次确认一下。

# yum info php --enablerepo=remi-php73 已加载插件:extras_suggestions、langpacks、priorities、update-motd 由于仓库优先级保护,已排除 1 个软件包 可用软件包 名称:php 架构:x86_64 版本:7.3.27 发行版:1.el7.remi 大小:3.2 M 仓库:remi-php73 摘要:用于创建动态网站的 PHP 脚本语言 URL:http://www.php.net/ 许可证:PHP、Zend、BSD、MIT、ASL 1.0 和 NCSA 描述:PHP 是一种嵌入 HTML 的脚本语言。PHP 旨在让开发者轻松编写动态生成的网页。PHP 还为多种商业和非商业数据库管理系统提供内置的数据库集成,因此使用 PHP 编写支持数据库的网页相当简单。 PHP 代码最常见的用途可能是替代 CGI 脚本。php 包包含一个模块(通常称为 mod_php),该模块为 Apache HTTP 服务器添加了对 PHP 语言的支持。.

它已更新至 7.3 系列。

现在我们也来安装这个模块。

# yum install php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql --enablerepo=remi-php73

在文档根目录下创建一个名为 index.php 的文件。

# vi /var/www/html/index.php &lt;?php phpinfo(); ?&gt;

重启 Apache,在浏览器中搜索您的公网 IP 地址,如果您看到类似上面的页面,那么一切就绪。

MySQL

接下来是MySQL。

首先是安装。

# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

如果您使用以下命令检查 MySQL 版本,您会发现 8 系列已启用。

# yum repolist all repo id repo name status [省略] mysql57-community/x86_64 MySQL 5.7 Community Server disabled mysql80-community/x86_64 MySQL 8.0 Community Server enabled: 229 [省略]

这次我想安装 5.7 版本,所以我将禁用 8 版本并启用 5.7 版本。
禁用 8 版本

# yum-config-manager --disable mysql80-community 启用 5.7 系列 # yum-config-manager --enable mysql57-community

检查 5.7 版本是否已启用。

# yum repolist all [省略] mysql57-community/x86_64 MySQL 5.7 Community Server 已启用: 484 mysql80-community/x86_64 MySQL 8.0 Community Server 已禁用 [省略]

看起来没问题,所以我将安装 5.7 系列版本。

# yum install mysql-community-server

启动 MySQL

# systemctl start mysqld

就像 Apache 一样,将其设置为自动启动。

# systemctl enable mysqld

确认

# systemctl is-enabled mysqld enabled

访问MySQL之前,您必须先更改密码。
请检查您当前的密码

# grep password /var/log/mysqld.log [注意] 已为 root@localhost: xxxxxxxxx 生成临时密码

其中 xxxxxx 部分是密码。

更改密码

# mysql_secure_installation 正在保护 MySQL 服务器部署。请输入 root 用户密码:[之前的密码] root 用户帐户的现有密码已过期。请设置新密码。新密码:[新密码] 再次输入新密码:[再次输入] 'validate_password' 组件已安装在服务器上。后续步骤将使用该组件的现有配置运行。使用 root 用户的现有密码。密码强度估计:100 更改 root 用户的密码? (按 y|Y 表示“是”,按其他任意键表示“否”):y 新密码:重新输入新密码:密码强度估计值:100 是否继续使用提供的密码?(按 y|Y 表示“是”,按其他任意键表示“否”):y 默认情况下,MySQL 安装会有一个匿名用户,允许任何人无需创建用户帐户即可登录 MySQL。这仅用于测试,并使安装过程更加顺畅。在迁移到生产环境之前,您应该删除这些匿名用户。#删除现有用户 删除匿名用户?(按 y|Y 表示“是”,按其他任意键表示“否”):y 成功。通常,root 用户应该只允许从“localhost”连接。这可以确保没有人能够从网络中猜测 root 密码。#禁止 root 用户远程登录?(按 y|Y 表示“是”,按其他任意键表示“否”):y 成功。默认情况下,MySQL 带有一个名为“test”的数据库,任何人都可以访问。这也仅用于测试,并且应该在迁移到生产环境之前,必须移除测试数据库及其访问权限。#移除测试数据库及其访问权限?(按 y|Y 表示“是”,按其他任意键表示“否”):y - 正在删除测试数据库... 成功。- 移除测试数据库的权限... 成功。重新加载权限表将确保所有更改立即生效。#现在重新加载权限表?(按 y|Y 表示“是”,按其他任意键表示“否”):y 成功。全部完成!

我们将登录 MySQL 并为 WordPress 创建一个数据库。
登录 MySQL

# mysql -u root -p 输入密码:[您刚刚设置的新密码]

创建数据库

mysql > 数据库 wp_test_db;

用户创建

mysql>create user 'wp_user'@'localhost' identified with mysql_native_password by 'password';

如果保持原样,创建的用户(wp_user)将无法操作数据库(wp_test_db),因此我们将授予其权限。

mysql > 授予 wp_user@'localhost' 对 wp_test_db.* 的所有权限;

MySQL配置已完成。

WordPress

最后,我们来安装 WordPress。
你可以把它安装在任何位置,但这次我们把它放在 ec2 用户的家目录中。

# cd /home/ec2-user

安装 WordPress 软件包

# wget https://ja.wordpress.org/latest-ja.tar.gz

请确认已安装。

# ls latest-ja.tar.gz

文件扩展名为 gz,表示它是压缩文件,因此请使用 tar 命令解压缩它。

# tar -zxvf latest-ja.tar.gz

使用 `ls` 命令确认文件已解压。
已创建一个名为 `wordpress` 的新目录

# ls latest-ja.tar.gz wordpress

将 wordpress 目录下的所有目录和文件移动到文档根目录。

# mv ./wordpress/* /var/www/html/wp-test/

按如下方式编辑wp-config-sample.php文件:

# vi wp-config-sample.php /** WordPress 数据库名称 */ define( 'DB_NAME', 'wp_test_db' ); /** MySQL 数据库用户名 */ define( 'DB_USER', 'wp_user' ); /** MySQL 数据库密码 */ define( 'DB_PASSWORD', '-GrrLr5A7ymN' );

我们快成功了!
如果您在浏览器中搜索公网 IP 地址,您将看到如下所示的屏幕。

点击“开始吧!”,然后输入您在 wp-config-sample.php 文件中输入的内容(您可以保留表前缀不变)。
接下来,系统会提示您创建一个如图所示的 wp-config.php 文件,并将内容粘贴到该文件中,请按照说明操作即可。

# vi /var/www/html/wp-test/wp-config.php {粘贴你复制的内容}

返回浏览器并继续。
最后,确定标题和用户名,保存用户名和密码,然后点击“安装 WordPress”。

登录 WordPress,随意发布内容,一旦内容显示出来,就完成了!

如果您觉得这篇文章对您有帮助,请点个“赞”!
3
加载中...
3票,平均分:1.00/13
4,356
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

八木谷靖希

2020年应届毕业生加入公司。
隶属于系统解决方案部门,负责
服务器的搭建、运维和维护。
资质:LPIC一级认证,SAA认证