📅 Day 02:企业级项目实战部署
一、项目讲解
🎯 讲清楚:
今天目标:
在云服务器上跑出一个真实网站
🧩 博客系统选择:
- WordPress(推荐)
- Halo(进阶)
- Typecho(轻量)
核心理论知识点
Web服务是怎么工作的?(理论)
用户在浏览器输入网址,浏览器向服务器发送HTTP请求
请求到达服务器的80端口,被Nginx(Web服务器)接收
Nginx判断请求的是静态文件还是动态页面:
静态文件(图片、css、js、html):Nginx直接读取文件返回
动态页面(.php):Nginx转发给PHP-FPM处理
PHP-FPM执行PHP代码,如果需要读写数据,就连接MySQL数据库
PHP把执行结果(HTML代码)返回给Nginx
Nginx把HTML响应返回给浏览器
浏览器解析HTML,渲染成网页显示给用户
为什么选LNMP而不是LAMP?(理论)
LAMP = Linux + Apache + MySQL + PHP(经典老牌)
LNMP = Linux + Nginx + MySQL + PHP(现在更流行)
Nginx的优势:
轻量级,占用资源少
高并发性能好,适合大流量网站
配置灵活,反向代理、负载均衡都很强
现在互联网公司大多用Nginx,所以我们学LNMP
二、LNMP环境部署
教学要点:先讲清楚LNMP架构原理,再逐行演示安装命令,学生同步操作。
一、LNMP架构理论
1.1 什么是LNMP LNMP = Linux + Nginx + MySQL + PHP
- Linux:操作系统(Alibaba Cloud Linux 3)
- Nginx:高性能Web服务器(处理HTTP请求)
- MySQL/MariaDB:数据库(存储数据)
- PHP:服务端脚本语言(动态生成网页)
1.2 为什么选择LNMP而不是LAMP
- Nginx比Apache性能更高、并发能力更强
- 占用内存更少
- 当前主流Web架构
1.3 WordPress与PHP/MySQL版本依赖
重要:版本不匹配会导致WordPress安装失败,务必注意。
- WordPress 6.4.x 需要 PHP 7.4+ 和 MySQL 5.7+
- 推荐:PHP 8.0+,MySQL 8.0



二、LNMP环境部署实操
第一步 更新系统软件包
yum update -y理论:
yum是RHEL系列的包管理器,update更新所有软件包到最新版本。

第二步:安装Nginx
**Nginx是什么?**高性能的Web服务器和反向代理服务器,俄罗斯人写的,以高性能、高并发、低资源消耗著称。
Nginx重要文件路径:
主配置文件:/etc/nginx/nginx.conf
站点配置目录:/etc/nginx/conf.d/ (每个站点一个.conf文件)
默认网站根目录:/usr/share/nginx/html/
日志目录:/var/log/nginx/ (access.log访问日志,error.log错误日志)
# 安装Nginx
yum install -y nginx
# 启动Nginx
systemctl start nginx
# 设置Nginx开机自启
systemctl enable nginx
# 查看Nginx状态
systemctl status nginx理论:
systemctl是系统服务管理命令,start启动,enable设置开机自启。
验证:浏览器访问 http://你的公网IP,看到Nginx欢迎页即成功。


