Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

教程:使用 Amazon Linux 托管 WordPress 博客

以下步骤将帮助您在 Amazon Linux 实例上安装、配置和保护 WordPress 博客。本教程是很好的 Amazon EC2 入门教程,因为您可以完全控制托管您 WordPress 博客的 Web 服务器,这对传统的托管服务来说并不是一个典型的方案。

您负责更新软件包并为您的服务器维护安全补丁。对于不需要与 Web 服务器配置直接交互的更自动化 WordPress 安装来说,AWS CloudFormation 服务还会提供可让您快速入门的 WordPress 模板。有关更多信息,请参阅 AWS CloudFormation 用户指南 中的入门。如果您更喜欢将您的 WordPress 博客托管在 Windows 实例上,请参阅 Amazon EC2 用户指南(适用于 Windows 实例) 中的在您的 Amazon EC2 Windows 实例上部署 WordPress 博客。如果您需要带断开连接数据库的高可用性解决方案,请参阅 AWS Elastic Beanstalk 开发人员指南 中的部署高可用性 WordPress 网站

重要

这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。本教程中的很多步骤对 Ubuntu 实例并不适用。有关在 Ubuntu 实例上安装 WordPress 的帮助,请参阅 Ubuntu 文档中的 WordPress

先决条件

此教程假设您已遵照教程:使用 Amazon Linux AMI 安装 LAMP Web 服务器 中的所有步骤 (适用于 Amazon Linux AMI),或 教程:在 Amazon Linux 2 上安装 LAMP Web 服务器 中的所有步骤 (适用于 Amazon Linux 2) 启动了一个 Amazon Linux 实例,其中包含支持 PHP 和数据库 (MySQL 或 MariaDB) 的功能正常的 Web 服务器。本教程还介绍了配置安全组以允许 HTTPHTTPS 流量的步骤,以及用于确保为 Web 服务器正确设置文件权限的几个步骤。有关添加规则到您安全组的信息,请参阅 向安全组添加规则

强烈建议您将弹性 IP 地址 (EIP) 与您正用于托管 WordPress 博客的实例关联。这将防止您的实例的公有 DNS 地址更改和中断您的安装。如果您有一个域名且打算将其用于您的博客,则可更新该域名的 DNS 记录,使其指向您的 EIP 地址 (如需帮助,请联系您的域名注册商)。您可以免费将一个 EIP 地址与正在运行的实例相关联。有关更多信息,请参阅 弹性 IP 地址

如果您的博客还没有域名,则可使用 Route 53 注册一个域名并将您的实例的 EIP 地址与您的域名相关联。有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用 Amazon Route 53 注册域名

安装 WordPress

连接到您的实例,并下载 WordPress 安装包。

下载并解压 WordPress 安装包

  1. 使用 wget 命令下载最新 WordPress 安装包。以下命令始终会下载最新版本。

    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
  2. 解压并解档安装包。安装文件夹解压到名为 wordpress 的文件夹。

    [ec2-user ~]$ tar -xzf latest.tar.gz

为安装 WordPress 创建数据库用户和数据库

