MD原文档下载:百度网盘
一、Linux 进程管理
1.1 相关概念
- 进程是程序的运行实例
- 每个进程有唯一的进程ID: PID
- 进程的父进程ID: PPID
- 所有进程的始祖(系统第一个进程): systemd( PID 1 )
1.1.1 进程的生命周期
- 父进程通过 fork() 创建子进程
- 子进程继承父进程的环境变量、文件描述符等
- 子进程运行结束后发出 exit() 信号
- 父进程收到信号后清理子进程残余(收尸)
- 如果父进程没有及时清理,子进程变为"僵尸进程(Zombie)"
1.1.2 进程运行状态
man ps, /STATE
| 状态 | 字母 | 含义 | 是否占用CPU | 是否接收 kill 信号 |
|---|---|---|---|---|
| 运行 / 可运行 | R | 正在运行(Running)和等待运行(Runnable) | 是,等待运行不占用CPU,但占运行队列 | 是 |
| 可中断睡眠 | S | 等待事件完成,可被唤醒 | 否 | 是 |
| 不可中断睡眠 | D | 等待硬件 I/O,不可被唤醒 | 否 | 否 |
| 已停止 | T | 进程被暂停(挂起) | 否 | 是 |
| 僵尸进程 | Z | 进程已终止,等待父进程清理 | 否 | 否 |
附加标记
| 字母 | 含义 |
|---|---|
s | 包含子进程 |
l | 多线程 |
+ | 前台进程 |
< | 高优先级 |
N | 低优先级 |
1.2 ps 静态查看进程
系统负载过高时排障使用
1.2.1 选项
| 选项 | 说明 | 备注 |
|---|---|---|
a | 显示所有终端的进程 | |
u | 显示进程所属用户名 | |
x | 包括未链接终端的进程 | |
f | 显示进程树 | |
o 字段 | 自定义输出字段 | |
k 字段 | 对指定字段排序 | 字段前加-表示倒序 |
-sort=字段 | 对指定字段排序 | 字段前加-表示倒序 |
L | 显示支持的字段列表 | |
-C | 指定命令 | 多个命令用 , 分割 |
-L | 显示线程 | |
-e | 显示所有进程 | |
-f | 显示完整格式进程信息 | |
-F | 显示更完整格式的进程信息 | |
-H | 以进程层级格式显示相关信息 |
1.2.2 ps aux 查看所有进程
输出字段解析
| 字段 | 说明 |
|---|---|
USER | 进程所属用户名 |
PID | 唯一的进程 ID 号 |
%CPU | CPU 使用率(一段时间内占用百分比) |
%MEM | 物理内存占用百分比 |
VSZ | 虚拟内存使用量,申请内存 |
RSS | 物理内存使用量,物理内存实际占用 |
TTY | 关联终端设备, tty 为本地登录, pts/ 为远程登录, ?为守护进程 |
STAT | 进程状态 |
START | 进程启动时间 |
TIME | 进程占用CPU的时间 |
COMMAND | 命令/程序名,[]表示内核启动进程 |
# 查看指定应用进程
ps aux | grep nginx
# 统计进程总数
ps aux | wc -l
# 按CPU占比排序, -表示降序,只显示前10个
ps aux --sort=-%cpu |head
# 按内存占比排序
ps aux --sort=-%mem |head
1.2.3 ps -ef 查看父子关系
# 查看 nginx 进程的父进程,通过 PPID 确认父进程
ps -ef | grep nginx | grep -v grep
1.2.4 ps -eo 自定义字段
常用字段解析
| 字段 | 说明 |
|---|---|
pid | 进程 ID(进程号) |
ppid | 父进程 PID |
psr | 进程当前运行的 CPU 核心编号 |
user | 进程所属用户名 |
%cpu | CPU 使用率(一段时间内占用百分比) |
pri | 进程优先级(0-139,越大优先级越高) |
ni | nice 值(-20~19,越小优先级越高) |
%mem | 物理内存占用百分比 |
stat | 进程状态字符(多字符组合) |
tty | 关联终端设备,? 代表无终端(后台守护进程) |
start | 进程启动时刻 |
cmd | 完整启动命令(全部参数) |
comm | 程序短名称(仅可执行文件名,不带参数) |
exe | 进程对应的可执行文件路径 |
# 自定义字段并按 cpu使用率 倒序排序后取前10个
ps -eo user,pid,cmd,%cpu,%mem k -%cpu | head
# 自定义字段并按 物理内存占用百分比 倒序排序后取前10个
ps -eo user,pid,cmd,%cpu,%mem k -%mem | head
# 自定义字段并按 cpu使用率 倒序排序后取前10个,输出并写入文件
ps -eo cmd,pid,%cpu,%mem k -%cpu | head | tee ps.txt
# 统计各进程状态进程数量
ps -eo stat | sort | uniq -c
1.2.5 其他用法示例
# 命令按进程树显示
ps auxf
# 查看进程详细信息
prtstat 进程PID
# 查看程序的线程与CPU核心绑定关系
ps axo pid,cmd,psr -L|grep haproxy
1.3 pstree 进程树
常用于查看父进程子进程
带{}的表示多线程进程
Ubuntu需要安装包: apt install -y psmisc
# 显示PID
pstree -p
# 过滤指定程序
pstree -p | grep nginx
# 不显示线程
pstree -T
# 显示指定用户的进程
pstree -u www-data
1.4 pgrep 按名称查找 PID
# 查看 nginx 进程的PID
pgrep nginx
# 查看进程名和 PID
pgrep -l nginx
1.5 lsof 查看文件占用
# 列出符合条件的进程/端口
lsof -i :条件
# 查看由指定终端创建的进程
lsof /dev/终端名
# 查看文件占用,用于排查大文件删除但未释放磁盘空间
lsof 文件
# 查看 80 端口占用
lsof -i :80
# 查看 nginx 打开的文件
lsof -c nginx
1.6 ss 查看端口监听
-n 不解析域名 / 服务名,纯数字显示(速度快)
-t TCP 连接
-u UDP 连接
-l 仅监听状态端口
-a 所有连接(监听 + 已建立)
-p 显示进程 PID / 程序名(需 root)
-4 仅 IPv4
-6 仅 IPv6
-s 显示连接统计摘要
-o 显示计时器信息
-i 显示内部 TCP 信息(cwnd、rtt 等)
# 查看所有 TCP 监听端口
ss -ntl
# TCP+UDP 监听(日常排查首选)
ss -ntul
# 带进程名/PID
sudo ss -ntulp
# 查看程序监听端口
sudo ss -ntlp | grep nginx
# 查看 80 端口程序
sudo ss -ntulp | grep :80
# 查看所有对外 443 连接
ss -nt dport = :443
# 显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'
# 显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
1.7 top 动态查看进程
1.7.1 选项
| 选项 | 说明 |
|---|---|
-b | 全部显示所有进程,默认按CPU占用显示一部分进程 |
-d | 指定刷新间隔,默认3秒 |
-n # | 刷新 # 次后退出 |
-H | 线程模式 |
-u | 只显示指定用户 |
# 指定刷新间隔为 5s
top -d 5
# 只查看 www-data 用户启动的进程
top -u www-data
# 显示全部进程刷新3次,将输出写入文件
top -b -n 3 > top.log
1.7.2 界面解析
第一行(系统运行状态)
程序名 - 系统时间 运行时间 登录用户
load average: CPU负载(1分钟、5分钟、15分钟)
CPU负载 ≤ 核心数 表示正常,一般不超过CPU核心数
第二行(任务状态)
总进程数 运行数 休眠数 停止数
zombie 僵尸数,必须为0
第三行(CPU 使用情况)
us 用户
sy 内核
ni 优先级
id 空闲 CPU 百分比
wa 等待I/O 等待百分比(过高说明磁盘瓶颈)
hi 硬件中断
si 软件中断
st 虚拟机管理
第四行(内存使用情况)
total 总共
free 空闲
used 使用
buff/cache 缓存
第五行(交换分区 Swap)
total 总共
free 空闲
used swap使用量,过高说明内存不足
avail Mem 真实可用内存,比 free 显示的更准确
1.7.3 字段解析
| 字段 | 说明 |
|---|---|
PID | 唯一的进程 ID 号 |
USER | 进程所属用户名 |
PR | 进程优先级,PR=NI+20 |
NI | nice值(-20 最高优先级,19 最低) |
VIRT | 虚拟内存使用量,申请内存 |
RES | 物理内存使用量,物理内存实际占用 |
SHR | 共享内存大小 |
S | 进程状态 |
%CPU | CPU 使用率(一段时间内占用百分比) |
%MEM | 物理内存占用百分比 |
TIME+ | 进程占用CPU的时间 |
COMMAND | 进程实际命令 |
1.7.4 交互快捷键
| 快捷键 | |
|---|---|
q | 退出 |
z | 切换颜色显示 |
k | 杀死进程,输入 PID ,再输入信号,默认 15 |
r | 调整进程优先级,输入 PID ,再输入 Nice 值 |
l | 隐藏第一行 |
1 | 第三行切换显示每个CPU核心的压力情况 |
m | 切换第四行和第五行显示风格 |
P 或 C | 按处理器使用量排序 |
M | 按内存使用量排序 |
T | 按 累计 CPU 时间 降序 |
c | 显示程序的绝对路径 |
W | 保存配置到 ~/.toprc |
htop: 增强版top命令
1.8 kill 进程控制
实际是给进程发信号,只有进程启动才能接收信号
1.8.1 信号说明
kill -l 查看所有信号种类
常用信号
0) 探测,检测进程是否存在,是否有权限向它发出信号,常用于脚本判断程序是否启动
1) SIGHUP 无需关闭进程而让其重新初始化,重载,PID不变,一般使用systemctl reload代替
2) SIGINT 终止进程运行,相当于Ctrl+c
3) SIGQUIT 相当于Ctrl+\
9) SIGKILL 强制结束进程
15) SIGTERM 正常终止正在运行的进程,默认信号,一般使用systemctl stop代替
18) SIGCONT 继续运行
19) SIGSTOP 挂起进程,暂停,用于后台作业
1.8.2 命令格式
kill PID 使用默认信号15,优雅终止进程,进程可以保存数据、清理资源
kill -9 PID 强制终止进程,进程无响应使用
1.8.3 killall 进程名
来自psmisc包
根据进程名自动查找PID号并结束所有相关进程,信号与kill一致
1.8.4 pkill 进程名
根据进程名自动查找PID号并结束所有相关进程
更灵活,支持模糊匹配
pkill -t 终端名 结束指定终端的连接
pkill -f "完整进程名" 如果需要杀死同程序的不同进程(程序选项参数不同),输入完整进程名,避免误杀
1.9 控制作业
1.9.1 & 后台运行
命令后跟 & 可以将作业放入后台执行,不占用终端
# 启动时直接放入后台
sleep 1000 &
[1] 4338 # 1 = 作业号, 4338 = PID
# 查看后台作业
jobs
1.9.2 Ctrl + Z 暂停前台作业
本质是个进程发送 19) SIGSTOP 信号
# 前台启动 vim 编辑器,Ctrl + Z 放入后台
vim /etc/hosts
Ctrl + Z
[2]+ Stopped vim /etc/hosts
# 查看后台作业状态
jobs
[2]+ Stopped vim /etc/hosts # Stopped = 作业暂停
# 进程运行状态变为 T(停止)
ps aux | grep vim
root 4350 0.0 0.6 24992 13488 pts/0 Tl 16:20 0:00 vim /etc/hosts
# 恢复到前台
fg 2
1.9.3 jobs 查看后台作业
1.9.4 fg 恢复到前台
# 恢复最近作业到前台
fg
# 恢复指定作业到前台
fg 1
1.9.5 bg 后台作业后台恢复运行
# 将前台作业放入后台暂停运行
sleep 2000
^Z
[3]+ Stopped sleep 2000
# 恢复jobs列表中编号3的作业运行,不拉到前台
bg 3
# 查看后台作业列表,3号作业恢复运行
jobs
[3]- Running sleep 2000 &
1.9.6 kill 控制作业
给进程发送 19) SIGSTOP 和 18) SIGCONT 信号
# 将作业放入后台执行
sleep 2000 &
# 查看后台作业状态
jobs
# 给后台作业 1 发送19信号暂停
kill -19 %1
# 查看后台作业状态
jobs
# 查看后台作业 PID
pgrep sleep
# 给后台作业 PID 发送18信号恢复
kill -18 2498
# 查看后台作业状态
jobs
1.9.7 nohup 忽略 SIGHUP 信号
- 当 SSH 断开时,Shell 会向普通前台 / 后台&进程发送
SIGHUP信号,进程退出 nohup让进程屏蔽SIGHUP信号,断 SSH、关终端照样跑- 生成
nohup.out文件,输出均写入该文件 - 此时命令要结束只能
kill - 常用于需要长时间运行的脚本,例如备份、同步
# 用 sleep 模拟长时间运行的脚本
nohup sleep 3000 &
# 此时查看进程树 ,父进程为 sshd 下的 bash
pstree -p
# 断开 SSH 重新连接,进程继续运行
ps aux | grep sleep
# 此时查看进程树 ,父进程为 systemd ,不再依赖终端窗口
pstree -p
1.10 进程优先级
1.10.1 nice 值范围
| nice 值 | 说明 |
|---|---|
| -20 到 -1 | 高优先级 (需要root权限) |
| 0 | 默认优先级 |
| 1 到 19 | 低优先级 (普通用户) |
1.10.2 nice 以指定优先级启动
# 普通用户以低优先级执行 sleep 任务
nice -n 10 sleep 2000 &
# 查看进程的 Priority 和 nice 值
ps -eo pid,pri,ni,cmd | grep sleep
# root用户以高优先级执行 sleep 任务
nice -n -10 sleep 3000 &
# 查看进程的 Priority 和 nice 值
ps -eo pid,pri,ni,cmd | grep sleep
1.10.3 renice 调整运行中进程的优先级
# 将 PID 14864 的进程优先级调整为 -20
renice -20 -p 14864
# 查看调整后的进程优先级
ps -eo pid,pri,ni,cmd | grep 14864
1.11 进程管理其他命令
1.11.1 uptime 查看当前CPU负载
与 top 第一行显示的 CPU负载 一致
1.11.2 free 查看内存使用
free -m 以M为单位显示
free -h 以人类可读方式显示
buff/cache: 缓存(可释放)
available: 真实可用内存
1.11.3 查看发行版本
红帽 cat /etc/redhat-release
ubuntu cat /etc/os-release
1.11.4 uname 查看内核信息
uname -a 查看所有内核信息
uname -m 查看系统架构
uname -r 查看内核版本
1.11.5 查看CPU信息
lscpu
cat /proc/cpuinfo
nproc 统计CPU的核心数量
1.11.6 lsblk 查看硬盘和分区情况
1.11.7 lspci 查看pci设备
1.12 进程管理相关命令总结
| 操作 | 命令 |
|---|---|
| 查看所有进程 | ps aux |
| 查看进程父子关系 | ps -ef |
| 自定义显示字段 | ps -eo cmd,pid,%cpu,%mem |
| 按 cpu 排序 | `ps -eo cmd,pid,%cpu,%mem k -%cpu |
| 查看进程树 | pstree |
| 按名称查找 PID | pgrep nginx |
| 动态监控 | top / htop |
| 优雅终止进程 | kill PID |
| 强制终止进程 | kill -9 PID |
| 按名称杀死进程 | pkill nginx |
| 查看内存 | free -h |
| 查看 CPU 负载 | uptime |
| 查看端口 | ss -ntlp |
二、网络相关原理
2.1 基础概念
网络协议:网络上所有设备所使用的共同语言
协议分层:OSI七层模型
网络中的节点:主机节点和数据交换节点(交换机,路由器)
数据传输链路:
接入链路(access link),连接主机和数据交换节点
骨干链路(backbone link),数据交换节点之间
互联网主流协议TCP/IP
2.2 OSI 参考模型
| 层级 | 层级名称 | 层级功能 | 常见协议 | 传输数据名称 | 应用 |
|---|---|---|---|---|---|
| 7 | 应用层 | 为应用程序提供网络服务接口,直接与用户程序交互 | HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3、DNS、DHCP、TFTP、SNMP、MySQL | 数据/报文 | 七层负载均衡、应用网关、WAF防火墙 |
| 6 | 表示层 | 数据格式转换、加密解密、压缩解压、编码转换 | SSL/TLS、ASCII、JPEG、MPEG、加密协议 | 数据 | 加密设备、格式转换器 |
| 5 | 会话层 | 建立、管理和终止通信会话,会话同步与恢复 | NetBIOS、RPC、PPTP、SDP、SQL会话 | 数据 | 会话控制器、会话网关 |
| 4 | 传输层 | 端口寻址与端到端连接,首部包含源/目的端口,决定由哪个程序处理数据 | TCP、UDP | 数据段(Segment) | 四层负载均衡、传输层防火墙 |
| 3 | 网络层 | 跨网段路由与IP寻址,首部包含源IP和目的IP地址 | IP、ICMP、OSPF、BGP、RIP、IGMP | 数据包/分组(Packet) | 三层交换机、路由器 |
| 2 | 数据链路层 | 同一局域网内点到点传输,首部包含源MAC和下一跳MAC地址 | LLC、MAC、PPP、以太网协议、Wi-Fi协议 | 数据帧(Frame) | 二层交换机、网桥、网卡 |
| 1 | 物理层 | 传输原始比特流,定义物理介质与电气/机械特性 | RS-232、RJ45规范、光纤、双绞线、蓝牙物理层 | 比特流(Bit) | 网线、光纤、集线器、中继器 |
2.3 TCP/IP参考模型
TCP/IP参考5层模型将OSI七层模型的应用层,表示层,会话层合并为应用层
TCP/IP协议栈常见协议
| 应用层 | HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3、DNS、DHCP、TFTP、SNMP |
|---|---|
| 传输层 | TCP、UDP |
| 网络层 | IP、ICMP、IGMP |
| 数据链路层 | PPPoE、PPP、以太网协议、Wi-Fi协议 |
| 物理层 |
2.4 数据封装和解封装
发送方由上而下逐层添加协议头部
接收方由下而上逐层去除协议头部
2.5 IP地址
IP地址在网络中用于标识一个节点
IP地址用于在网络中寻址,具有唯一性
IP地址分为IPV4和IPV6,IPV4为主流地址
2.5.1 IPV4地址表示
IPv4地址由32个二进制数构成
为了方便表示通常采用点分十进制
IPv4地址范围: 0.0.0.0~255.255.255.255
2.5.2 IP地址构成
**网络部分:**用来标识一个网络
**主机部分:**用来区分一个网络内的不同主机
**网络掩码:**区分一个IP地址中的网络部分及主机部分
2.5.3 IP地址分类
A类: 0.0.0.0~127.255.255.255 单播地址 8位掩码
B类: 128.0.0.0~191.255.255.255 单播地址 16位掩码
C类: 192.0.0.0~223.255.255.255 单播地址 24位掩码
D类: 224.0.0.0~239.255.255.255 组播(不能用于单个节点)
E类: 240.0.0.0~255.255.255.255 研究
2.5.4 网段
一个网络号所定义的网络范围
网络地址: 用于标识一个网络,主机位全为0,表示网段/网络号
广播地址: 用于向该网络中的所有主机发送数据,主机位全为1
可用地址: 减去网络地址和广播地址即为可用地址
一个网段可用地址计算方法:2ⁿ-2
n为主机位数(32-掩码位数)
2.5.5 私网IP地址
A,B,C类地址预留了私网地址
A类: 10.0.0.0~10.255.255.255
B类: 172.16.0.0~172.31.255.255
C类: 192.168.0.0~192.168.255.255
连接互联网必须使用公网地址
2.5.6 特殊IP地址
表示网段: 主机位全为0,例如192.168.1.0/24
广播地址: 主机位全为1,例如192.168.1.255/24
有限广播地址: IP地址全为1,255.255.255.255
任意地址: IP地址全为0, 0.0.0.0
**回环地址:**127.0.0.0/8,表示节点自身
链路本地地址: 169.254.0.0/16,APIPA地址,当开启自动获取IP,但DHCP不可用时,自动给自身分配一个该地址段IP,用于同一局域网通信
2.5.7 IPV6
由128个二进制数构成
2.6 TCP协议
2.6.1 TCP的建立 - 三次握手
基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接
- 发起方发送第一个SYN标志的TCP报文给接收方
- 接收方接收报文后回复一个SYN和ACK标志的TCP报文给发起方
- 发起方接收报文后回复一个ACK标志的TCP报文给接收方,接收方收到报文后,TCP双向连接建立
TCP使用序列号和确认序列号字段实现数据的可靠和有序传输
2.6.2 TCP的关闭 - 四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接
- 发起方数据传输完成后发送一个FIN标志的TCP报文给接收方
- 接收方接收报文后回复一个ACK标志的TCP报文给发起方
- 接收方数据传输完成后再发送一个FIN和ACK标志的TCP报文给发起方
- 发起方接收报文后回复一个ACK标志的TCP报文给接收方,TCP双向连接断开
2.7 交换机
二层交换机
实现同网段主机通信
交换机根据MAC地址转发
基于ARP协议
主机不需要配置网关
2.8 路由器
主机配置网关
跨网段通信通过网关转发
多个路由器通过静态路由或动态路由实现数据转发
2.9 VLAN
同一交换机实现不同子网划分
三、部署 WordPress 博客系统
3.1 本地虚拟机部署
# 测试使用Ubuntu24.04.4
# 安装mysql,apache2和PHP及所需扩展
apt install -y mysql-server apache2 php php-mysqlnd php-gd php-xml php-mbstring php-json php-zip
# 确认mysql和apache2工作状态
systemctl status mysql apache2
# 确认80和3306端口是否为mysql和apache2监听
ss -ntlp | grep -E ':80|:3306'
# 确认PHP版本高于7.4,MySQL高于8.0
apt list php mysql-server
# 为WordPress创建专用数据库和用户
mysql
CREATE DATABASE wordpress;
UNINSTALL COMPONENT 'file://component_validate_password'; # mysql关闭强密码验证,生产环境不需要
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '123456'; # 生产环境不使用简单密码
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
quit
# 安装wordpress
wget https://wordpress.ac.cn/latest.tar.gz
tar xf latest.tar.gz
cp -rf wordpress/* /var/www/html/
# wordpress配置
cd /var/www/html
vim wp-config.php
cp wp-config-sample.php wp-config.php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', '123456' );
define( 'DB_HOST', 'localhost' );
# 修改wordpress文件所有权为apache2启动用户
rm -f index.html # 删除apache2自带的初始页
chown -R www-data:www-data /var/www/html/
ll /var/www/html/
# Rocky关闭默认的防火墙策略和Selinux
systemctl disable --now firewalld
setenforce 0
sed -Ei.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config
# 查询主机IP
ip a
浏览器访问主机IP进行 WordPress 初始化




3.2 阿里云部署
3.2.1 准备域名
打开阿里云并登录 - 搜索域名注册并进入 - 搜索关键字选取域名,测试环境选择价格最低的即可
这里选取了 dengtest.pw ,首年10元
注意在阿里云域名注册需要实名认证,准备个人身份证
在中国(港澳台地区除外)使用80和443端口上线网站需要备案,备案周期较长,生产环境业务上线需提前备案
3.2.2 SSL证书
域名购买后前往证书申请,申请免费证书,免费证书有效期90天








3.2.3 选购云服务器 ECS



登录凭证 自定义密码
登录密码 建议使用复杂密码,简单密码极易被破解,例如使用 openssl rand -base64 12 命令生成随机字符作为密码
提交下单

3.2.4 云解析 DNS
云服务拿到公网IP后,先完成DNS解析



3.2.5 远程连接云服务器


# 修改主机名
hostnamectl set-hostname wordpress
# 美化终端提示符(永久生效)
echo "PS1='\[\033[1;36m\][\u@\h \t \w]\\$\[\033[0m\]'" >> ~/.bashrc && source ~/.bashrc
# 终端重新连接
root@wordpress:~#
3.2.6 部署 wordpress
放入网站证书
mkdir -p /etc/nginx/ssl


关闭传输窗口
# 安装软件包
apt update;apt install -y nginx mysql-server php-fpm unzip php-mysql
# 确认安装版本,php-fpm不同版本配置文件目录不同,确认PHP版本高于7.4,MySQL高于8.0
apt list php-fpm mysql-server
# 确认相关软件服务状态和端口监听
systemctl status nginx php8.3-fpm mysql
ss -ntlp | grep -E ':80|:3306'
# php-fpm配置
vim /etc/php/8.3/fpm/pool.d/www.conf
# 修改为远程连接
;listen = /run/php/php8.3-fpm.sock
listen = 9000
# 如果nginx和php-fpm安装在同一台服务器,删除前方;启用只允许本机连接,不开启默认任何主机都可以连接
listen.allowed_clients = 127.0.0.1
vim /etc/php/8.3/fpm/php.ini
date.timezone = Asia/Shanghai #修改时区
# 修改文件上传大小限制
post_max_size = 128M
upload_max_filesize = 128M
# 修改 PHP 脚本纯代码最大执行时长
max_execution_time = 360
# 接收 & 解析客户端请求数据最长耗时
max_input_time = 600
# 配置完成重启php-fpm
systemctl restart php8.3-fpm
# nginx配置
vim /etc/nginx/conf.d/www.dengtest.pw.conf
# HTTP 80强制跳转HTTPS
server {
listen 80;
server_name www.dengtest.pw dengtest.pw;
return 301 https://$host$request_uri;
}
# HTTPS 443主配置(无正式证书也可运行)
server {
listen 443 ssl http2;
server_name www.dengtest.pw dengtest.pw;
root /data/php;
index index.php;
# 填写证书路径
ssl_certificate /etc/nginx/ssl/dengtest.pw.pem;
ssl_certificate_key /etc/nginx/ssl/dengtest.pw.key;
# SSL安全加固配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 上传大小限制
client_max_body_size 128m;
# PHP解析规则、FPM监控页
location ~ \.php$|pm_status|ping {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTPS on;
}
}
# 配置完成重启nginx服务
nginx -t
systemctl restart nginx
# mysql 创建数据库,用户和授权
mysql
CREATE DATABASE wordpress;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
quit
# 安装 wordpress
# 在线下载安装包,可能会429,下载失败;访问https://cn.wordpress.org/download/使用手动下载,传入云服务器
wget https://cn.wordpress.org/latest-zh_CN.zip
# 解压缩
unzip latest-zh_CN.zip
# 手动下单,解压包名不同
unzip wordpress-7.0.1-zh_CN.zip
mkdir -pv /data/php
mv wordpress/* /data/php/
chown -R www-data:www-data /data/php/
# 浏览器访问完成wordpress配置,配置方式不再赘述
3.2.7 wordpress 初始化
浏览器访问选购的域名:www.dengtest.pw



登录管理后台,可进行各种网站配置,发布博文等,部署完成
3.2.8 测试完成释放实例





1228

被折叠的 条评论
为什么被折叠?