第三步:安装MariaDB / MySQL 数据库
**MySQL是什么?**最流行的关系型数据库,用来存储网站的数据,比如文章、用户、评论等。
在 CentOS 7.9 中,官方自带的数据库是 MariaDB(MySQL 的亲兄弟,命令与性能完全兼容)。针对教学和常规开发,直接安装 MariaDB 是最快且最不容易出错的选择。
# 1. 一键安装 MariaDB 数据库服务器及客户端
yum install -y mariadb-server mariadb
# 2. 启动并设置开机自启
systemctl start mariadb && systemctl enable mariadb
# 3. 🛡️ 执行数据库安全初始化脚本(敲黑板!)
# 执行后系统会提出几个问题,请按以下提示操作:
# Enter current password for root: 直接敲回车(因为初始密码为空)
# Set root password? [Y/n]: 输入 y,然后设置你的数据库新密码(如 123456),连输两遍
# 其余所有问题(移除匿名用户、禁用远程root登录、删除test库)全部一路输入 y 回车即可
mysql_secure_installationmysql_secure_installation 交互过程:
Enter current password for root: [直接回车,初始无密码]
Set root password? [Y/n] Y
New password: [设置密码,如:MyDB@2026!]
Re-enter new password: [确认密码]
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y2.4 安装PHP及扩展(15分钟)
第四步:安装PHP
**PHP是什么?**一种服务器端脚本语言,专门用来开发Web应用。WordPress就是用PHP写的。
**PHP-FPM是什么?**PHP的FastCGI进程管理器,Nginx通过FastCGI协议和PHP-FPM通信,把动态请求交给PHP处理。
CentOS 7.9 默认源里的 PHP 版本是极其老旧的 5.4,早已被时代淘汰。为了能跑现代的动态网站,我们使用国内清华源或阿里源的 Remi 仓库 来安装主流的 PHP 7.4。
# 1. 安装 PHP 第三方扩展源(Remi 源依赖 EPEL)
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 2. 启用 PHP 7.4 专属下载通道
yum install -y yum-utils
yum-config-manager --enable remi-php74
# 3. 安装 PHP 核心及 Nginx 联动所需的 php-fpm 组件,以及常用数据库扩展
# 安装PHP及常用扩展
yum install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-curl
# 启动 PHP-FPM 并设置开机自启
systemctl start php-fpm
systemctl enable php-fpm
# 查看PHP版本
php -v
第五步:配置Nginx支持PHP
现在Nginx和PHP都装好了,但它们还不认识对方,需要配置Nginx,让它知道.php文件要转发给PHP-FPM处理。
**排错思路:**如果访问phpinfo.php显示的是源码或者下载文件,说明Nginx没配置好,没有把.php请求转发给PHP。检查location配置对不对,PHP-FPM启动了没有。
# 查看Nginx配置文件
cat /etc/nginx/nginx.conf理论:
vim是Linux下的文本编辑器,按i进入编辑模式,按Esc退出编辑模式,输入:wq保存退出。
修改配置:
直接覆盖默认配置文件,可一键复制执行,无需手动编辑:
cat > /etc/nginx/conf.d/default.conf << 'EOF'
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
# 转发PHP请求给PHP-FPM处理
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF6.2 测试配置并重载
# 测试Nginx配置是否正确
nginx -t
# 重启Nginx使配置生效
systemctl restart nginx2.6 测试PHP是否正常工作(10分钟)
# 创建测试文件
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
# 浏览器访问:http://你的公网IP/info.php看到PHP信息页面即表示LNMP环境部署成功。