安装 WordPress 需要存储信息,例如数据库中的博客文章和用户评论。此步骤将帮助您为自己的博客创建一个数据库,并创建一个有权读取该数据库的信息并将信息保存到该数据库的用户。

  1. 启动数据库服务器。

    • Amazon Linux AMIsudo service mysqld start

    • Amazon Linux 2sudo systemctl start mariadb

  2. root 用户身份登录数据库服务器。在系统提示时输入您的数据库 root 密码,它可能与您的 root 系统密码不同;如果您尚未给您的数据库服务器加密,它甚至可能是空的。

    重要

    如果您尚未给您的数据库服务器加密,则必须执行这项操作。有关更多信息,请参阅 确保数据库服务器的安全

    [ec2-user ~]$ mysql -u root -p
  3. 为您的 MySQL 数据库创建用户和密码。安装 WordPress 的过程将使用这些值与您的 MySQL 数据库通信。输入以下命令,以替换唯一的用户名和密码。

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

    确保为您的用户创建强密码。请勿在您的密码中使用单引号字符 ('),因为这将中断前面的命令。有关创建安全密码的更多信息,请转至 http://www.pctools.com/guides/password/。请勿重复使用现有密码,并确保将密码保存在安全的位置。

  4. 创建数据库。为数据库提供一个有意义的描述性名称,例如 wordpress-db

    注意

    以下命令中数据库名称两边的标点符号称为反引号。在标准键盘上,反引号 (`) 键通常位于 Tab 键的上方。并不总是需要反引号,但是它们允许您在数据库名称中使用其他的非法字符,例如连字符。

    CREATE DATABASE `wordpress-db`;
  5. 对您之前创建的 WordPress 用户授予您数据库的完全访问权限。

    GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
  6. 刷新数据库权限以接受您的所有更改。

    FLUSH PRIVILEGES;
  7. 退出 mysql 客户端。

    exit

创建和编辑 wp-config.php 文件

WordPress 安装文件夹包含名为 wp-config-sample.php 的示例配置文件。在本步骤中,您将复制此文件并进行编辑以适合您的具体配置。

  1. wp-config-sample.php 文件复制为一个名为 wp-config.php 的文件。这样做会创建新的配置文件并将原先的示例配置文件原样保留作为备份。

    [ec2-user wordpress]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
  2. 使用常用文本编辑器 (如 wp-config.phpnanovim) 来编辑 文件,然后输入安装的值。如果您没有喜欢的文本编辑器,nano 对于初学者来说比较容易使用。

    [ec2-user wordpress]$ nano wordpress/wp-config.php
    1. 查找定义 DB_NAME 的行并将 database_name_here 更改为您在 步骤 4为安装 WordPress 创建数据库用户和数据库 中创建的数据库名称。

      define('DB_NAME', 'wordpress-db');
    2. 查找定义 DB_USER 的行并将 username_here 更改为您在 步骤 3为安装 WordPress 创建数据库用户和数据库 中创建的数据库用户。

      define('DB_USER', 'wordpress-user');
    3. 查找定义 DB_PASSWORD 的行并将 password_here 更改为您在 步骤 3为安装 WordPress 创建数据库用户和数据库 中创建的强密码。

      define('DB_PASSWORD', 'your_strong_password');
    4. 查找名为 Authentication Unique Keys and Salts 的一节。这些 KEYSALT 值为 WordPress 用户存储在其本地计算机上的浏览器 Cookie 提供了加密层。总而言之,添加长的随机值将使您的站点更安全。访问 https://api.wordpress.org/secret-key/1.1/salt/ 随机生成一组密钥值,您可以将这些密钥值复制并粘贴到 wp-config.php 文件中。要粘贴文本到 PuTTY 终端,请将光标放在您要粘贴文本的地方,并在 PuTTY 终端内部右键单击鼠标。

      有关安全密钥的更多信息,请转至 http://codex.wordpress.org/Editing_wp-config.php#Security_Keys

      注意

      以下值仅用作示例;请勿使用以下值进行安装。

      define('AUTH_KEY', ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-'); define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg'); define('LOGGED_IN_KEY', 'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3'); define('NONCE_KEY', 'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj'); define('AUTH_SALT', 'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h'); define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv'); define('LOGGED_IN_SALT', ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/'); define('NONCE_SALT', '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. 保存文件并退出您的文本编辑器。

将 WordPress 文件安装到 Apache 文档根目录下

  1. 现在,您已解压了安装文件夹、创建了 MySQL 数据库和用户并自定义了 WordPress 配置文件,那么也就准备好将您的安装文件复制到 Web 服务器文档根目录,以便可以运行安装脚本完成安装。这些文件的位置取决于您是希望 WordPress 博客位于 Web 服务器的实际根目录 (例如,my.public.dns.amazonaws.com) 还是位于根目录下的某个子目录或文件夹 (例如,my.public.dns.amazonaws.com/blog) 中。

  2. 如果您希望 Wordpress 在文档根目录下运行,请复制 wordpress 安装目录的内容 (但不包括目录本身),如下所示:

    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
  3. 如果您希望 Wordpress 在文档根目录下的其他目录中运行,请先创建该目录,然后将文件复制到其中。在此示例中,WordPress 将从目录 blog 运行:

    [ec2-user ~]$ mkdir /var/www/html/blog [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/

重要

出于安全原因,如果您不打算立即进入到下一个过程,请立即停止 Apache Web 服务器 (httpd)。将安装文件移动到 Apache 文档根目录下后,WordPress 安装脚本将不受保护,如果 Apache Web 服务器运行,攻击者可能会获得访问您博客的权限。要停止 Apache Web 服务器,请输入命令 sudo service httpd stop。如果您即将继续到下一个步骤,则不需要终止 Apache Web 服务器。

允许 WordPress 使用 permalink

WordPress permalink 需要使用 Apache .htaccess 文件才能正常工作,但默认情况下这些文件在 Amazon Linux 上处于禁用状态。使用此过程可允许 Apache 文档根目录中的所有覆盖。

  1. 使用您常用的文本编辑器 (如 httpd.confnanovim) 打开 文件。如果您没有喜欢的文本编辑器,nano 对于初学者来说比较容易使用。

    [ec2-user wordpress]$ sudo vim /etc/httpd/conf/httpd.conf
  2. 找到以 <Directory "/var/www/html"> 开头的部分。

    <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
  3. 在以上部分中将 AllowOverride None 行改为读取 AllowOverride All

    注意

    此文件中有多个 AllowOverride 行;请确保更改 <Directory "/var/www/html"> 部分中的行。

    AllowOverride All
  4. 保存文件并退出您的文本编辑器。

修复 Apache Web 服务器的文件权限

WordPress 中的某些可用功能要求具有对 Apache 文档根目录的写入权限 (例如通过“Administration (管理)”屏幕上传媒体)。如果您尚未进行此操作,请应用以下组成员关系和权限 (在 LAMP Web 服务器教程中有更为详细的描述)。

  1. /var/www 及其内容的文件所有权更改到 apache 用户。

    [ec2-user wordpress]$ sudo chown -R apache /var/www
  2. /var/www 及其内容的组所有权更改到 apache 组。

    [ec2-user wordpress]$ sudo chgrp -R apache /var/www
  3. 更改 /var/www 及其子目录的目录权限,以添加组写入权限及设置未来子目录上的组 ID。

    [ec2-user wordpress]$ sudo chmod 2775 /var/www
  4. 递归地更改 /var/www 及其子目录的文件权限,以添加组写入权限。

    [ec2-user wordpress]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. 重启 Apache Web 服务器,让新组和权限生效。

    • Amazon Linux AMIsudo service httpd restart

    • Amazon Linux 2sudo systemctl restart httpd

运行 WordPress 安装脚本

  1. 使用 chkconfig 命令确保 httpd 和数据库服务在每次系统启动时启动。

    • Amazon Linux AMIsudo chkconfig enable httpd && sudo chkconfig enable mysql

    • Amazon Linux 2sudo systemctl enable httpd && sudo systemctl enable mariadb

  2. 验证数据库服务器是否正在运行。

    • Amazon Linux AMIsudo service mysqld status

    • Amazon Linux 2sudo systemctl status mariadb

    如果数据库服务未运行,请启动。

    • Amazon Linux AMIsudo service mysqld start

    • Amazon Linux 2sudo systemctl start mariadb

  3. 验证您的 Apache Web 服务器 (httpd) 正在运行。

    • Amazon Linux AMIsudo service httpd status

    • Amazon Linux 2sudo systemctl status httpd

    如果 httpd 服务未运行,请启动。

    • Amazon Linux AMIsudo service httpd start

    • Amazon Linux 2sudo systemctl start httpd

  4. 在 Web 浏览器中,输入您 WordPress 博客的 URL (您的实例的公有 DNS 地址,或者该地址后跟 blog 文件夹)。您应该可以看到 WordPress 安装屏幕。

    http://my.public.dns.amazonaws.com
     Wordpress 安装屏幕
  5. 将其余安装信息输入 WordPress 安装向导。

    字段
    Site Title (网站标题) 为您的 WordPress 网站输入名称。
    Username 为您的 WordPress 管理员输入名称。出于安全原因,您应为此用户选择一个唯一名称,因为与默认用户名称 admin 相比,该名称更难破解。
    密码 输入强密码,然后再次输入进行确认。请勿重复使用现有密码,并确保将密码保存在安全的位置。
    Your E-mail (您的电子邮件) 输入您用于接收通知的电子邮件地址。
  6. 单击 Install WordPress (安装 WordPress) 完成安装。

恭喜您,您现在应该可以登录您的 WordPress 博客并开始发布博客文章。

后续步骤

在测试初始 WordPress 博客后,请考虑更新其配置。

使用自定义域名

如果您有一个与您的 EC2 实例的 EIP 地址关联的域名,则可将您的博客配置为使用该域名而不是 EC2 公有 DNS 地址。有关更多信息,请参阅 http://codex.wordpress.org/Changing_The_Site_URL

配置您的博客

您可以将您的博客配置为使用不同的主题插件,从而向您的读者提供更具个性化的体验。但是,有时安装过程可能事与愿违,从而导致您丢失您的整个博客。强烈建议您在尝试安装任何主题或插件之前,为您的实例创建一个备份 Amazon 系统映像 (AMI),以便在安装过程中出现任何问题时,您还可以还原您的博客。有关更多信息,请参阅 创建您自己的 AMI

添加容量

如果您的 WordPress 博客变得受关注并且您需要更多计算能力或存储,请考虑以下步骤:

了解有关 WordPress 的更多信息

有关 WordPress 的信息,请参阅 http://codex.wordpress.org/ 上的 WordPress Codex 帮助文档。有关排除安装故障的更多信息,请转至 http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems。有关如何使您的 WordPress 博客更安全的信息,请转至 http://codex.wordpress.org/Hardening_WordPress。有关如何让您的 WordPress 博客保持最新的信息,请转至 http://codex.wordpress.org/Updating_WordPress

帮助! 我的公有 DNS 名称发生更改导致我的博客瘫痪

已使用您的 EC2 实例的公有 DNS 地址自动配置您的 WordPress 安装。如果您停止并重启实例,公有 DNS 地址将发生更改 (除非它与弹性 IP 地址相关联),并且您的博客将不会再运行,因为您的博客引用了不再存在的地址 (或已分配给另一个 EC2 实例的地址) 上的资源。http://codex.wordpress.org/Changing_The_Site_URL 中概括了有关该问题的更多详细和几个可能的解决方案。

如果您的 WordPress 安装发生了此问题,您可以使用以下过程恢复您的博客,该过程使用了适用于 WordPress 的 wp-cli 命令行界面。

使用 wp-cli 更改您的 WordPress 站点 URL

  1. 使用 SSH 连接到您的 EC2 实例。

  2. 请记下您的实例的旧站点 URL 和新站点 URL。安装了 WordPress 之后,旧站点 URL 可能是您的 EC2 实例的公有 DNS 名称。新站点 URL 是您的 EC2 实例的当前公有 DNS 名称。如果您不确定您的旧站点 URL,则可通过以下命令使用 curl 来查找它。

    [ec2-user ~]$ curl localhost | grep wp-content

    您应该会在输出中看到对您的旧公有 DNS 名称的引用,如下所示 (旧站点 URL 用红色表示):

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. 使用以下命令下载 wp-cli

    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. 使用以下命令在 WordPress 安装中搜索并替换旧站点 URL。替换您的 EC2 实例的旧站点 URL 和新站点 URL 和到您的 WordPress 安装的路径 (通常为 /var/www/html/var/www/html/blog)。

    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. 在 Web 浏览器中,输入您的 WordPress 博客的新站点 URL 以验证站点是否再次正常运行。如果未正常运行,有关更多信息,请参阅 http://codex.wordpress.org/Changing_The_Site_URLhttp://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems