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

news2024/10/5 14:31:15

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

简介

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

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

先决条件

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

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

  • 在服务器上创建一个 sudo 用户:我们将使用具有 sudo 权限的非根用户完成本指南中的步骤。您可以按照我们的 Ubuntu 18.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 配置为使用 auth_socket 认证插件(默认情况下),您可以使用 sudo 登录到 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 用户帐户,我们将专门用于操作我们的新数据库。从管理和安全的角度来看,创建单一功能的数据库和帐户是一个好主意。在本指南中,我们将使用名称 wordpressuser。如果您愿意,可以随意更改此名称。

我们将创建此帐户,设置密码,并授予对我们创建的数据库的访问权限。您可以通过输入以下命令来执行此操作。请记住为您的数据库用户选择一个强密码:

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

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

FLUSH PRIVILEGES;

通过输入以下命令退出 MySQL:

EXIT;

MySQL 会话将退出,将您返回到常规的 Linux shell。

步骤 2 —— 安装额外的 PHP 扩展

在设置我们的 LEMP 栈时,我们只需要一个非常基本的扩展集合,以便让 PHP 与 MySQL 通信。WordPress 和许多插件利用额外的 PHP 扩展。

我们可以通过输入以下命令下载并安装一些最受欢迎的用于 WordPress 的 PHP 扩展:

sudo apt update
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

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

sudo systemctl restart php7.2-fpm

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

第三步 — 配置 Nginx

接下来,我们将对 Nginx 服务器块文件进行一些微小的调整。根据先决条件教程,你应该已经在 /etc/nginx/sites-available/ 目录中为你的站点配置了一个配置文件,以响应服务器的域名或 IP 地址,并受到 TLS/SSL 证书的保护。我们将以 /etc/apache2/sites-available/wordpress 为例,但你应该根据需要替换你的配置文件路径。

此外,我们将使用 /var/www/wordpress 作为我们的 WordPress 安装的根目录。你应该使用你自己配置中指定的网站根目录。

使用 sudo 权限打开你的站点服务器块文件开始:

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

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

首先创建精确匹配的位置块,用于处理 /favicon.ico/robots.txt 的请求,这两者我们都不希望记录请求。

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

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 错误作为默认选项返回。

这应该看起来像这样:

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 本身。

第四步 — 下载 WordPress

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

切换到可写目录,然后输入以下命令下载压缩版本:

cd /tmp
curl -LO 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

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

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

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

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

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

第五步 — 设置 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@4F');
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 配置文件:

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',         '从命令行复制的值');
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,请稍微探索一下界面,以熟悉您的新 CMS。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法【Java】—— 二叉树的深搜

深搜 深搜简单来说就是一直递归到底&#xff0c;然后返回&#xff0c;以二叉树为例&#xff0c;就是从根节点出发一直搜索到叶子节点&#xff0c;然后想上返回。 这里简单说明一下&#xff1a;深搜的英文缩写是 dfs&#xff0c;下面定义深搜函数名我直接命名为 dfs 实战演练 …

AVL树的创建与检测

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;游戏、数据结构、c语言基础、c学习、算法 目录 一、什么是AVL树&#xff1f; 二、平衡因子 1、什么是平衡因子&#xff1f; 2、平衡因子如何更新&#xff1f; 三、单旋 1、左单旋 ​编辑 2、右单旋 四、双旋…

OSPF的不规则区域

1.远离骨干非骨干区域 2.不连续骨干 解决方案 tunnel ---点到点GRE 在合法与非ABR间建立隧道&#xff0c;然后将其宣告于OSPF协议中&#xff1b; 缺点&#xff1a;1、周期和触发信息对中间穿越区域造成资源占用&#xff08;当同一条路由来自不同区域&#xff0c;路由器会先…

JS基础练习|动态创建多个input并且用数组记录其中的数据

效果图 、 在点击添加输入框的时候&#xff0c;创建新的元素&#xff0c;并且为其绑定响应的事件。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-…

稀缺森林火险等级预测算法,基于xgboost方法的火险等级预测,共划分5级,依据当前地区月份,降水量,风力等参数进行预测,并提供15000字的报告

森林火险等级预测算法&#xff0c;基于xgboost方法的火险等级预测&#xff0c;共划分5级&#xff0c;依据当前地区月份&#xff0c;降水量&#xff0c;风力等参数进行预测&#xff0c;并提供15000字的报告 森林火险等级预测算法介绍 项目名称 基于XGBoost的森林火险等级预测算…

双向无头非循环链表的简单实现及介绍

前言 欢迎大家阅读小奥奇的新作&#xff0c;听说上一篇我们留下了一点点 “ 简单的题目 ” &#xff0c;我们在本篇要干什么呢&#xff0c;请看本篇任务&#xff01; 本篇任务概述&#xff1a; 1、解决 “ 简单的遗留题目 ” 2、 LInkedList&#xff08;双向&#xff09;的使用…

2.1MyBatis——ORM对象关系映射