三、WordPress安装与配置
第六步:部署WordPress
**WordPress是什么?**最流行的博客/CMS系统,全球30%以上的网站都用它,PHP+MySQL写的,插件主题非常丰富。
**为什么要改权限?**Nginx和PHP-FPM运行的用户是nginx,网站文件的所有者要是nginx,不然PHP没有权限写入文件,上传主题、插件、图片都会失败。这是新手最容易踩的坑!
一、🌐 全球第一 CMS:WordPress 介绍
📊 一、 WordPress 的江湖地位
WordPress 诞生于 2003 年,最初只是一个简简单单的博客(Blog)系统。但在随后的二十多年里,它凭借强大的开源生态一路逆袭。
- 恐怖的市场份额:根据最新行业统计,全球所有架设了内容管理系统的网站中,有超过 60% 是使用 WordPress 搭建的。这意味着互联网上每 3 到 4 个网站,就有一个底下跑着 WordPress。
- 从博客到万物:现在的 WordPress 早已不是当年那个写日记的工具。通过强大的扩展性,它能摇身一变成为:
- 个人博客、技术笔记、自媒体站点
- 企业官网、产品展示站、资讯新闻门户
- 电子商务网站(配合 WooCommerce 插件,直接变身在线商城)
- 社交网络与论坛(配合 BBPress)
- 简历、作品集、问答社区
- 小程序的后端 API 支撑平台(利用自带的 REST API)
🛠️ 二、 底层技术架构(经典的 LNMP/LAMP)
对软件工程或计算机专业的学生来说,WordPress 是学习 Web 标准三层架构的绝佳活教材:
| 架构分层 | 核心技术 | 担当角色 | 课堂比喻 |
|---|---|---|---|
| 表现层 (Web服务器) | Nginx / Apache | 负责监听 80/443 端口,接收用户的 HTTP 请求,并将静态资源(图片、CSS)直接返回。 | 店面接待员 |
| 业务逻辑层 (应用) | PHP | 核心业务代码。当用户要发表文章、登录后台时,PHP 现场计算、拼装网页。 | 后厨大厨 |
| 数据层 (数据库) | MySQL / MariaDB | 存放所有的文章内容、用户密码、评论、系统配置。所有数据格式高度结构化。 | 食材仓库 |
💡 三、 为什么 WordPress 能统治互联网?(核心优势)
- 开源与免费(Open Source):基于 GPL 协议完全开源,任何人都可以免费下载,并根据企业需求修改底层源码,没有商业版权的“卡脖子”风险。
- 恐怖的插件(Plugins)生态:这是它的核心灵魂。WordPress 官方市场有数万款免费/付费插件。你不需要懂写代码,只要点击“安装插件”,就能给网站加上“中英文切换”、“SEO 优化”、“第三方支付”、“防刷安全防火墙”等大厂级功能。
- 海量主题(Themes)热插拔:真正实现了“前后台分离”。后台的数据不用动,在前端换个主题,整个网站的视觉风格和排版瞬间改头换面。
- 对开发者极其友好(REST API):现代的 WordPress 自带完善的路由接口,很多全栈工程师(如 Go、Python 开发者)直接把它当成一个现成的 无头 CMS(Headless CMS),只用它的后台管理数据,前端自己用 Vue/React 或微信小程序去调用它的 JSON 接口。
二、WordPress部署实操
第一步:为 WordPress 创建专属数据库与用户
严禁在生产环境直接使用 root 账户连接网站!我们需要为 WordPress 单独开辟一个干净的库和专职的管理账户。
# 1. 登录 MariaDB / MySQL 数据库(输入你之前设置的密码)
mysql -u root -p
# 2. 进入 MySQL 终端后,依次执行以下 SQL 语句(注意每行末尾的分号):-- 创建名为 wordpress 的独立数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建一个专职数据库用户 wpuser,密码设为 WpPassword@2026(可自定义)
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wp123456';
-- 把 wordpress 数据库的所有权限赋予这个新用户
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
-- 刷新权限并退出
FLUSH PRIVILEGES;
EXIT;记录:数据库名、用户名、密码(后面配置需要)
第二步:下载并解压 WordPress 源码包
既然我们的 Nginx 网站根目录定在了 /usr/share/nginx/html,我们就直接把源码下载并梳理到该线下。
# 1. 进入网站根目录的上一级,准备下载
cd /usr/share/nginx/
# 2. 下载 WordPress 最新中文版源码包(如果慢,可以多试两次或本地下载后上传)
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
# 3. 解压源码包(解压后会生成一个名为 wordpress 的文件夹)
tar -zxvf latest-zh_CN.tar.gz
# 4. 规范化替换:备份原有的空 html 目录,把解压出来的 wordpress 变成正统根目录
mv html html_bak
mv wordpress html2.4 设置文件权限(10分钟)
# 【极其重要】下放权限给 Nginx 进程,否则后台无法上传图片或更新插件!
# 1. 将网站根目录下所有文件的所有者,强行变更为 nginx 用户和 nginx 用户组
chown -R nginx:nginx /usr/share/nginx/html/
# 2. 将目录权限设置为标准的 755(目录可读写执行,文件可读写)
chmod -R 777 /usr/share/nginx/html/理论:Linux权限管理中,
chown更改文件所有者,chmod更改权限。755表示rwxr-xr-x,644表示rw-r--r--。
⚙️ 第三步:通过 Web 引导界面完成核心配置
现在,万事俱备。
- 打开本地电脑的浏览器,访问你的阿里云公网 IP:
http://你的阿里云公网IP/。 - 此时屏幕上会弹出 WordPress 亲切的“欢迎使用”安装引导页。点击“现在开始!”。

