如何使用LAMP堆栈在Ubuntu20.04上安装WordPress

来自菜鸟教程
跳转至:导航、​搜索

介绍

WordPress 是当今在互联网上制作网站和博客的一种非常流行的开源技术。 由 63% of 所有使用内容管理系统 (CMS) 的网站使用,WordPress 网站代表 36% of 所有当前在线的网站。

访问 WordPress 有许多不同的方法,并且一些设置过程比其他过程更复杂。 本教程适用于那些希望通过命令行在非托管云服务器上安装和管理 Wordpress 实例的人。 尽管这种方法比现成的 WordPress 安装需要更多的步骤,但它为管理员提供了对其 WordPress 环境的更大控制权。

如果您希望访问现成的 WordPress 安装,DigitalOcean Marketplace 提供一键式应用程序,让您在启动服务器时通过安装开始使用 WordPress。


根据您的需求和目标,您可能会找到其他更合适的选择。 作为开源软件,WordPress 可以免费下载和安装,但要在网络上可用,您可能需要购买云基础设施和域名。 如果您有兴趣完成服务器端安装和设置 WordPress 站点,请继续遵循本指南。

本教程将使用 LAMP(Linux、Apache、MySQL 和 PHP)堆栈,这是一个通过提供 Linux 操作系统、Apache Web 服务器、MySQL 数据库和 PHP 编程语言来支持 WordPress 的服务器架构的选项。 我们将通过 LAMP 在 Linux Ubuntu 20.04 服务器上安装和设置 WordPress。

先决条件

为了完成本教程,您需要访问 Ubuntu 20.04 服务器,并且需要在开始本指南之前完成以下步骤:

  • 按照我们的 Ubuntu 20.04 初始服务器设置指南 设置您的服务器,并确保您有一个非 root sudo 用户。
  • 按照我们的LAMP指南安装LAMP堆栈来安装和配置这个软件。
  • 保护您的网站:WordPress 接受用户输入并存储用户数据,因此具有一层安全性很重要。 TLS/SSL 是允许您加密来自您的站点的流量的技术,以便您和您的用户的连接是安全的。 您可以使用以下两个选项来满足此要求: 如果您有域名……您可以使用 Let's Encrypt 保护您的网站,它提供免费的、受信任的证书。 按照我们的 Apache 加密指南进行设置。 如果您没有域......并且您只是将此配置用于测试或个人使用,则可以使用自签名证书。 这提供了相同类型的加密,但没有域验证。 按照我们的 Apache 自签名 SSL 指南进行设置。

完成设置步骤后,以 sudo 用户身份登录服务器并继续下面的操作。

第 1 步 — 为 WordPress 创建 MySQL 数据库和用户

我们将采取的第一步是准备工作。 WordPress 使用 MySQL 来管理和存储站点和用户信息。 我们已经安装了 MySQL,但是我们需要创建一个数据库和一个用户供 WordPress 使用。

首先,通过发出以下命令登录 MySQL 根(管理)帐户(请注意,这不是您服务器的根用户):

mysql -u root -p

安装软件时,系统会提示您输入为 MySQL root 帐户设置的密码。

注意:如果您无法通过 root 访问 MySQL 数据库,作为 sudo 用户,您可以通过登录数据库来更新您的 root 用户密码,如下所示:

sudo mysql -u root

收到 MySQL 提示后,您可以更新 root 用户的密码。 在这里,将 new_password 替换为您选择的强密码。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; 

您现在可以输入 EXIT; 并可以使用以下命令通过密码重新登录数据库:

mysql -u root -p

在数据库中,我们可以创建一个专属的数据库供 WordPress 控制。 您可以随意调用它,但我们将在本指南中使用名称 wordpress。 通过键入以下内容为 WordPress 创建数据库:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注意: 每条 MySQL 语句都必须以分号结尾(;)。 如果您遇到任何问题,请检查以确保它存在。


接下来,我们将创建一个单独的 MySQL 用户帐户,专门用于操作我们的新数据库。 创建特定的数据库和帐户可以从管理和安全的角度为我们提供支持。 我们将在本指南中使用名称 wordpressuser,但您可以随意使用与您相关的任何名称。

我们将创建此帐户、设置密码并授予对我们创建的数据库的访问权限。 我们可以通过输入以下命令来做到这一点。 请记住在此处为我们拥有 password 的数据库用户选择一个强密码:

CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

接下来,让数据库知道我们的 wordpressuser 应该可以完全访问我们设置的数据库:

GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';

您现在有一个数据库和用户帐户,每个帐户都是专门为 WordPress 制作的。 我们需要刷新权限,以便 MySQL 的当前实例知道我们最近所做的更改:

FLUSH PRIVILEGES;

输入以下命令退出 MySQL:

EXIT;

在下一步中,我们将通过为我们的服务器下载 PHP 扩展来为 WordPress 插件奠定一些基础。

第 2 步 — 安装额外的 PHP 扩展

在设置 LAMP 堆栈时,我们只需要极少的扩展集即可让 PHP 与 MySQL 通信。 WordPress 及其许多插件利用了额外的 PHP 扩展。

我们可以通过键入以下内容下载并安装一些最流行的用于 WordPress 的 PHP 扩展:

sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

这将为在我们的 WordPress 网站中安装其他插件奠定基础。

注意: 每个 WordPress 插件都有自己的一套要求。 有些可能需要安装额外的 PHP 包。 检查您的插件文档以发现其 PHP 要求。 如果它们可用,则可以使用 apt 安装它们,如上所示。


我们需要重新启动 Apache 来加载这些新的扩展,我们将在下一节中对 Apache 进行更多配置,因此您可以等到那时,或者现在重新启动以完成 PHP 扩展过程。

sudo systemctl restart apache2

第 3 步 — 调整 Apache 的配置以允许 .htaccess 覆盖和重写

接下来,我们将对我们的 Apache 配置进行一些小的调整。 根据先决条件教程,您应该在 /etc/apache2/sites-available/ 目录中有您站点的配置文件。

在本指南中,我们将使用 /etc/apache2/sites-available/wordpress.conf 作为示例,但您应该在适当的地方替换配置文件的路径。 此外,我们将使用 /var/www/wordpress 作为 WordPress 安装的根目录。 您应该使用您自己的配置中指定的 Web 根目录。 如果您遵循我们的 LAMP 教程,在这两种情况下,它可能是您的域名而不是 wordpress

注意: 您可能正在使用 000-default.conf 默认配置(以 /var/www/html 作为您的 Web 根目录)。 如果您只想在此服务器上托管一个网站,则可以使用此功能。 如果没有,最好将必要的配置拆分为逻辑块,每个站点一个文件。


确定路径后,我们可以继续使用 .htaccess,以便 Apache 可以在每个目录的基础上处理配置更改。

启用 .htaccess 覆盖

目前,禁用 .htaccess 文件。 WordPress 和许多 WordPress 插件广泛使用这些文件来对 Web 服务器的行为进行目录内调整。

使用 nano 等文本编辑器打开网站的 Apache 配置文件。

sudo nano /etc/apache2/sites-available/wordpress.conf

要允许 .htaccess 文件,我们需要在指向我们文档根目录的 Directory 块中设置 AllowOverride 指令。 在配置文件的 VirtualHost 块内添加以下文本块,确保使用正确的 Web 根目录:

/etc/apache2/sites-available/wordpress.conf

<Directory /var/www/wordpress/>
    AllowOverride All
</Directory>

完成后,保存并关闭文件。 在 nano 中,您可以通过同时按 CTRLX,然后按 Y,然后按 ENTER 来执行此操作。

启用重写模块

接下来,我们可以启用 mod_rewrite 以便我们可以利用 WordPress 永久链接功能:

sudo a2enmod rewrite

这使您可以在帖子中拥有更多人类可读的永久链接,例如以下两个示例:

http://example.com/2012/post-name/
http://example.com/2012/12/30/post-name

a2enmod 命令调用在 Apache 配置中启用指定模块的脚本。

启用更改

在我们实施我们所做的更改之前,请通过运行以下测试来检查以确保我们没有犯任何语法错误。

sudo apache2ctl configtest

您可能会收到如下输出:

OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

如果您希望取消顶行,只需在 /etc/apache2/apache2.conf 处的主(全局)Apache 配置文件中添加 ServerName 指令。 ServerName 可以是您服务器的域或 IP 地址。 但是,这只是一条消息,不会影响您网站的功能。 只要输出包含 Syntax OK,就可以继续。

重新启动 Apache 以实施更改。 即使您在本教程的前面已经重新启动,请确保现在重新启动。

sudo systemctl restart apache2

接下来,我们将下载并设置 WordPress 本身。

第 4 步 — 下载 WordPress

现在我们的服务器软件已经配置好了,我们可以下载并设置 WordPress。 特别是出于安全原因,始终建议从他们的站点获取最新版本的 WordPress。

切换到一个可写目录(我们推荐一个临时目录,如 /tmp)并下载压缩版本。

cd /tmp
curl -O https://wordpress.org/latest.tar.gz

提取压缩文件以创建 WordPress 目录结构:

tar xzvf latest.tar.gz

我们将暂时将这些文件移动到我们的文档根目录中。 在此之前,我们可以添加一个虚拟的 .htaccess 文件,以便 WordPress 稍后使用。

通过键入以下内容创建文件:

touch /tmp/wordpress/.htaccess

我们还将示例配置文件复制到 WordPress 读取的文件名:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

