如何在Ubuntu16.04上使用LEMP安装WordPress

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

介绍

WordPress 是互联网上最流行的 CMS(内容管理系统)。 它使您可以轻松地在 MySQL 后端使用 PHP 处理设置灵活的博客和网站。 WordPress 的采用率令人难以置信,是让网站快速启动和运行的绝佳选择。 设置后,几乎所有管理都可以通过 Web 前端完成。

在本指南中,我们将重点介绍在 Ubuntu 16.04 服务器上的 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)上设置 WordPress 实例。

先决条件

为了完成本教程,您需要访问 Ubuntu 16.04 服务器。

在开始本指南之前,您需要执行以下任务:

  • 在您的服务器上创建一个 sudo 用户:我们将使用具有 sudo 权限的非 root 用户完成本指南中的步骤。 您可以按照我们的 Ubuntu 16.04 初始服务器设置指南 创建具有 sudo 权限的用户。
  • 安装 LEMP 堆栈:WordPress 需要 Web 服务器、数据库和 PHP 才能正常运行。 设置 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)可以满足所有这些要求。 按照本指南安装和配置这个软件。
  • 使用 SSL 保护您的网站:WordPress 提供动态内容并处理用户身份验证和授权。 TLS/SSL 是一种允许您加密来自您的站点的流量以确保您的连接安全的技术。 您设置 SSL 的方式将取决于您是否拥有站点的域名。 如果您有域名……保护您的网站的最简单方法是使用 Let's Encrypt,它提供免费的、受信任的证书。 按照我们的 Nginx 加密指南进行设置。 如果您没有域......并且您只是将此配置用于测试或个人使用,则可以使用自签名证书。 这提供了相同类型的加密,但没有域验证。 按照我们的 Nginx 自签名 SSL 指南进行设置。

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

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

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

首先,通过发出以下命令登录到 MySQL 根(管理)帐户:

mysql -u root -p

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

首先,我们可以创建一个 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';

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

FLUSH PRIVILEGES;

输入以下命令退出 MySQL:

EXIT;

第 2 步:调整 Nginx 的配置以正确处理 WordPress

接下来,我们将对 Nginx 服务器块文件进行一些小的调整。

使用 sudo 权限打开默认服务器块文件开始:

sudo nano /etc/nginx/sites-available/default

在主 server 块中,我们需要添加一些 location 块。

首先为对 /favicon.ico/robots.txt 的请求创建精确匹配的位置块,我们不想记录这两个请求。

我们将使用正则表达式位置来匹配对静态文件的任何请求。 我们将再次关闭这些请求的日志记录,并将它们标记为高度可缓存,因为这些通常是昂贵的服务资源。 您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件扩展名:

/etc/nginx/sites-available/default

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 错误作为默认选项请求参数。

这应该看起来像这样:

/etc/nginx/sites-available/default

server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

完成后,保存并关闭文件。

现在,我们可以通过键入以下命令检查我们的配置是否存在语法错误:

sudo nginx -t

如果没有报告错误,请键入以下命令重新加载 Nginx:

sudo systemctl reload nginx

第 3 步:安装其他 PHP 扩展

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

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

sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

笔记

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


完成安装扩展后,重新启动 PHP-FPM 进程,以便正在运行的 PHP 处理器可以利用新安装的功能:

sudo systemctl restart php7.0-fpm

第 4 步:下载 WordPress

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

更改为可写目录,然后通过键入以下内容下载压缩版本:

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

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

tar xzvf latest.tar.gz

我们将暂时将这些文件移动到我们的文档根目录中。 在我们这样做之前,我们可以将示例配置文件复制到 WordPress 实际读取的文件名:

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

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

mkdir /tmp/wordpress/wp-content/upgrade

现在,我们可以将目录的全部内容复制到我们的文档根目录中。 我们使用 -a 标志来确保我们的权限得到维护。 我们在源目录的末尾使用一个点来指示应该复制目录中的所有内容,包括任何隐藏文件:

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

第 5 步:配置 WordPress 目录

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

调整所有权和权限

我们需要完成的一件大事是设置合理的文件权限和所有权。 我们需要能够以普通用户的身份写入这些文件,并且我们需要 Web 服务器也能够访问和调整某些文件和目录以正常运行。

我们首先将文档根目录中所有文件的所有权分配给我们的用户名。 在本指南中,我们将使用 sammy 作为我们的用户名,但您应该更改它以匹配您调用的 sudo 用户。 我们将组所有权分配给 www-data 组:

sudo chown -R sammy:www-data /var/www/html

接下来,我们将在文档根目录中的每个目录上设置 setgid 位。 这会导致在这些目录中创建的新文件继承父目录的组(我们刚刚设置为 www-data),而不是创建用户的主组。 这只是确保每当我们在命令行的目录中创建文件时,Web 服务器仍将拥有该文件的组所有权。

我们可以通过键入以下内容在 WordPress 安装中的每个目录上设置 setgid 位:

sudo find /var/www/html -type d -exec chmod g+s {} \;

我们将调整其他一些细粒度的权限。 首先,我们将授予组对 wp-content 目录的写入权限,以便 Web 界面可以更改主题和插件:

sudo chmod g+w /var/www/html/wp-content

作为此过程的一部分,我们将授予 Web 服务器对这两个目录中所有内容的写入权限:

sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

这应该是一个合理的权限设置开始。 一些插件和程序可能需要额外的调整。

设置 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 配置文件:

nano /var/www/html/wp-config.php

找到包含这些设置的虚拟值的部分。 它看起来像这样:

/var/www/html/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/html/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/html/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');

完成后保存并关闭文件。

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

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

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

http://server_domain_or_IP

选择您要使用的语言:

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

为您的 WordPress 站点选择一个名称并选择一个用户名(出于安全考虑,建议不要选择“admin”之类的名称)。 自动生成强密码。 保存此密码或选择其他强密码。

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

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

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

升级 WordPress

随着 WordPress 升级可用,您将无法通过具有当前权限的界面安装它们。

我们在此处选择的权限旨在在升级之间的 99% of 次之间提供安全性和可用性之间的良好平衡。 但是,它们对于软件自动应用更新的限制有点过大。

当更新可用时,以 sudo 用户身份重新登录到您的服务器。 暂时授予 Web 服务器进程对整个文档根目录的访问权限:

sudo chown -R www-data /var/www/html

现在,返回 WordPress 管理面板并应用更新。

完成后,再次锁定权限以确保安全:

sudo chown -R sammy /var/www/html

只有在对 WordPress 本身进行升级时才需要这样做。

结论

WordPress 应该已安装并可以使用! 一些常见的后续步骤是为您的帖子选择永久链接设置(可以在 Settings > Permalinks 中找到)或选择一个新主题(在 Appearance > Themes 中)。 如果这是您第一次使用 WordPress,请稍微探索一下界面以熟悉您的新 CMS。