当前位置: 首页 > news >正文

在Ubuntu 16.04上使用LEMP安装WordPress的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

WordPress 是互联网上最流行的 CMS(内容管理系统)。它允许您在 MySQL 后端和 PHP 处理的基础上轻松设置灵活的博客和网站。WordPress 已经被广泛采用,并且是快速搭建网站的绝佳选择。设置完成后,几乎所有管理工作都可以通过 Web 前端完成。

在本指南中,我们将专注于在 Ubuntu 16.04 服务器上使用 LEMP 栈(Linux、Nginx、MySQL 和 PHP)设置 WordPress 实例。

先决条件

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

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

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

完成设置步骤后,以您的 sudo 用户登录到服务器并继续以下步骤。

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

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

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

mysql -u root -p

输入您在安装软件时为 MySQL root 帐户设置的密码。

首先,我们可以创建一个 WordPress 可以控制的单独数据库。您可以随意命名它,但为了简单起见,我们将在本指南中使用 wordpress。您可以通过输入以下命令为 WordPress 创建数据库:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

接下来,我们将创建一个单独的 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 的请求创建精确匹配的 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 列表,以便在默认选项返回 404 错误的地方,将控制传递给带有请求参数的 index.php 文件。

这应该看起来像这样:

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

安装完扩展后,重新启动 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/

您将收到类似以下内容的唯一值:


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

nano /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');. . .

删除这些行,并粘贴从命令行复制的值:


. . .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 database username */
define('DB_USER', 'wordpressuser');/** MySQL database password */
define('DB_PASSWORD', 'password');. . .define('FS_METHOD', 'direct');

完成后保存并关闭文件。

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

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

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

http://server_domain_or_IP

选择您想要使用的语言:

!WordPress 语言选择

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

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

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

!WordPress 设置安装

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

!WordPress 登录提示

登录后,您将进入 WordPress 管理面板:

!WordPress 登录提示

升级 WordPress

随着 WordPress 升级的推出,您将无法通过当前权限在界面上安装它们。

我们在这里选择的权限旨在在升级之间的 99% 的时间内提供安全性和可用性之间的良好平衡。然而,它们对于软件自动应用更新来说有些过于限制。

当有更新可用时,请以您的 sudo 用户身份重新登录到服务器。临时将 Web 服务器进程访问整个文档根目录:

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

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

完成后,出于安全考虑再次锁定权限:

sudo chown -R sammy /var/www/html

这只在应用 WordPress 升级时才需要进行。

结论

WordPress 应该已经安装并准备就绪!一些常见的下一步是为您的文章选择永久链接设置(可以在 设置 > 永久链接 中找到)或选择一个新主题(在 外观 > 主题 中)。如果这是您第一次使用 WordPress,请稍微探索一下界面,以熟悉您的新 CMS。

http://www.lryc.cn/news/452551.html

相关文章:

  • 显示器放大后,大漠识图识色坐标偏移解决方法
  • C++容器之list基本使用
  • Redis-哨兵
  • Pikachu-Sql-Inject - 基于时间的盲注
  • JAVA开源项目 旅游管理系统 计算机毕业设计
  • 景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商
  • 【C语言】内存函数的使用和模拟实现
  • 在WPF中实现多语言切换的四种方式
  • 30min 的OpenCV learning Note
  • C--编译和链接见解
  • 【QT Quick】基础语法:基础类与控件
  • 使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南
  • Gas费用是什么?
  • 大语言模型(LLM)的子模块拆拆分进行联邦学习;大语言模型按照多头(Multi-Head)拆分进行联邦学习
  • Qt 概述
  • 移动应用的界面配置-手机银行APP
  • 微服务nginx解析部署使用全流程
  • 华硕天选笔记本外接音箱没有声音
  • Unity中Socket_TCP异步连接,加入断线检测以及重连功能
  • Android build子系统(01)Ninja构建系统解读
  • 徐老师的吉祥数
  • 使用html写一个能发起请求的登录界面
  • 五子棋双人对战项目(2)——登录模块
  • 几种操作系统和几种cpu
  • [Cocoa]_[初级]_[使用NSNotificationCenter作为目标观察者实现时需要注意的事项]
  • 彩虹易支付最新版源码及安装教程(修复BUG+新增加订单投诉功能)
  • ping香港服务器超时的原因通常有哪些?
  • 书生大模型实战(从入门到进阶)L3-彩蛋岛-InternLM 1.8B 模型 Android 端侧部署实践
  • setState是同步更新还是异步更新
  • TCP 流量控制 - 滑动窗口和拥塞控制算法解析