我们还可以创建 upgrade 目录,这样 WordPress 在更新其软件后尝试自行执行此操作时不会遇到权限问题:

mkdir /tmp/wordpress/wp-content/upgrade

现在,我们可以将目录的全部内容复制到我们的文档根目录中。 我们在源目录的末尾使用一个点表示应该复制目录中的所有内容,包括隐藏文件(如我们创建的 .htaccess 文件):

sudo cp -a /tmp/wordpress/. /var/www/wordpress

确保将 /var/www/wordpress 目录替换为您在服务器上设置的目录。

第 5 步 — 配置 WordPress 目录

在我们进行基于 Web 的 WordPress 设置之前,我们需要调整 WordPress 目录中的一些项目。

调整所有权和权限

我们需要完成的一个重要步骤是设置合理的文件权限和所有权。

我们首先将所有文件的所有权授予 www-data 用户和组。 这是运行 Apache Web 服务器的用户,Apache 需要能够读取和写入 WordPress 文件,以便为网站提供服务并执行自动更新。

使用允许您修改文件所有权的 chown 命令更新所有权。 请务必指向您服务器的相关目录。

sudo chown -R www-data:www-data /var/www/wordpress

接下来我们将运行两个 find 命令来设置 WordPress 目录和文件的正确权限:

sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

这些权限应该可以让您有效地使用 WordPress,但请注意,某些插件和程序可能需要额外的调整。

设置 WordPress 配置文件

现在,我们需要对主 WordPress 配置文件进行一些更改。

当我们打开文件时,我们的首要任务是调整一些密钥,为我们的安装提供一定程度的安全性。 WordPress 为这些值提供了一个安全的生成器,因此您不必自己尝试提出好的值。 这些仅在内部使用,因此在这里使用复杂、安全的值不会损害可用性。

要从 WordPress 密钥生成器中获取安全值,请键入:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

您将获得类似于输出的唯一值,类似于下面的块。

警告! 每次都请求唯一值很重要。 NOT 复制下面的值!


Outputdefine('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

这些是我们可以直接粘贴到配置文件中以设置安全密钥的配置行。 复制您现在收到的输出。

接下来,打开 WordPress 配置文件:

sudo nano /var/www/wordpress/wp-config.php

查找包含这些设置的示例值的部分。

/var/www/wordpress/wp-config.php

. . .

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');

. . .

删除这些行并粘贴您从命令行复制的值:

/var/www/wordpress/wp-config.php

. . .

define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');

. . .

接下来,我们要修改文件开头的一些数据库连接设置。 您需要调整您在 MySQL 中配置的数据库名称、数据库用户和相关密码。

我们需要进行的另一项更改是设置 WordPress 应该用来写入文件系统的方法。 由于我们已授予 Web 服务器写入所需位置的权限,因此我们可以将文件系统方法显式设置为“直接”。 未能使用我们当前的设置进行设置将导致 WordPress 在我们执行某些操作时提示输入 FTP 凭据。

可以在数据库连接设置下方或文件中的任何其他位置添加此设置:

/var/www/wordpress/wp-config.php

. . .

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );


. . .

define('FS_METHOD', 'direct');

完成后保存并关闭文件。

第 6 步 — 通过 Web 界面完成安装

现在服务器配置完成,我们可以通过web界面完成安装。

在您的网络浏览器中,导航到您的服务器的域名或公共 IP 地址:

https://server_domain_or_IP

选择您要使用的语言:

接下来,您将进入主设置页面。

为您的 WordPress 网站选择一个名称并选择一个用户名。 出于安全考虑,建议选择独特的用户名并避免使用“admin”等常见用户名。 自动生成强密码。 保存此密码或选择其他强密码。

输入您的电子邮件地址并选择是否要阻止搜索引擎将您的网站编入索引:

当您单击前进时,您将被带到一个提示您登录的页面:

登录后,您将被带到 WordPress 管理仪表板:

至此,您可以开始设计您的 WordPress 网站了! 如果这是您第一次使用 WordPress,请稍微探索一下界面以熟悉您的新 CMS。

结论

恭喜,WordPress 现已安装并可以使用了!

此时您可能想要开始执行以下操作:

  • 选择您的 WordPress 帖子的永久链接设置,可以在 Settings > Permalinks 中找到。
  • Appearance > Themes 中选择一个新主题。
  • Plugins > Add New 下安装新插件以增加您网站的功能。
  • 如果您要与其他人协作,此时您可能还希望在 Users > Add New 下添加其他用户。

您可以通过查看我们的 WordPress 社区标签 找到有关安装 WordPress 的替代方法的其他资源、了解如何在不同的服务器发行版上安装 WordPress、自动化您的 WordPress 安装以及扩展您的 WordPress 站点。