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

在Ubuntu 16.04上使用LAMP安装WordPress

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

简介

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

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

先决条件

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

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

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

在设置我们的 LAMP 堆栈时,我们只需要一个非常基本的扩展集合,以便让 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

我们将在下一节重新启动 Apache 以利用这些新扩展。如果您在此返回以安装其他插件,您可以通过输入以下命令重新启动 Apache:

sudo systemctl restart apache2

步骤 3:调整 Apache 配置以允许 .htaccess 覆盖和重写

接下来,我们将对 Apache 配置进行一些微小的调整。目前,.htaccess 文件的使用是被禁用的。WordPress 和许多 WordPress 插件广泛使用这些文件来对 Web 服务器的行为进行目录内调整。

此外,我们将启用 mod_rewrite,这将需要以便正确使用 WordPress 永久链接。

启用 .htaccess 覆盖

打开主 Apache 配置文件以进行第一个更改:

sudo nano /etc/apache2/apache2.conf

为了允许 .htaccess 文件,我们需要在指向我们文档根目录的 Directory 块内设置 AllowOverride 指令。在文件底部,添加以下块:


. . .

<Directory /var/www/html/>
	AllowOverride All
</Directory>

. . .

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

启用 Rewrite 模块

接下来,我们可以启用 mod_rewrite,以便我们可以利用 WordPress 永久链接功能:

sudo a2enmod rewrite

启用更改

在实施我们所做的更改之前,检查以确保我们没有产生任何语法错误:

sudo apache2ctl configtest

输出可能会有类似以下的消息:


AH00558: 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

如果您希望抑制顶部行,只需在 /etc/apache2/apache2.conf 文件中添加一个指向服务器域名或 IP 地址的 ServerName 指令。然而,这只是一条消息,不会影响我们站点的功能。只要输出包含 Syntax OK,您就可以继续。

重新启动 Apache 以实施更改:

sudo systemctl restart apache2

步骤 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
chmod 660 /tmp/wordpress/.htaccess

我们还将复制示例配置文件到 WordPress 实际读取的文件名:

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

我们还可以创建 upgrade 目录,以便 WordPress 在更新其软件后不会遇到权限问题:

mkdir /tmp/wordpress/wp-content/upgrade

现在,我们可以将整个目录的内容复制到我们的文档根目录。我们使用 -a 标志来确保我们的权限得到保留。我们在源目录的末尾使用一个点来指示应该复制目录内的所有内容,包括隐藏文件(如我们创建的 .htaccess 文件):

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.kler.cn/news/330285.html

相关文章:

  • uniapp中uni.request的统一封装 (ts版)
  • PHP:构建高效Web应用的基石与实战案例
  • 【C++】多态(上)
  • 废品回收小程序/环保垃圾回收/收二手垃圾小程序/分类资源回收系统/独立版系统源码
  • 解析TMalign文本文件中的转换矩阵
  • 鸿蒙harmonyos next flutter混合开发之开发package
  • C++队列、双向队列
  • Linux Debian12使用Podman安装bwapp靶场环境
  • [Linux]Shell基本
  • X-Spreadsheet使用教程:打造你的Web端电子表格应用
  • 在实时语音交互上超过GPT-4o,端到端语音模型Mini-Omni部署
  • 滚雪球学MySQL[8.3讲]:数据库中的JSON与全文检索详解:从数据存储到全文索引的高效使用
  • 【Kubernetes】日志平台EFK+Logstash+Kafka【实战】
  • Android中的页面跳转机制
  • 【Android 源码分析】Activity生命周期之onDestroy
  • 如何使用Flask框架创建一个类似OpenAI的REST API接口
  • 一文上手SpringSecurity【三】
  • 大语言模型入门(二)——提示词
  • 5分钟学会SPI
  • MySQL基础练习题49-低质量的问题
  • 【动态规划】完全背包问题
  • 媒介坊:软文自助发布平台,开启营销新篇章
  • 什么是大语言模型的大海捞针指标
  • 【数据库差异研究】update与delete使用表别名的研究
  • Swift并发笔记
  • 「4.3」维护序列
  • 多系统萎缩患者必看!这些维生素助你对抗病魔
  • Docker的入门详解
  • 第十四讲-输入控件QPlainTextEdit
  • redis数据库学习一