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

如何利用 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,以其无与伦比的易用性和强大的扩展性&#xff0…...

“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)是一种轻量级的数据交换格式,它使用键值对的形式来表示数据&#xff…...

补充:关于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 问题&#xff1a;父元素中添加了一个click事件&#xff0c;其下面的子元素中也添加了click事件&#xff0c;此时&#xff0c;我想点击子元素获取子元素的点击事件&#xff0c;但却触发的是父元素的事件&#xff1a; <view …...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...