如何在 Ubuntu 18.04 上使用 LAMP 安装 WordPress
介绍
WordPress 是互联网上最流行的内容管理系统 (CMS)。它允许您使用 PHP 处理在 MySQL 后端之上设置灵活的博客和网站。 WordPress 的采用令人难以置信,是快速启动和运行网站的绝佳选择。设置完成后,几乎所有管理都可以通过 Web 前端完成。
在本指南中,您将在 Ubuntu 18.04 服务器上的 LAMP 堆栈(Linux、Apache、MySQL 和 PHP)上设置一个 WordPress 实例。
先决条件
要完成本教程,您需要:
- 使用
sudo
用户访问 Ubuntu 18.04 服务器:您将使用具有sudo
权限的非根用户完成本指南中的步骤。您可以按照我们的 Ubuntu 18.04 初始服务器设置指南创建具有sudo
权限的用户。 - 安装 LAMP 堆栈:WordPress 需要网络服务器、数据库和 PHP 才能正常运行。设置 LAMP 堆栈(Linux、Apache、MySQL 和 PHP)可以满足所有这些要求。按照本指南安装和配置此软件。
- 使用 SSL 保护您的网站:WordPress 提供动态内容并处理用户身份验证和授权。 TLS/SSL 是一种允许您加密来自您站点的流量的技术,以便您的连接是安全的。设置 SSL 的方式取决于您的网站是否有域名。
- 如果您有域名……保护您网站的一种方法是使用 Let's Encrypt,它提供免费、可信的证书。按照我们的 Apache Let's Encrypt 指南进行设置。
- 如果您没有域……并且您仅将此配置用于测试或个人使用,则可以改用自签名证书。这提供了相同类型的加密,但没有域验证。按照我们的 Apache 自签名 SSL 指南进行设置。
完成先决条件后,以
sudo
用户身份登录服务器,然后继续执行第 1 步。第 1 步 – 为 WordPress 创建 MySQL 数据库和用户
您将采取的第一步是准备工作。即使已经安装了 MySQL,您仍然需要创建一个数据库来管理和存储用户信息以供 WordPress 使用。首先,通过发出以下命令登录到 MySQL 根(管理)帐户:
- sudo mysql
安装软件时,系统会提示您为 MySQL root 帐户设置的密码。
但是,如果您为 root 用户启用了密码身份验证,则可以运行以下命令并在出现提示时输入您的密码信息:
- mysql -u root -p
从那里,您将创建一个由 WordPress 控制的新数据库。您可以随意调用它,但我们将在本指南中使用 wordpress 作为示例。通过编写以下内容为 WordPress 创建数据库:
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
注意:每个 MySQL 语句必须以分号 (;) 结尾。如果您遇到任何问题,请检查以确保它存在。
接下来,您将创建一个单独的 MySQL 用户帐户,您将专门使用它来操作新数据库。从管理和安全的角度来看,创建单一功能的数据库和帐户是一个好主意。在本指南中,我们将使用名称 wordpressuser 作为示例。如果您愿意,请随时更改此设置。
您可以创建此帐户,为其设置密码,然后通过运行以下命令授予它访问您创建的所有数据库的权限。请记住在此处为您的数据库用户选择一个强密码:
- GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
创建此用户后,刷新权限以确保 MySQL 的当前实例知道您最近所做的更改:
- FLUSH PRIVILEGES;
退出MySQL:
- EXIT;
您现在在 MySQL 中拥有一个数据库和用户帐户,每个都是专门为 WordPress 制作的。
第 2 步 – 安装额外的 PHP 扩展
在设置 LAMP 堆栈时,该过程只需要最少的扩展集就可以让 PHP 与 MySQL 进行通信。 WordPress 及其许多插件利用了额外的 PHP 扩展。
首先,更新您的包裹清单:
- sudo apt update
接下来下载并安装一些最流行的 PHP 扩展以用于 WordPress:
- sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
注意:每个 WordPress 插件都有自己的一套要求。有些可能需要安装额外的 PHP 包。检查您的插件文档以发现其 PHP 要求。如果它们可用,它们可以使用
apt
安装,如上所示。在下一节中重新启动 Apache 以加载这些新扩展。如果您要返回此处安装其他插件,您现在可以重新启动 Apache:
- sudo systemctl restart apache2
在下一步中,您将对 Apache 配置进行一些调整。
第 3 步 – 调整 Apache 的配置以允许 .htaccess 覆盖和重写
WordPress 默认使用
.htaccess
文件来管理站点的某些功能,例如永久链接、插件和重定向。 Apache Web 服务器使用这些.htaccess
配置文件来创建 Web 服务器要遵循的规则。但是,Apache 默认禁用.htaccess
文件,因此您需要为您的网站更新 Apache 虚拟主机文件以启用它们。要启用,请打开您网站的虚拟主机文件:
- sudo nano /etc/apache2/sites-available/wordpress.conf
注意:对于本教程,我们将使用
/etc/apache2/sites-available/wordpress.conf
作为示例,但您应该在适当的地方替换配置文件的路径。此外,我们将使用
/var/www/wordpress
作为 WordPress 安装的根目录。您应该使用您自己的配置中指定的 Web 根目录。也有可能您正在使用
000-default.conf
默认配置(使用/var/www/html
作为您的网络根目录)。如果您只打算在此服务器上托管一个网站,则可以使用它。如果没有,最好将必要的配置拆分成逻辑块,每个站点一个文件。打开此文件后,您会注意到
.htaccess
文件的使用已被禁用。要允许.htaccess
文件,您需要在指向文档根目录的Directory
块中设置AllowOverride
指令。在配置文件的VirtualHost
块中添加以下文本块。确保使用自己的 Web 根目录代替突出显示的示例:<Directory /var/www/wordpress/> AllowOverride All </Directory>
完成后,保存并关闭文件。如果您正在使用
nano
,您可以按CTRL + X
然后按Y
和ENTER
退出。接下来,启用
mod_rewrite
以便您可以使用 WordPress 永久链接功能:- sudo a2enmod rewrite
之后,您将通过测试配置来启用这些更改。但在您实施更改之前,请检查以确保没有任何语法错误:
- 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如果您希望隐藏第一行,请将
ServerName
指令添加到位于/etc/apache2/apache2.conf
的主(全局)Apache 配置文件中。ServerName
可以是您服务器的域或 IP 地址。但是,这只是一条消息,不会影响您网站的功能。只要输出包含Syntax OK
,您就可以继续了。重新启动 Apache 以实施更改:
- sudo systemctl restart apache2
接下来,您将下载并设置 WordPress 本身。
第 4 步 – 下载 WordPress
现在您的服务器软件已配置完毕,您可以下载并设置 WordPress。出于安全原因,始终建议从他们的站点获取最新版本的 WordPress。
首先更改为可写目录:
- cd /tmp
然后通过运行以下命令下载压缩版本:
- curl -O https://wordpress.org/latest.tar.gz
提取压缩文件以创建 WordPress 目录结构:
- tar xzvf latest.tar.gz
您将暂时将这些文件移动到您的文档根目录中。在你这样做之前,添加一个空的
.htaccess
文件,以便 WordPress 以后可以使用它。通过运行以下命令创建文件:
- touch /tmp/wordpress/.htaccess
然后,复制示例配置文件并将其命名为
wp-config.php
,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
接下来,您需要调整和配置 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 密钥生成器获取安全值,请运行以下命令:
- 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
找到包含这些设置的空值的部分。它看起来像下面这样:
. . . 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'); . . .
删除这些行并粘贴您从命令行复制的值:
. . . 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 凭据。
可以在数据库连接设置之后或文件中的任何其他位置添加此设置:
. . . define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); . . . define('FS_METHOD', 'direct');
完成后保存并关闭文件。
第 6 步 – 通过 Web 界面完成安装
现在服务器配置已经完成,您可以通过Web界面完成安装。
在您的 Web 浏览器中,导航到您服务器的域名或公共 IP 地址:
https://server_domain_or_IP
选择您要使用的语言:
接下来,您将被引导至主设置页面。
为您的 WordPress 站点选择一个名称并选择一个用户名(出于安全考虑,建议不要选择“admin”之类的名称)。系统会自动生成一个强密码。保存此密码或选择其他强密码。
输入您的电子邮件地址并选择是否要阻止搜索引擎将您的网站编入索引:
当您点击前进时,您将被带到一个提示您登录的页面:
登录后,您将被带到 WordPress 管理仪表板:
从那里,您可以开始使用和自定义您的 WordPress 网站。
结论
WordPress 现在应该已成功安装并可以使用了。一些常见的后续步骤是为您的帖子选择永久链接设置(可以在
Settings > Permalinks
中找到)或选择一个新主题(在Appearance > Themes
中)。如果这是您第一次使用 WordPress,请浏览一下界面以熟悉您的新 CMS。