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

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

介绍

WordPress 是一种流行的开源 内容管理系统 (CMS),允许用户在其网站上创建、自定义和管理内容。 CMS 提供了构建网站的基本基础架构,这对于可能不具备从头开始构建和编码自己的网站的知识的用户很有用。 WordPress CMS 具有许多自定义工具,例如具有用户友好界面的管理仪表板,可用于创建新网页、添加媒体等。 由于这些原因,WordPress 是当今市场上最常用的 CMS 之一。

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

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

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

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


先决条件

要完成本教程,您需要:

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

完成设置后,以 sudo 用户身份登录服务器并继续第一步。

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

第一步是准备阶段。 WordPress 使用 MySQL 来管理和存储站点和用户信息。 您已经安装了 MySQL,但需要创建一个数据库和一个用户供 WordPress 使用。

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

sudo mysql

注意: 如果您按照先决条件中列出的教程以外的教程安装 MySQL,您可能已经为您的 MySQL 根用户启用了密码验证。 如果是这样,您可以使用以下命令连接到 MySQL:

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 扩展。

您可以下载并安装一些最流行的 PHP 扩展以用于 WordPress。 但首先,使用 APT 包管理工具更新您的本地包索引:

sudo apt update

然后您可以为 WordPress 安装各种 PHP 扩展:

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

重新启动后,或者如果您选择等待,您可以继续到下一部分开始调整 Apache 配置。

第 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 服务器的行为进行目录内调整。

使用您喜欢的文本编辑器打开您网站的 Apache 配置文件。 在这里,我们将使用 nano

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

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

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

<VirtualHost *:80>
. . .
    <Directory /var/www/wordpress/>
        AllowOverride All
    </Directory>
. . .
</VirtualHost>

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

启用重写模块

接下来,您可以启用 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 命令下载压缩版本:

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 文件)。 确保将 /var/www/wordpress 目录替换为您在服务器上设置的目录:

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

您现在已准备好配置您的 WordPress 目录。

第 5 步 — 配置 WordPress 目录

在开始基于 Web 的 WordPress 设置之前,您需要调整 WordPress 目录中的一些项目。

调整所有权和权限

另一个重要步骤是为 WordPress 用于运行的文件和目录设置合理的文件权限和所有权。

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

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

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

接下来,运行两个 find 命令来设置 WordPress 目录和文件的正确权限。 第一个 find 命令设置 /var/www/<>^wordpress<^> 目录中的每个目录,并将每个目录的权限设置为 750

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

这个找到目录中的每个文件并将它们的权限设置为 640

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 服务器写入所需位置的权限,因此您可以将文件系统方法显式设置为“direct”。 未能使用当前设置进行设置将导致 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 帖子选择永久链接设置,可在 设置 > 永久链接 中找到。
  • 外观 > 主题 中选择一个新主题。
  • Plugins > Add New 下安装新插件以增加您网站的功能。
  • 如果您要与其他人协作,此时您可能还希望在 用户 > 添加新的 下添加其他用户。

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