WordPress 需要 Web 服务器、数据库和 PHP 才能正常运行。设置 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)可以满足所有这些要求。无需自己设置这些组件,您可以快速配置已经安装了 LEMP 堆栈的 Ubuntu 20.04 服务器、
在本教程中,您将专注于为 Ubuntu 20.04 服务器在 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)上设置 WordPress 实例。
为了完成本教程,您需要访问 Ubuntu 20.04 服务器。要在您的服务器上成功安装带有 LEMP 的 WordPress,您还需要在开始本教程之前执行以下任务:
sudo在您的服务器上创建sudo用户:本教程中的步骤使用具有特权的非 root 用户。sudo您可以按照我们的Ubuntu 20.04 初始服务器设置教程创建具有权限的用户。
安装 LEMP 堆栈:WordPress 需要 Web 服务器、数据库和 PHP 才能正常运行。设置 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)可以满足所有这些要求。按照本教程安装和配置此软件。
现在安装了 Nginx 来为您的页面提供服务,并安装了 MySQL 来存储和管理您的数据。但是,您仍然没有任何东西可以生成动态内容。这就是 PHP 发挥作用的地方。
由于 Nginx 不像其他一些 Web 服务器那样包含原生 PHP 处理,因此您需要安装php-fpm
,它代表“fastCGI 进程管理器”。之后,您将告诉 Nginx 将 PHP 请求传递给该软件进行处理。
注意:根据您的云提供商,您可能需要在安装软件包universe
之前添加 Ubuntu 的存储库,其中包括由 Ubuntu 社区维护的免费和开源软件。php-fpm
您可以通过键入以下命令来执行此操作:
sudo add-apt-repository universe
复制
安装该php-fpm
模块以及附加的帮助程序包,php-mysql
这将允许 PHP 与您的数据库后端进行通信。安装将引入必要的 PHP 核心文件。通过键入以下内容来执行此操作:
sudo apt install php-fpm php-mysql
复制
即使安装了所有必需的 LEMP 堆栈组件,您仍然需要进行一些配置更改,以便告诉 Nginx 使用 PHP 处理器处理动态内容。
这是在服务器块级别完成的(服务器块类似于 Apache 的虚拟主机)。为此,请使用/etc/nginx/sites-available/
目录中的首选文本编辑器创建一个新的服务器块配置文件。在此示例中,我们将使用nano
新的服务器块配置文件your_domain
,因此您可以将其替换为您自己的信息:
sudo nano /etc/nginx/sites-available/your_domain
复制
通过创建一个新的服务器块配置文件,而不是编辑默认配置文件,您可以在需要时恢复默认配置。
将以下内容(从默认服务器块配置文件中获取并稍作修改)添加到新的服务器块配置文件中:
/etc/nginx/sites-available/your_domain
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name your_domain;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
以下是每个指令和位置块的作用:
listen
— 定义 Nginx 将侦听的端口。在这种情况下,它将侦听 port 80
,这是 HTTP 的默认端口。root
— 定义存储网站提供的文件的文档根目录。index
— 将 Nginx 配置为优先提供index.php
在请求索引文件时命名的服务文件(如果它们可用)。server_name
— 定义对服务器的给定请求应使用哪个服务器块。将此指令指向您服务器的域名或公共 IP 地址。location /
— 第一个位置块包含一个try_files
指令,它检查是否存在与 URI 请求匹配的文件。如果 Nginx 找不到合适的文件,会返回 404 错误。location ~ \.php$
— 这个位置块通过将 Nginx 指向fastcgi-php.conf
配置文件和php7.2-fpm.sock
文件来处理实际的 PHP 处理,该文件声明了与php-fpm
.location ~ /\.ht
— 最后一个位置块处理.htaccess
Nginx 不处理的文件。通过添加该deny all
指令,如果任何.htaccess
文件碰巧进入文档根目录,它们将不会被提供给访问者。添加此内容后,保存并关闭文件。如果您正在使用nano
,您可以通过按CTRL + X
thenY
和来执行此操作ENTER
。通过创建从新服务器块配置文件(在/etc/nginx/sites-available/
目录中)到/etc/nginx/sites-enabled/
目录的符号链接来启用新服务器块:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
复制
然后,从目录中取消链接默认配置文件/sites-enabled/
:
sudo unlink /etc/nginx/sites-enabled/default
复制
注意:如果您需要恢复默认配置,您可以使用如下命令重新创建符号链接:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
复制
测试新配置文件的语法错误:
sudo nginx -t
复制
如果报告任何错误,请返回并重新检查您的文件,然后再继续。
准备好后,重新加载 Nginx 以进行必要的更改:
sudo systemctl reload nginx
复制
LEMP 堆栈的安装和配置到此结束。但是,谨慎的做法是确认所有组件都可以相互通信。
WordPress 使用 MySQL 来管理和存储站点和用户信息。虽然您已经安装了 MySQL,但让我们创建一个数据库和一个用户供 WordPress 使用。
要开始使用,请登录 MySQL 根(管理)帐户。如果 MySQL 配置为使用auth_socket
身份验证插件(默认),您可以使用以下命令登录 MySQL 管理帐户sudo
:
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 语句必须以分号 ( ;
) 结尾。如果您遇到错误,请检查以确保分号存在。
接下来,让我们创建一个单独的 MySQL 用户帐户,我们将专门使用它来操作我们的新数据库。从管理和安全的角度来看,创建单一用途的数据库和帐户是一个好主意。我们将wordpressuser
在本指南中使用该名称 — 如果您愿意,可以随意更改。
在以下命令中,您将创建一个帐户、设置密码并授予对您创建的数据库的访问权限。请记住在此处选择一个强密码:
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';
复制
您现在有一个数据库和用户帐户,每个帐户都是专门为 WordPress 制作的。
数据库任务完成后,让我们输入以下命令退出 MySQL:
EXIT;
复制
MySQL 会话将退出,将您返回到常规 Linux shell。
在设置 LEMP 堆栈时,它需要非常少的扩展集来让 PHP 与 MySQL 通信。WordPress 及其许多插件利用了额外的 PHP 扩展,您将在本教程中使用更多。
让我们通过键入以下内容下载并安装一些最流行的 PHP 扩展以用于 WordPress:
sudo apt update
复制
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
复制
注意:每个 WordPress 插件都有自己的一套要求。有些可能需要安装额外的 PHP 扩展包。检查您的插件文档以发现其 PHP 要求。如果它们可用,则可以apt
如上所示安装它们。
完成安装扩展后,重新启动 PHP-FPM 进程,以便正在运行的 PHP 处理器可以利用新安装的功能:
sudo systemctl restart php7.4-fpm
复制
您现在已经在服务器上安装了所有需要的 PHP 扩展。
接下来,让我们对我们的 Nginx 服务器块文件进行一些调整。根据先决条件教程,您应该在/etc/nginx/sites-available/
配置为响应服务器的域名或 IP 地址并受 TLS/SSL 证书保护的目录中为您的站点提供一个配置文件。我们将在此处用作示例,但您应该在适当的地方替换配置文件的路径。/etc/nginx/sites-available/wordpress
此外,我们将在本指南中用作 WordPress 安装的根目录。同样,您应该使用您自己的配置中指定的 Web 根目录。/var/www/wordpress
注意:您可能正在使用/etc/nginx/sites-available/default
默认配置(/var/www/html
作为您的 Web 根目录)。如果您只想在此服务器上托管一个网站,则可以使用此功能。如果没有,最好将必要的配置拆分为逻辑块,每个站点一个文件。
sudo
以开始权限打开您站点的服务器块文件:
sudo nano /etc/nginx/sites-available/wordpress
复制
在主server
块中,让我们添加几个location
块。
/favicon.ico
首先为对和的请求创建完全匹配的位置块/robots.txt
,您不想记录这两个请求。
使用正则表达式位置来匹配对静态文件的任何请求。我们将再次关闭这些请求的日志记录并将它们标记为高度可缓存,因为这些通常是昂贵的服务资源。您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件扩展名:
/etc/nginx/sites-available/wordpress
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
列表。通过在行前加上井号 ( ) 注释掉默认设置#
,然后添加突出显示的行。这样,不是将 404 错误作为默认选项返回,而是将控制权传递给 index.php
带有请求参数的文件。
这应该看起来像这样:
/etc/nginx/sites-available/wordpress
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。
更改为可写目录,然后通过键入以下内容下载压缩版本:
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 密钥生成器中获取安全值,请键入:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
复制
您将获得如下所示的唯一值:
警告:每次都请求唯一值很重要。不要复制下面显示的值!
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
. . .
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
. . .
define( 'FS_METHOD', 'direct' );
完成后保存并关闭文件。
现在服务器配置已完成,您可以通过 WordPress 的 Web 界面完成安装。
在您的网络浏览器中,导航到您的服务器的域名或公共 IP 地址:
http://server_domain_or_IP/wordpress
选择您要使用的语言:
接下来,您将进入主设置页面。
为您的 WordPress 站点选择一个名称并选择一个用户名(出于安全考虑,建议不要选择“admin”之类的名称)。自动生成强密码。保存此密码或选择其他强密码。
输入您的电子邮件地址并选择是否要阻止搜索引擎将您的网站编入索引:
当您单击前进时,您将被带到一个提示您登录的页面:
登录后,您将被带到 WordPress 管理仪表板:
WordPress 应该已安装并可以使用!一些常见的后续步骤是为您的帖子选择永久链接设置(可以在 中找到Settings > Permalinks
)或选择新主题(在 中Appearance > Themes
)。如果这是您第一次使用 WordPress,请稍微探索一下界面以熟悉您的新 CMS。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。