如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress

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

如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress

介绍

WordPress 是互联网上最流行的内容管理系统 (CMS) 之一,它允许用户来设置灵活的博客和网站。WordPress 是高效建立和运行网站的绝佳选择。初始设置后,WordPress 网站的几乎所有管理都可以通过其图形界面完成。

在本文中,我们将重点关注在 Ubuntu 22.04 服务器的 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)上设置 WordPress 实例。

先决条件

为了完成本教程,需要访问 Ubuntu 22.04 服务器。要在服务器上成功安装带有 LEMP 的 WordPress,还需要在开始本教程之前执行以下任务:

  • **在服务器上创建sudo**用户:本教程中的步骤使用具有sudo权限的非 root 用户。sudo可以参考Ubuntu 20.04 初始服务器设置教程](https://blog.csdn.net/qq_35241329/article/details/135388646?spm=1001.2014.3001.5501)创建具有权限的用户(注意版本号,这里只用以参考)。

  • 安装 LEMP 堆栈:WordPress 需要 Web 服务器、数据库和 PHP 才能正常运行。设置 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)可以满足所有这些要求。

  • 使用 SSL 保护网站

    TLS/SSL 是一种允许加密站点流量的技术,以便连接安全。设置 SSL 的方式取决于你的站点是否有域名。

    • **如果有域名,**保护站点安全的最简单方法是使用 Let’s Encrypt,它提供免费、可信的证书。
    • 如果没有域并且将此配置用于测试或个人用途,则可以改用自签名证书。

完成设置后,以sudo用户身份登录到服务器以继续。

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

WordPress 使用 MySQL 来管理和存储站点和用户信息。所以需要创建一个数据库和一个用户供 WordPress 使用。

首先,登录 MySQL 管理帐户:

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。

第 2 步 — 安装附加 PHP 扩展

设置 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 php8.1-fpm

现在已将所需的所有 PHP 扩展安装在服务器上。

第 3 步 — 配置 Nginx

接下来,让我们对 Nginx 服务器块文件进行一些调整。根据先决条件教程,你的站点目录中应该有一个配置文件,该文件/etc/nginx/sites-available/配置为响应服务器的域名或 IP 地址并受 TLS/SSL 证书保护。我们将在此处用作示例,但你应该在适当的情况下替换配置文件的路径。

此外,我们将在本文中使用 WordPress 安装的根目录。同样,你应该使用自己的配置中指定的 Web 根目录。

**注意:**现在可能正在使用/etc/nginx/sites-available/default默认配置(/var/www/html作为网络根目录)。如果只想在此服务器上托管一个网站,则可以使用此选项。如果没有,最好将必要的配置拆分为逻辑块,每个站点一个文件。

