Ubuntu 22.04 LEMP环境搭建WordPress:完整指南与最佳实践
引言
WordPress是互联网上最受欢迎的内容管理系统之一,它允许用户使用PHP处理的MySQL后端来设置灵活的博客和网站。WordPress是高效建立和运行网站的绝佳选择。完成初始设置后,几乎所有WordPress网站的管理工作都可以通过其图形化界面来完成。
在本教程中,您将专注于在一个Ubuntu 22.04服务器上使用LEMP堆栈(Linux、Nginx、MySQL和PHP)设置WordPress实例。
您也可以使用Silicon Cloud的托管WordPress服务。
先决条件
为了完成本教程,您需要访问一个Ubuntu 22.04服务器。为了在您的服务器上成功安装LEMP环境和WordPress,您还需要在开始本教程之前完成以下任务:
- 在您的服务器上创建sudo用户:本教程中的步骤使用的是具有sudo权限的非root用户。您可以按照我们的Ubuntu 22.04初始服务器设置教程来创建具有sudo权限的用户。
- 安装LEMP堆栈:WordPress需要一个Web服务器、一个数据库和PHP才能正常运行。设置LEMP堆栈(Linux、Nginx、MySQL和PHP)可以满足所有这些要求。请按照此教程安装和配置这些软件。
信息:
您可以使用Silicon Cloud的LEMP一键安装应用快速配置一个已安装LEMP堆栈的Ubuntu 22.04服务器,而无需自己设置这些组件。
请注意,本教程仍然假设您拥有一个管理sudo用户,并且在您的服务器上配置了Nginx服务器块。即使使用LEMP一键安装应用配置的服务器,您也需要遵循我们Ubuntu 22.04初始服务器设置教程的第1、2、3和5步。您还需要完成我们在Ubuntu 22.04上安装LEMP堆栈指南的第4步,以配置Nginx服务器块并配置Nginx使用PHP处理器。
- 使用SSL保护您的站点:WordPress提供动态内容并处理用户身份验证和授权。TLS/SSL是允许您加密站点流量以确保连接安全的技术。您设置SSL的方式将取决于您的站点是否拥有域名。
- 如果您有域名,保护站点的最简单方法是使用Let’s Encrypt,它提供免费、受信任的证书。请按照我们的Nginx Let’s Encrypt指南进行设置。
- 如果您没有域名,并且将此配置用于测试或个人用途,则可以使用自签名证书。这提供相同类型的加密,但没有域名验证。请按照我们的Nginx自签名SSL指南进行设置。
完成设置后,请以sudo用户身份登录您的服务器以继续。
第一步 — 为WordPress创建MySQL数据库和用户
WordPress使用MySQL来管理和存储站点和用户信息。尽管您已经安装了MySQL,但我们还是为WordPress创建一个数据库和用户。
首先,登录MySQL的root(管理)账户。如果MySQL配置为使用auth_socket
身份验证插件(这是默认设置),您可以使用sudo登录MySQL管理账户:
- sudo mysql
如果您已将身份验证方法更改为使用密码进行MySQL root账户登录,请使用以下命令代替:
- mysql -u root -p
系统将提示您输入为MySQL root账户设置的密码。
登录后,创建一个WordPress可以控制的独立数据库。您可以随意命名,但为了简单起见,本指南中我们将使用wordpress
。您可以通过输入以下命令为WordPress创建数据库:
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
注意:
每个MySQL语句都必须以分号(;)结尾。如果您遇到错误,请检查是否缺少分号。
这是文章《如何在Ubuntu 22.04上使用LEMP安装WordPress》的第2部分(共6部分)。
接下来,我们将创建一个独立的MySQL用户账户,专门用于操作我们新的数据库。从管理和安全的角度来看,创建单一用途的数据库和账户是一个好习惯。在本指南中,我们将使用wordpressuser
作为用户名——如果您愿意,可以更改它。
在以下命令中,您将创建一个账户,设置密码,并授予对您已创建数据库的访问权限。请记住在这里选择一个强密码:
- CREATE USER ‘wordpressuser‘@‘localhost’ IDENTIFIED BY ‘password‘;
- GRANT ALL ON wordpress.* TO ‘wordpressuser‘@‘localhost’;
您现在拥有了一个专门为WordPress创建的数据库和用户账户。
数据库任务完成后,我们通过输入以下命令退出MySQL:
- EXIT;
MySQL会话将退出,您将返回到常规的Linux Shell。
步骤2 — 安装额外的PHP扩展
在设置LEMP堆栈时,它只需要最少的扩展来使PHP与MySQL通信。WordPress及其许多插件都利用了额外的PHP扩展,您将在本教程中使用更多。
让我们通过输入以下命令下载并安装一些最常用的WordPress PHP扩展:
- sudo apt update
- sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
注意
当您完成扩展安装后,请重启PHP-FPM进程,以便运行中的PHP处理器能够利用新安装的功能:
- sudo systemctl restart php8.1-fpm
您现在已在服务器上安装了所有必需的PHP扩展。
步骤3 — 配置Nginx
接下来,让我们对Nginx服务器块文件进行一些调整。根据先决条件教程,您应该在/etc/nginx/sites-available/
目录中有一个站点的配置文件,该文件配置为响应您的服务器域名或IP地址,并受TLS/SSL证书保护。我们将使用/etc/nginx/sites-available/wordpress
作为示例,但您应该在适当的地方替换为您的配置文件路径。
此外,在本指南中,我们将使用/var/www/wordpress
作为WordPress安装的根目录。同样,您应该使用您自己配置中指定的Web根目录。
注意
/etc/nginx/sites-available/default
默认配置(Web根目录为/var/www/html
)。如果您只打算在此服务器上托管一个网站,这可以正常使用。如果不是,最好将必要的配置拆分为逻辑块,每个站点一个文件。配置Nginx服务器块
这是文章《如何在Ubuntu 22.04上使用LEMP安装WordPress》的第3部分(共6部分)。
首先,使用sudo权限打开您的站点服务器块文件:
sudo nano /etc/nginx/sites-available/wordpress
在主服务器块内,我们将添加几个location块。
首先,为/favicon.ico
和/robots.txt
的请求创建精确匹配的location块,您不希望记录这些请求。
使用正则表达式location匹配任何静态文件的请求。我们将再次关闭这些请求的日志记录,并将其标记为高度可缓存,因为这些通常是提供起来成本较高的资源。您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件扩展名:
server {
. . .
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
在现有的location /
块内部,让我们调整try_files
列表。通过在行前添加井号(#)来注释掉默认设置,然后添加高亮显示的行。这样,控制权将传递给index.php
文件并带上请求参数,而不是返回404错误作为默认选项。
它应该看起来像这样:
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
完成后,保存并关闭文件。
现在,让我们通过输入以下命令检查配置是否存在语法错误:
sudo nginx -t
如果没有报告错误,请通过输入以下命令重新加载Nginx:
sudo systemctl reload nginx
接下来,让我们下载并设置WordPress。
第四步 — 下载WordPress
现在您的服务器软件已配置完毕,让我们下载并设置WordPress。出于安全原因,始终建议直接从项目网站获取最新版本的WordPress。
切换到一个可写目录,然后通过输入以下命令下载压缩版本:
cd /tmp
这会将您的目录更改为临时文件夹。然后,输入以下命令下载最新版本的WordPress压缩文件:
curl -LO https://wordpress.org/latest.tar.gz
注意:-LO
标志用于直接获取压缩文件的源。-L
确保在重定向情况下文件获取成功,而-O
将远程文件的输出写入到本地同名文件。要了解更多关于curl命令的信息,请访问如何使用cURL下载文件。
将压缩文件解压,创建WordPress目录结构:
tar xzvf latest.tar.gz
您稍后会将这些文件移动到我们的文档根目录中,但在执行此操作之前,我们先将示例配置文件复制到WordPress实际读取的文件名:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
现在,我们将目录的全部内容复制到文档根目录中。我们使用 -a
标志来确保权限得以保留,并在源目录末尾添加一个点 .
来表示目录中的所有内容(包括隐藏文件)都应被复制:
sudo cp -a /tmp/wordpress/. /var/www/<您的域名>/wordpress
文件到位后,您需要将所有权分配给 www-data
用户和组。这是 Nginx 运行的用户和组,Nginx 需要能够读取和写入 WordPress 文件,以便提供网站服务并执行自动更新:
sudo chown -R www-data:www-data /var/www/<您的域名>/wordpress
现在文件已位于服务器的文档根目录中并具有正确的权限,但您仍需要完成一些额外的配置。
第五步 — 设置 WordPress 配置文件
接下来,我们对主要的 WordPress 配置文件进行一些更改。
当您打开文件时,首先需要调整一些密钥,为我们的安装提供一些安全性。WordPress 为这些值提供了一个安全的生成器,因此您无需自己想出这些值。这些值仅在内部使用,因此即使使用复杂、安全的值也不会影响可用性。
要从 WordPress 密钥生成器获取安全值,请键入:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
您将获得如下所示的唯一值:
警告:每次请求都必须获取唯一值。请勿复制下面显示的值!
# 输出示例,请勿复制
define(‘AUTH_KEY’, ‘1jl/vqfs<XhdXoAPz9 请勿复制这些值 c_j{iwqD^<+c9.k<J@4H’);
define(‘SECURE_AUTH_KEY’, ‘E2N-h2]Dcvp+aS/p7X 请勿复制这些值 {Ka(f;rv?Pxf})CgLi-3′);
define(‘LOGGED_IN_KEY’, ‘W(50,{W^,OPB%PB<JF 请勿复制这些值 2;y&,2m%3]R6DUth[;88′);
define(‘NONCE_KEY’, ‘ll,4UC)7ua+8<!4VM+ 请勿复制这些值 #`DXF+[$atzM7 o^-C7g’);
define(‘AUTH_SALT’, ‘koMrurzOA+|L_lG}kf 请勿复制这些值 07VC*Lj*lD&?3w!BT#-‘);
define(‘SECURE_AUTH_SALT’, ‘p32*p,]z%LZ+pAu:VY 请勿复制这些值 C-?y+K0DK_+F|0h{!_xY’);
define(‘LOGGED_IN_SALT’, ‘i^/G2W7!-1H2OQ+t$3 请勿复制这些值 t6**bRVFSD[Hi])-qS`|’);
define(‘NONCE_SALT’, ‘Q6]U:K?j4L%Z]}h^q7 请勿复制这些值 1% ^qUswWgn+6&xqHN&%’);
这些是您可以直接粘贴到配置文件中以设置安全密钥的配置行。请复制您现在收到的输出。
现在,打开WordPress配置文件:
sudo nano /var/www/您的域名/wordpress/wp-config.php
找到包含这些设置的虚拟值的部分。它看起来像这样:
. . .
define('AUTH_KEY', '在此处放置您的唯一短语');
define('SECURE_AUTH_KEY', '在此处放置您的唯一短语');
define('LOGGED_IN_KEY', '在此处放置您的唯一短语');
define('NONCE_KEY', '在此处放置您的唯一短语');
define('AUTH_SALT', '在此处放置您的唯一短语');
define('SECURE_AUTH_SALT', '在此处放置您的唯一短语');
define('LOGGED_IN_SALT', '在此处放置您的唯一短语');
define('NONCE_SALT', '在此处放置您的唯一短语');
. . .
删除这些行,并粘贴您从命令行复制的值:
. . .
define('AUTH_KEY', '从命令行复制的值');
define('SECURE_AUTH_KEY', '从命令行复制的值');
define('LOGGED_IN_KEY', '从命令行复制的值');
define('NONCE_KEY', '从命令行复制的值');
define('AUTH_SALT', '从命令行复制的值');
define('SECURE_AUTH_SALT', '从命令行复制的值');
define('LOGGED_IN_SALT', '从命令行复制的值');
define('NONCE_SALT', '从命令行复制的值');
. . .
接下来,让我们修改文件开头的数据库连接设置。您需要调整数据库名称、数据库用户以及在MySQL中配置的关联密码。
您应该做的另一个更改是设置WordPress用于写入文件系统的方法。由于您已经授予Web服务器在需要时写入的权限,您可以明确将文件系统方法设置为“direct”。如果当前设置未设置此项,当执行某些操作时,WordPress将提示输入FTP凭据。将此设置添加到数据库连接设置下方或文件中的任何其他位置:
. . .
define( 'DB_NAME', 'wordpress' );
/** MySQL数据库用户名 */
define( 'DB_USER', 'wordpressuser' );
/** MySQL数据库密码 */
define( 'DB_PASSWORD', '密码' );
. . .
define( 'FS_METHOD', 'direct' );
完成后保存并关闭文件。
第六步 — 通过Web界面完成安装
现在服务器配置已完成,您可以通过WordPress的Web界面完成安装。
在您的Web浏览器中,导航到您的服务器域名或公共IP地址:
http://服务器域名或IP/wordpress
选择您想使用的语言:

接下来,您将进入WordPress的主设置页面。
为您的WordPress网站选择一个名称,并选择一个用户名(出于安全考虑,建议不要选择“admin”之类的名称)。系统会自动生成一个强密码。请保存此密码或选择一个替代的强密码。
输入您的电子邮件地址,并选择是否阻止搜索引擎索引您的网站:

当您点击继续后,将进入登录提示页面:

登录成功后,您将进入WordPress管理仪表盘:

总结
WordPress应该已经安装并可以投入使用了!一些常见的后续步骤包括为您的文章选择固定链接设置(可在“设置”>“固定链接”中找到),或者选择一个新主题(在“外观”>“主题”中)。如果这是您第一次使用WordPress,请花些时间探索一下界面,熟悉您的新内容管理系统(CMS)。
信息