- 按照提示,精准填入我们刚才在第二步中配置的数据库暗号:
- 数据库名:
wordpress - 用户名:
wpuser - 密码:
wp123456 - 数据库主机:
localhost - 表前缀:
wp_(默认即可)
- 数据库名:
- 点击“提交”。系统会验证连接情况。如果连接成功,点击“运行安装程序”。
- 紧接着设置你的站点标题、管理员账号、密码及邮箱(这是以后登录 WordPress 后台
http://IP/wp-admin的最高凭证,请务必牢记)。 - 点击“安装 WordPress”,静候 3 秒,大功告成!


第五步:发布第一篇博文
登录WordPress后台
点击"写文章"
输入标题和内容、上传图片
点击"发布"
访问首页查看效果
更换主题、安装主题/插件
🛡️ 第四步:企业级调优——突破上传与内存限制(防坑加餐)
WordPress 跑起来后,学生往往会遇到两个经典报错:
- “上传的附件文件超过了 php.ini 中 upload_max_filesize 选项限制的额度。”
- “WordPress 后台在线安装主题/插件时提示需要输入 FTP 凭证。”
带学生现场修改这两处底层环境参数,能极大地体现运维的专业度:
1. 解锁 PHP 上传与执行上限
# 配置文件一般在 /etc/php.ini
# 修改最大上传限制为 64M,单次提交上限为 64M
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 64M/g' /etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 64M/g' /etc/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 256M/g' /etc/php.ini
# 重启 PHP-FPM 生效
systemctl restart php-fpm2. 免除 FTP 提示,允许直接热更新
直接在 WordPress 核心配置文件的末尾追加一行代码,告诉系统直接使用本地文件系统:
echo "define('FS_METHOD', 'direct');" >> /usr/share/nginx/html/wp-config.php
部署流程梳理

常见错误排查
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 浏览器访问IP打不开 | 安全组/防火墙没开80 Nginx没启动 | 先ping通不通 → 检查安全组 → 检查防火墙 → systemctl status nginx |
| 访问PHP文件显示源码/下载 | Nginx没配置PHP解析 PHP-FPM没启动 | 检查nginx配置里有没有location ~ \.php$ → 看php-fpm状态 |
| 访问PHP显示502 Bad Gateway | PHP-FPM没启动 fastcgi_pass地址不对 | systemctl status php-fpm → 看nginx错误日志 /var/log/nginx/error.log |
| WordPress连不上数据库 | 数据库名/用户名/密码错 MySQL没启动 用户没有权限 | 用命令行mysql -u wpuser -p 试试能不能登录 → 检查数据库名对不对 |
| 上传主题/插件失败 | 目录权限不对 | 检查wp-content目录的所有者是不是nginx → chown改权限 |
| yum安装找不到包 | 源没配置对 包名写错了 | 检查源有没有装对 → yum search 关键词搜一下 |
**排错黄金法则:**看日志!看日志!看日志!重要的事情说三遍。服务出问题了,第一时间去看它的日志文件,错误信息都在里面。Nginx的错误日志在/var/log/nginx/error.log,MySQL的在/var/log/mysqld.log。
四、分组实操
分组实操安排
分组方式:3-4人/组,每组指定1名组长
组内分工建议:
组长:整体协调,把控进度,遇到问题组织讨论
主操作员:主要在服务器上执行命令(可以轮换,每个人都练练)
记录/汇报员:记录操作步骤、遇到的问题和解决方法,准备答辩PPT(可在操作间隙准备)
检查员:每完成一步就验证一下,确认是否成功,对照任务清单检查
建议:每个人都要动手操作,不要一个人干其他人看着。可以一个人操作,其他人看着,发现问题及时指出来。
实践任务要求
基础任务(必做,60分)
成功安装Nginx,能通过公网IP访问到Nginx欢迎页 ✅
成功安装MySQL,能正常登录,创建wordpress数据库和用户 ✅
成功安装PHP和PHP-FPM,phpinfo页面能正常显示 ✅
成功部署WordPress,能正常访问博客首页和后台 ✅
能发布一篇文章,上传一张图片 ✅
进阶任务(选做,每项加10分)
安装一个好看的WordPress主题,简单配置一下
安装几个常用插件(比如WP Super Cache缓存插件)
配置虚拟主机,用不同域名访问不同网站(可以改hosts测试)
配置HTTPS(可以用自签名证书试试)
尝试部署另一个PHP应用(比如Typecho、Discuz、phpMyAdmin)
给网站加个简单的访问统计
挑战任务(大神专属,额外加分)
用Docker方式部署WordPress(如果学过Docker的话)
- 如何在CentOS 7上安装 Docker:https://mp.weixin.qq.com/s/-Wh_XE9QmTNrPE8Hr46OIg
- 利用Docker安装WordPress: https://mp.weixin.qq.com/s/-CajW_bmCdwgdLzSTvlibA
- 使用Docker快速搭建Gitbook:https://mp.weixin.qq.com/s/Acxko4mgum3egKq0W3U2kA
配置Nginx反向代理,实现动静分离
写一个简单的Shell脚本,一键部署LNMP
Day 02 课后任务
各组继续完善项目,确保基础任务全部完成
有精力的组挑战进阶任务
整理今天的操作步骤、遇到的问题和解决方法(答辩素材)
为明天的PPT准备素材(截图、架构图等)
预习明天的答辩要求,想想PPT怎么写
安全提醒:
服务器密码不要设置太简单,避免被黑客扫到
不要在服务器上做违法违规的事情
操作要小心,特别是rm命令,删错了找不回来
搞坏了也别怕,可以重置系统盘重来,就当练手了