使用权限打开站点的服务器块文件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列表。通过在该行前面添加井号 ( #) 注释掉默认设置,然后添加突出显示的行。这样,控制权将通过 index.php请求参数传递到文件,而不是返回 404 错误作为默认选项。

这应该看起来像这样:

/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。

第 4 步 — 下载 WordPress

现在服务器软件已配置完毕,让我们下载并设置 WordPress。出于安全原因,始终建议直接从项目网站获取最新版本的 WordPress。

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

cd /tmp

这会将目录更改为临时文件夹。然后,输入以下命令以压缩文件形式下载最新版本的 WordPress:

curl -LO https://wordpress.org/latest.tar.gz

注意:-LO标志用于直接获取压缩文件的源。-L确保在重定向的情况下成功获取文件,并将-O远程文件的输出写入具有相同名称的本地文件。

解压压缩文件以创建 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/<^>your_domain/wordpress

现在我们的文件已就位,将向www-data用户和组分配所有权。这是 Nginx 运行的用户和组,Nginx 需要能够读取和写入 WordPress 文件,以便为网站提供服务并执行自动更新:

sudo chown -R www-data:www-data /var/www/your_domain/wordpress

文件现在位于服务器的文档根目录中并具有正确的所有权,但仍然需要完成一些额外的配置。

第 5 步 — 设置 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/your_domain/wordpress/wp-config.php

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

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

完成后保存并关闭文件。

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

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

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

http://server_domain_or_IP/wordpress

选择要使用的语言:

WordPress 语言选择

接下来,将来到主设置页面。

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

输入电子邮件地址并选择是否要阻止搜索引擎对网站建立索引:

WordPress 设置安装

当点击前进时,进入一个提示您登录的页面:

WordPress 登录提示

登录后,将进入 WordPress 管理仪表板:

WordPress 登录提示

结论

WordPress 应该已安装并可以使用!一些常见的后续步骤是为你的帖子选择永久链接设置(可以在 中找到Settings > Permalinks)或选择一个新主题(在 中Appearance > Themes)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/322751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

清华裴丹|大模型时代的AIOps

在大模型时代下&#xff0c;运维界普遍关注一些问题&#xff1a;大模型能带来哪些收益&#xff1f;面临哪些技术挑战&#xff1f;与以往的 AIOps小模型是什么关系&#xff1f;有了大模型之后&#xff0c;那么AIOps的整体框架是什么&#xff1f;近期、中期、长期有哪些应用&…

基于ssm的线上旅游体验系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

java基础之线程知识点

线程 进程的概念 操作系统(OS)中并发(同时)执行的多个程序任务 进程的特点 宏观并行,微观串行 在一个时间段内,CPU会将时间段划分为若干个时间片,一个时间片是能被一个程序拥有,且只有拥有时间片的程序才能执行自身内容,所以当时间片的划分足够细小,交替频率足够快,就会形…

9 - 数据分片概述|部署MyCat服务

数据分片概述&#xff5c;部署MyCat服务&#xff5c;测试配置 数据分片概述分库分表分割方式水平分割&#xff08;横向切分&#xff09;垂直分割&#xff08;纵向切分&#xff09; 提供分库分表存储服务软件&#xff08;中间件&#xff09;MyCAT软件分片服务器的工作过程 部署M…

[Kubernetes]10. k8s部署Goweb+mysql项目实战演练

一.安装docker构建镜像 如果要本地构建镜像的话,对应节点还需要安装docker,安装教程见:[Docker]一.Docker 简介与安装 linux环境,centos8下 docker及docker compose安装教程 k8s部署Goweb+mysql项目有两种方法:第一种是传统部署方法,第二种是通过ConfigMap实现应用配置分离部署…

OPenCV中的开闭运算

闭运算是先膨胀再腐蚀的过程&#xff0c;可以用来清除小黑点 开运算同理 开运算是先腐蚀再膨胀的过程&#xff0c;可以清除一些小两点和毛刺 闭运算和开运算使用不同大小的结构元素是因为它们的目标不同。 闭运算的目标是尽量消除小黑点&#xff0c;保持较大的连通区域。因此…

最佳利用Mock提升测试效率的7个技巧!

再聊这个问题之前&#xff0c;我们先了解一下公司技术架构的演变过程&#xff0c;这样我们才能真正体会到我们为什么要使用 Mock功能。 单体应用 在早期&#xff0c; 大部分公司的应用技术栈主要可以分为两大类&#xff1a;LAMP&#xff08;Linux Apache MySQL PHP&#x…

1.50A、0.75A、1.50A、1.20A电流控制型比例马达放大器

1.50A、0.75A、1.50A、1.20A、0.70A、0.60A、1.40A控制电流型比例阀、比例泵、比例马达放大器&#xff0c;带数显区显示及当前参数现场可调&#xff0c;如指令、电流、上下斜坡、颤振频率等&#xff1b; 模块式及插头式外观&#xff0c;可现场调试各种参数&#xff1b; 兼容多…

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具&#xff0c;简化了记忆Git命令行的过程&#xff0c;将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

如何定位和优化程序CPU、内存等性能之巅

如何定位和优化程序CPU、内存等性能之巅 摘要 性能优化指在不影响系统运行正确性的前提下&#xff0c;使之运行得更快&#xff0c;完成特定功能所需的时间更短&#xff0c;或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈…

树形控件中的子项点击显示按钮弹窗

效果 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include"QStandardItemModel" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:Main…

学习怎么能从复杂的开始?,开始学一个个人博客吧

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

(一)环境部署

Python虚拟环境 安装virtualenv pip install virtualenv 创建环境 virtualenv -p D:\python\python.exe(python解释器目录) env-py3.6(虚拟环境目录&#xff0c;名称随意) 在当前目录下生成env-py3.6目录。 激活环境 ...\env-py3.6\Scripts> .\activate 关闭&#xf…

mybatis中的驼峰转换

一、有啥用 开发时常用对象来存储从数据库中的记录&#xff0c;开启驼峰转化即可实现数据库字段(通常使用_下划线连接)与对象属性的对应&#xff0c;如数据库中的first_name字段会转化为firstName与对象中的firstName属性对应。 二、配置 三、相关报错 数据库字段与对象属性…

通过myBatis将sql语句返回的值自动包装成一个java对象(1)以及SqlSessionFactory

如果我们从数据库中读取了一个用户的两个属性——用户名和密码。此时我们希望把这两个属性放入一个java的用户对象中。我们可以选择new一个user对象&#xff0c;向构造器传入我们刚刚读取的两个属性。但一旦从数据库中读取的内容变多&#xff0c;我们就需要new很多新的对象。这…

艾瑞报告:HR数字化需关注体系化能力,红海云等标杆厂商引领一体化趋势

新全球化时代背景下&#xff0c;企业经营所面临的国内外环境的不确定性增强&#xff0c;如何从不确定性中找到确定性成了大多数企业的关注要点。近日&#xff0c;艾瑞咨询发布《2023中国人力资源数字化研究报告》&#xff0c;从数字化转型的角度切入&#xff0c;探讨数字化如何…

电池包的UL9540A,电池PACK的UL9540A,工商储的UL9540A,电芯的UL9540A,电池模组的UL9540A,家储的UL9540A

电池包的UL9540A,电池PACK的UL9540A,工商储的UL9540A&#xff0c;电芯的UL9540A&#xff0c;电池模组的UL9540A,家储的UL9540A UL9540A要求ESS在不同条件下进行测试&#xff0c;并要求满足特定的性能要求。测试包括热暴露测试、短路测试、过充电和过放电测试、外部影响测试等。…

[论文阅读]DeepFusion

DeepFusion Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection 用于多模态 3D 物体检测的激光雷达相机深度融合 论文网址&#xff1a;DeepFusion 论文代码&#xff1a;DeepFusion 摘要 激光雷达和摄像头是关键传感器&#xff0c;可为自动驾驶中的 3D 检测提供补…

ssh远程访问及控制

目录 一、ssh协议简介 1、实现远程访问的协议和程序 2、ssh协议的概念及功能 3、ssh协议的工作原理 3.1 对称加密与非对称加密 3.1.1 对称加密&#xff08;Symmetric Encryption&#xff09; 3.1.2 非对称加密&#xff08;Asymmetric Encryption&#xff09; 3.2 公钥传…