如何利用 LNMP 搭建 WordPress 站点
作者 乐维社区(forum.lwops.cn) 许远
在这个信息爆炸的时代,拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台,已成为企业和个人的基本需求。WordPress,以其无与伦比的易用性和强大的扩展性,成为了构建此类平台的首选工具。而LNMP,这个由Linux、Nginx、MySQL和PHP组成的强大组合,为WordPress提供了一个稳定而高效的运行环境。本文将带您走进搭建WordPress站点的奇妙旅程,从0开始,利用LNMP的强大功能,打造一个既充满个性又能满足业务需求的在线家园。
LNMP项目实战环境说明
L:Linux(CentOS7)https://mirrors.aliyun.com/centos/7/isos/x86_64/
N:Nginx(1.18.0) https://nginx.org/en/download.html
M:MySQL(8.0.19) https://dev.mysql.com/downloads/mysql/
P:PHP(7.4.10) http://php.net/downloads.php
Wordpress(5.4.2):https://cn.wordpress.org/download/
#部署规划:
192.168.26.201:Nginx php-fpm 运行web服务
192.168.26.202:运行MySQL数据库
1.1 部署数据库
在192.168.26.202主机部署MySQL服务
1.1.1 部署Mariadb数据库
1 [root@mariadb ~]# yum -y install mariadb-server
2 [root@mariadb ~]# systemctl enable --now mariadb.service
1.1.2 创建wordpress数据库和用户并授权
[root@mariadb ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> create user wordpress@'192.168.26.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on wordpress.* to wordpress@'192.168.26.%';
Query OK, 0 rows affected (0.00 sec) 18
MariaDB [(none)]>
1.1.3 验证MySQL账户权限
在WordPress服务器使用授权的MySQL账户远程登录测试权限
[root@web ~]# mysql -uwordpress -p123456 -h192.168.26.202
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| wordpress |
+--------------------+
3 rows in set (0.00 sec)
1.2 部署PHP
在192.168.26.201主机部署php-fpm服务
1.2.1 编译安装 php
https://www.php.net/downloads.php
[root@centos7 ~]# yum -y install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
[root@centos7 ~]#cd /usr/local/src
[root@centos7 src]#wget https://www.php.net/distributions/php-7.4.11.tar.xz
[root@web src]# tar xf php-7.4.11.tar.xz
[root@web src]# ls
nginx-1.22.0 nginx-1.22.0.tar.gz php-7.4.11 php-7.4.11.tar.xz
[root@web src]# cd php-7.4.11/
[root@centos7 php-7.4.11]# ./configure --prefix=/usr/local/php74 --enable- mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo
......config.status: creating main/php_config.h
config.status: executing default commands+--------------------------------------------------------------------+| License: |
| This software is subject to the PHP License, available in this || distribution in the file LICENSE. By continuing this installation || process, you are bound by the terms of this license agreement. || If you do not agree with the terms of this license, you must abort || the installation process at this point. |+--------------------------------------------------------------------+Thank you for using PHP.[root@centos7 php-7.4.11]#make -j 8 && make install
1.2.2 准备PHP配置文件
#生成配置文件
[root@centos7 php-7.4.11]#cp /usr/local/src/php-7.4.11/php.ini-production /etc/php.ini
[root@web php-7.4.11]# cd /usr/local/php74/etc/
[root@web etc]# cp php-fpm.conf.default php-fpm.conf[root@web etc]# pwd
/usr/local/php74/etc
[root@web etc]# cd php-fpm.d/
[root@web php-fpm.d]# cp www.conf.default www.conf[root@web php-fpm.d]# vim www.conf
[root@centos7 php-fpm.d]#grep '^[^;]' www.conf[www]
user = nginxgroup = nginx
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /pm_status
ping.path = /ping
1.2.3 启动并验证 php-fpm服务
[root@web php-fpm.d]# /usr/local/php74/sbin/php-fpm -t
[01-Aug-2022 19:44:33] NOTICE: configuration file /usr/local/php74/etc/php- fpm.conf test is successful
[root@web php-fpm.d]# /usr/local/php74/sbin/php-fpm
[root@web php-fpm.d]# ss -ntl
State Recv-Q Send-Q Local Address:PortPeer Address:PortLISTEN 0 100 127.0.0.1:25*:*LISTEN 0 128 127.0.0.1:9000*:*LISTEN 0 128 *:22*:*LISTEN 0 100 [::1]:25[::]:*
LISTEN 0 128 [::]:22[::]:*[root@web php-fpm.d]#[root@web php-fpm.d]# pstree -p |grep php|-php-fpm(14119)-+-php-fpm(14120)| `-php-fpm(14121)[root@web php-fpm.d]# ps -ef |grep phproot 14119 1 0 19:45 ? 00:00:00 php-fpm: master process(/usr/local/php74/etc/php-fpm.conf)nobody 14120 14119 0 19:45 ? 00:00:00 php-fpm: pool wwwnobody 14121 14119 0 19:45 ? 00:00:00 php-fpm: pool wwwroot 14134 35079 0 19:46 pts/2 00:00:00 grep --color=auto php
1.3 部署 Nginx
在192.168.26.201主机部署nginx服务
1.3.1 编译安装 nginx
1 [root@db1 ~]# vim install_nginx.sh#!/bin/bash
安装必要的编译依赖
yum install -y gcc-c++ pcre-devel zlib-devel make
下载Nginx源码包
wget http://nginx.org/download/nginx-1.22.0.tar.gztar zxvf nginx-1.22.0.tar.gzcd nginx-1.22.0
配置编译选项,这里只列出了一部分常用选项
./configure --prefix=/usr/local/nginx --with-http_ssl_module
编译和安装
make && make install
启动Nginx
/usr/local/nginx/sbin/nginx2 [root@db1 ~]# /bin/bash install_nginx.sh3 [root@db1 ~]# ss -ntl | grep 80LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:8080 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:8080 [::]:*
1.3.2 配置 Nginx 支持 fastcgi
[root@web ~]#vim /usr/local/nginx/conf/nginx.conf[root@web ~]#grep -Ev '#|^$' vim /usr/local/nginx/conf/nginx.confworker_processes 1;events {worker_connections 1024;}http {
include mime.types;
default_type application/octet-stream;sendfile on;keepalive_timeout 65;
server {listen 80;server_name localhost;location / {root html;index index.php index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html { root html;}location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}} [root@web ~]# /usr/local/nginx/sbin/nginx
1.4 部署 WordPress
在192.168.26.201主机部署 wordpress
1.4.1 准备 WordPress 文件
[root@web ~]# wget https://cn.wordpress.org/wordpress-6.0.1-zh_CN.tar.gz
[root@web ~]# tar xf wordpress-6.0.1-zh_CN.tar.gz
[root@web ~]#cp -r wordpress/* /usr/local/nginx/html
[root@web html]# cp wp-config-sample.php wp-config.php
[root@web html]# vim wp-config.php
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpress' );
/** Database password */
define( 'DB_PASSWORD', '123456' );
/** Database hostname */
define( 'DB_HOST', '192.168.26.202' );
[root@web html]# chown -R nginx.nginx .
1.4.2 初始化web页面
打开浏览器访问下面链接
192.168.26.201
1.4.3 登录后台管理界面并发表文章
1.4.4 验证发表的文章
#可以看到上传的图片
[[root@web html]# tree wp-content/uploads/
wp-content/uploads/ └── 2022
└── 08
└── 1.png
2 directories, 1 file
1.4.5 配置允许上传大文件
#注意:默认只支持1M以下文件上传 ,要利用php程序上传大图片 ,还需要修改下面三项配置 ,最大上传由 三项值的最小值决定
#直接上传大于1M文件 ,会出现下面413错误
[root@centos7 ~]#tail -f /apps/nginx/logs/access.log
10.0.0.1 - - [27/Nov/2020:12:21:16 +0800] "POST /wp-admin/async-upload.php
HTTP/1.1" 413 585 "http://10.0.0.7/wp-admin/upload.php" "Mozilla/5.0
(Windows NT
10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67
Safari/537.36 Edg/87.0.664.47"
#nginx上传文件大小限制
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
server {
client_max_body_size 10m; #默认值为1M
.....
#php上传文件大小限制
[root@centos7 ~]#vim /etc/php.ini
post_max_size = 30M #默认值为8M
upload_max_filesize = 20M #默认值为2M
[root@centos7 ~]#systemctl restart nginx php-fpm
以上就是本期的全部内容,更多运维技巧欢迎关注乐维社区,更多运维问题也欢迎到乐维社区留言提问。
相关文章:

如何利用 LNMP 搭建 WordPress 站点
作者 乐维社区(forum.lwops.cn) 许远 在这个信息爆炸的时代,拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台,已成为企业和个人的基本需求。WordPress,以其无与伦比的易用性和强大的扩展性࿰…...

“Mutation Observer:让DOM变化尽在掌握
Mutation Observer(变动观察者) 定义 Mutation Observer是一种JavaScript API,用于异步监测DOM树的变动,包括元素的添加、删除、属性变化等。当DOM发生变动时,它可以触发回调函数,允许你对变动作出响应。 …...

oracle(19c)用户管理
简介 本文介绍 Oracle 中的用户管理,包含以下内容: 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 使用前可以自行安装oracle数据库 oracle19c安装&a…...

浅谈安科瑞智慧用电系统在电气火灾中的应用
摘要:为了对电气火灾事故进行预测和预警,同时为了对电气火灾事故的应急救援提供 支持,将智慧用电监控系统应用于电气火灾中。该系统利用物联网、移动互联网、云平台、大数据技术,实现对电气线路电流、漏电、温度、谐波等参数进行…...

【Material-UI】Button 组件中的尺寸设置(Sizes)详解
文章目录 一、基础尺寸选项1. 小尺寸(Small)2. 中等尺寸(Medium)3. 大尺寸(Large) 二、尺寸的应用场景三、高级用法和最佳实践1. 使用主题调整默认尺寸2. 确保一致性3. 考虑无障碍设计 四、总结 在用户界面…...

Java学习Day20
Vue学习 nodejs的安装与环境配置 1.直接去官网下载合适版本的nodejs( https://nodejs.org/zh-cn/download/prebuilt-installer) 2.解压下载的安装包,将文件路径配置到系统变量的path中,然后确认后退出。可以使用终端来查看安装的nodejs版本。使用winR…...

代理IP怎么弄,如何在电脑中设置IPXProxy代理IP?
随着互联网的不断普及,人们可以利用网络在不同的领域实现更多的可能性。在这个过程中,许多新型网络技术受到人们的关注,代理IP就是其中之一。使用代理IP可以隐藏真实的IP地址,帮助我们突破网络限制、保护隐私、进行网页抓取等一系…...
MacOS 查看端口命令
netstat 命令 查看所有监听的端口 netstat -nat | grep LISTEN 查看9000端口 netstat -nat | grep 9000 # 示例输出 tcp4 0 0 127.0.0.1.9000 *.* LISTEN lsof 命令 查看所有TCP监听的端口 lsof -n -P -i TCP -s TCP:LISTEN 参…...
【python】序列化与反序列化
序列化与反序列化 JSON、CSV和YAML都是常见的数据序列化和反序列化格式。它们都可以用于将数据从一种表示形式转换为另一种表示形式。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使用键值对的形式来表示数据ÿ…...
补充:关于GRU的详细运作原理以及特殊的优化思路
1. GRU的基本结构和运作原理 1.1 GRU的基本概念 Gated Recurrent Unit (GRU) 是一种简化版的循环神经网络 (RNN),它通过引入门控机制来解决长期依赖问题,同时减少参数数量以降低计算复杂度。 1.2 GRU的结构详解 GRU 包含两个门控机制:更新门 (update gate) 和重置门 (re…...

xxl-job 源码梳理(2)-服务端
目录 1. 控制面的接口2.手动触发任务2. 定时任务的实现 1. 控制面的接口 服务端包含xxl-job的管理端,页面上的接口后端一系列的controller接口 appName是一个核心概念,它是指执行器应用的名称,appName是执行器的唯一标识 页面上的接口&#…...

C++ GDl+ 多张图片合并生成GIF动画格式图片
使用ImageMagick多张图合成GIF。 1、工具下载安装 下载地址:ImageMagick – Download,windows下载版本如下: 下载后,安装,安装时选择为C/C安装动态库和头文件。 2、代码实现 附加包含目录:ImageMagick-7.…...

【C++】模拟实现list
🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目及其功能 📌了解list官方标准 了解模拟实现list 📌了解更底层的list实现 二.list迭代器和vector迭代器的异同 📌迭…...
怎么使用git merge合并两个分支?
在Git中,git merge命令用于将两个或多个开发历史(通常指分支)合并到一起。以下是一个基本的步骤指南,说明如何使用git merge来合并两个分支。 ### 前提条件 - 确保你已经安装了Git,并且熟悉基本的Git命令,如…...
ios 5.5寸、ipad13英寸如何截屏
ios上架的时候,你可能会发现,上架需要ios 5.5寸,ipad需要13英寸的屏幕截屏。 但是尴尬了,我们手头上的手机,可能是最新的iphone 15,并没有远古时代iphone 8 plus的5.5寸,那么我们该如何截屏呢&…...
spdlog日志库--输出格式(fmt 库集成)
系列目录 spdlog日志库–基础介绍 spdlog日志库–源码解析 文章目录 1. 格式输出fmt格式输出2. format_spec 格式空间正数和负数的格式#号控制输出格式3. %s占位符 切换 {}占位符 (fmtlib(fmt::format)){}占位符 -> %s等占位符%s占位符 -> {}占位符4. 不使用占位符({}、%…...

Docker简介 MacM1安装Docker
文章目录 1 Docker简介2 Docker VS 虚拟机1 Docker优势2 Docker用途 3 MacM1 下载安装Docker1 配置环境变量 4 配置Docker2 设置Docker资源3 设置Docker镜像 参考 1 Docker简介 Docker主要解决了软件开发和运行配置的问题,但是由于其功能的强大,也被应用…...

【Linux】yum软件包管理器(使用、生态、yum源切换)
目录 1.yum-软件包管理器😸1.1yum使用方法1.2什么是yum?😸1.3yum的周边生态1.4yum源切换1.4.1 查看系统本身yum源1.4.2 软件源1.4.3yum源配置 1.yum-软件包管理器 以下操作需要联网的情况下进行 😸1.1yum使用方法 安装软件时由于需…...

群晖NAS安装Video Station结合内网穿透实现远程访问本地存储的影音文件
文章目录 前言1.使用环境要求:2.下载群晖video station:3.公网访问本地群晖video station:4.公网条件下访问本地群晖video station5.公网条件下使用移动端(安卓,ios等系统)访问本地群晖video station 前言 …...
Vue中@click.stop与@click.prevent
Vue中click.stop与click.prevent 一、click.stop 问题:父元素中添加了一个click事件,其下面的子元素中也添加了click事件,此时,我想点击子元素获取子元素的点击事件,但却触发的是父元素的事件: <view …...

Sklearn 机器学习 缺失值处理 填充数据列的缺失值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 💡使用 Scikit-learn 处理数据缺失值的完整指南 在机器学习项目中,数据缺失是不可避…...
详细讲解Flutter GetX的使用
Flutter GetX 框架详解:状态管理、路由与依赖注入 GetX 是 Flutter 生态中一款强大且轻量级的全功能框架,集成了状态管理、路由管理和依赖注入三大核心功能。其设计理念是简洁高效,通过最小的代码实现最大的功能,特别适合快速开发…...
Python项目中添加环境配置文件
在Python项目中添加配置文件有多种方式,每种方式对应不同的依赖包和读取方法。以下是 7种主流配置管理方案,包含安装命令、配置示例和变量读取方法: 1. .env 文件(推荐简单项目) 依赖包: python-dotenv pip install …...

阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库 最近帮朋友 完成一些运维工作 ,这里记录一下。 文章目录 阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库最近帮朋友 完成一些运维工作 ,这里记录一下。 阿里云 RDS MySQL 5.7 添加白名单1. 登录…...

STM32 控制12VRGB灯带颜色亮度调节,TFTLCD显示
接了一个同学的小项目,要实现控制一个实体,控制灯带的亮度为红/绿/蓝/白/黄以及亮度的叠加。 时间要的比较急,要两天实现,因此不能打板,只能采用现有模块拼接。 一. 实施方案 一开始觉得很简单,就是使用五…...
Redis故障转移
概述 本文主要讲述了Redis故障转移的原理及过程,可与「Redis高可用架构」文章一同阅读,可更好理解相关内容,及整个Redis高可用架构的实现原理。 Leader 选举 哨兵首先进入 WATI_START 状态进行准备,等待哨兵成为哨兵集群的 Leade…...

day029-Shell自动化编程-计算与while循环
文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https整数过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…...
python学习打卡day47
DAY 47 注意力热图可视化 昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 # 可视化空间注意力热力图(显示模型关注的图像区域) def visualize_attention_map(model, test_loader,…...

MySQL中的内置函数
文章目录 一、日期函数1.1 获取当前的日期1.2 获取当前时间1.3 获取当前日期和时间1.4 提取时间日期1.5 添加日期1.6 减少日期1.7 两个日期的差值 二、字符串处理函数2.1 获取字符串的长度2.2 获取字符串的字节数2.3 字符串拼接2.4 转小写2.5 转大写2.6 子字符串第⼀次出现的索…...

AI大数据模型如何与thingsboard物联网结合
一、 AI大数据与ThingsBoard物联网的结合可以从以下几个方面实现: 1. 数据采集与集成 设备接入:ThingsBoard支持多种通信协议(如MQTT、CoAP、HTTP、Modbus、OPC-UA等),可以方便地接入各种物联网设备。通过这些协议&am…...