2.1MyBatis——ORM对象关系映射 1. 验证映射配置2.ResultType和ResultMap2.1ResultMap是最终的ORM依据2.2ResultType和ResultMap的使用区别 3.具体的转换逻辑3.1 TypeHandle类型转换 5.总结 概括的说&#xff0c;MyBatis中&#xff0c;对于映射关系的声明是由开发者在xml文件手…

“2024年最流行的10个前端框架”

大多数时候&#xff0c;前端开发人员需要使用一组组合语言来构建他们的前端 Web 应用程序。 HTML 负责网页中的基本布局&#xff0c;CSS 管理视觉格式和结构&#xff0c;JavaScript 用于维护交互性和功能。在这篇文章中&#xff0c;我们将了解最好的前端框架&#xff0c;这些框…

FL Studio 24.1.2.4381中文版免费下载及FL Studio 24最新使用学习教程

家好呀&#xff0c;作为一个资深的音乐爱好者和制作人&#xff0c;今天我要安利一个我最近超级痴迷的数字音频工作站软件——FL Studio24.1.2.4381中文版。这款产品可是让我的音乐创作之路如虎添翼&#xff0c;快来跟我一起看看它的炫酷功能吧&#xff01; 最近接到很多小伙伴的…

2024 ciscn WP

一、MISC 1.火锅链观光打卡 打开后连接自己的钱包&#xff0c;然后点击开始游戏&#xff0c;答题八次后点击获取NFT&#xff0c;得到有flag的图片 没什么多说的&#xff0c;知识问答题 兑换 NFT Flag{y0u_ar3_hotpot_K1ng} 2.Power Trajectory Diagram 方法1&#xff1a; 使用p…

操作系统实验之银行算法

一、实验目的 采用高级语言编写一个动态分配系统资源的程序&#xff0c;模拟死锁现象&#xff0c;观察死锁发生的条件&#xff0c;并采用适当的算法&#xff0c;有效地防止死锁的发生。 二、实验内容 本次实验采用银行算法防止死锁的发生。设有3个并发进程共享10个系统资源。在…

1c语言基础

1.关键字 一、数据类型关键字 A基本数据类型&#xff08;5个&#xff09; void&#xff1a;声明函数无返回值或无参数&#xff0c;声明无类型指针&#xff0c;显式丢弃运算结果char&#xff1a;字符型类型数据&#xff0c;属于整型数据的一种int&#xff1a;整型数据&#x…

Ollama 运行视觉语言模型LLaVA

Ollama的LLaVA&#xff08;大型语言和视觉助手&#xff09;模型集已更新至 1.6 版&#xff0c;支持&#xff1a; 更高的图像分辨率&#xff1a;支持高达 4 倍的像素&#xff0c;使模型能够掌握更多细节。改进的文本识别和推理能力&#xff1a;在附加文档、图表和图表数据集上进…

Github界面学习

之前并没有使用到其他功能大多数是看代码&#xff0c;然后看discussion&#xff1b; now,在做毕设的时候发现了一个gymnasium关于异步环境的bug&#xff0c;查看github发现已经被修复了&#xff1b; 因此希望学习一下修复者是在哪个module修复以及如何修复以及提交代码&#…

Spring Boot框架在大学生就业招聘中的应用

3系统分析 3.1可行性分析 通过对本大学生就业招聘系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本大学生就业招聘系统采用JAVA作为开发语言&#xff0c;S…

kaggle实战3RossmanStore商店销售额预测XgBoost解决回归问题案例1

kaggle实战2信用卡反欺诈逻辑回归模型案例1 数据集下载地址 https://download.csdn.net/download/AnalogElectronic/89844637 https://tianchi.aliyun.com/dataset/89785 加载数据 #预测销售额 回归问题 import numpy as np import pandas as pd import matplotlib.pyplot a…

无神论文解读之ControlNet:Adding Conditional Control to Text-to-Image Diffusion Models

一、什么是ControlNet ControlNet是一种能够控制模型生成内容的方法&#xff0c;能够对文生图等模型添加限制信息&#xff08;边缘、深度图、法向量图、姿势点图等&#xff09;&#xff0c;在当今生成比较火的时代很流行。 这种方法使得能够直接提供空间信息控制图片以更细粒…

招联2025校招内推倒计时

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

【课程学习】随机过程之泊松过程

随机过程之泊松过程 泊松分布泊松过程 泊松分布 二项分布是离散性的分布&#xff0c;泊松分布是把二项分布取n趋于无穷得到的连续分布。也就是在一段时间内不停的观察某件事情发生的次数。 如&#xff1a;一个小时内观察一段路上经过行人的数目&#xff0c;如果每个半个小时观…

nginx和gateway的关系和区别

在技术选型时&#xff0c;选择 Nginx 和 Spring Cloud Gateway&#xff08;或简称为 Gateway&#xff09;主要取决于具体应用场景和技术需求。下面是两者的一些关键差异和适用场景。 一、Nginx 概念 Nginx 是一个高性能的 Web 服务器和反向代理服务器&#xff0c;常被用作静…