Skip to content

📅 Day 02:企业级项目实战部署 ​

一、项目讲解 ​

🎯 讲清楚: ​

今天目标:

在云服务器上跑出一个真实网站


🧩 博客系统选择: ​

  • WordPress(推荐)
  • Halo(进阶)
  • Typecho(轻量)

核心理论知识点 ​

Web服务是怎么工作的?(理论) ​

  1. 用户在浏览器输入网址,浏览器向服务器发送HTTP请求

  2. 请求到达服务器的80端口,被Nginx(Web服务器)接收

  3. Nginx判断请求的是静态文件还是动态页面:

    • 静态文件(图片、css、js、html):Nginx直接读取文件返回

    • 动态页面(.php):Nginx转发给PHP-FPM处理

  4. PHP-FPM执行PHP代码,如果需要读写数据,就连接MySQL数据库

  5. PHP把执行结果(HTML代码)返回给Nginx

  6. Nginx把HTML响应返回给浏览器

  7. 浏览器解析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

image-20260705033913287

image-20260705033902024

image-20260705034222765

二、LNMP环境部署实操 ​

第一步 更新系统软件包 ​

bash
yum update -y

理论:yum是RHEL系列的包管理器,update更新所有软件包到最新版本。

image-20260705071843813

第二步:安装Nginx ​

**Nginx是什么?**高性能的Web服务器和反向代理服务器,俄罗斯人写的,以高性能、高并发、低资源消耗著称。

Nginx重要文件路径:

  • 主配置文件:/etc/nginx/nginx.conf

  • 站点配置目录:/etc/nginx/conf.d/ (每个站点一个.conf文件)

  • 默认网站根目录:/usr/share/nginx/html/

  • 日志目录:/var/log/nginx/ (access.log访问日志,error.log错误日志)

bash
# 安装Nginx
yum install -y nginx

# 启动Nginx
systemctl start nginx

# 设置Nginx开机自启
systemctl enable nginx

# 查看Nginx状态
systemctl status nginx

理论:systemctl是系统服务管理命令,start启动,enable设置开机自启。

验证:浏览器访问 http://你的公网IP,看到Nginx欢迎页即成功。

image-20260705073840857

image-20260705074011747

第三步:安装MariaDB / MySQL 数据库 ​

**MySQL是什么?**最流行的关系型数据库,用来存储网站的数据,比如文章、用户、评论等。

在 CentOS 7.9 中,官方自带的数据库是 MariaDB(MySQL 的亲兄弟,命令与性能完全兼容)。针对教学和常规开发,直接安装 MariaDB 是最快且最不容易出错的选择。

bash
# 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_installation

mysql_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] Y

2.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。

bash
# 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

image-20260705075236291

第五步:配置Nginx支持PHP ​

现在Nginx和PHP都装好了,但它们还不认识对方,需要配置Nginx,让它知道.php文件要转发给PHP-FPM处理。

**排错思路:**如果访问phpinfo.php显示的是源码或者下载文件,说明Nginx没配置好,没有把.php请求转发给PHP。检查location配置对不对,PHP-FPM启动了没有。

bash
# 查看Nginx配置文件
cat /etc/nginx/nginx.conf

理论:vim是Linux下的文本编辑器,按i进入编辑模式,按Esc退出编辑模式,输入:wq保存退出。

修改配置:

直接覆盖默认配置文件,可一键复制执行,无需手动编辑:

bash
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;
    }
}
EOF

6.2 测试配置并重载 ​

bash
# 测试Nginx配置是否正确
nginx -t

# 重启Nginx使配置生效
systemctl restart nginx

2.6 测试PHP是否正常工作(10分钟)

bash
# 创建测试文件
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

# 浏览器访问:http://你的公网IP/info.php

看到PHP信息页面即表示LNMP环境部署成功。

image-20260705080037943

image-20260705080106057

三、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 能统治互联网?(核心优势) ​

  1. 开源与免费(Open Source):基于 GPL 协议完全开源,任何人都可以免费下载,并根据企业需求修改底层源码,没有商业版权的“卡脖子”风险。
  2. 恐怖的插件(Plugins)生态:这是它的核心灵魂。WordPress 官方市场有数万款免费/付费插件。你不需要懂写代码,只要点击“安装插件”,就能给网站加上“中英文切换”、“SEO 优化”、“第三方支付”、“防刷安全防火墙”等大厂级功能。
  3. 海量主题(Themes)热插拔:真正实现了“前后台分离”。后台的数据不用动,在前端换个主题,整个网站的视觉风格和排版瞬间改头换面。
  4. 对开发者极其友好(REST API):现代的 WordPress 自带完善的路由接口,很多全栈工程师(如 Go、Python 开发者)直接把它当成一个现成的 无头 CMS(Headless CMS),只用它的后台管理数据,前端自己用 Vue/React 或微信小程序去调用它的 JSON 接口。

二、WordPress部署实操 ​

第一步:为 WordPress 创建专属数据库与用户 ​

严禁在生产环境直接使用 root 账户连接网站!我们需要为 WordPress 单独开辟一个干净的库和专职的管理账户。

bash
# 1. 登录 MariaDB / MySQL 数据库(输入你之前设置的密码)
mysql -u root -p

# 2. 进入 MySQL 终端后,依次执行以下 SQL 语句(注意每行末尾的分号):
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,我们就直接把源码下载并梳理到该线下。

bash
# 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 html

2.4 设置文件权限(10分钟)

bash
# 【极其重要】下放权限给 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 引导界面完成核心配置 ​

现在,万事俱备。

  1. 打开本地电脑的浏览器,访问你的阿里云公网 IP:http://你的阿里云公网IP/。
  2. 此时屏幕上会弹出 WordPress 亲切的“欢迎使用”安装引导页。点击“现在开始!”。

image-20260705082100129

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

image-20260705082735201

image-20260705083108148

第五步:发布第一篇博文 ​

  1. 登录WordPress后台

  2. 点击"写文章"

  3. 输入标题和内容、上传图片

  4. 点击"发布"

  5. 访问首页查看效果

  6. 更换主题、安装主题/插件

🛡️ 第四步:企业级调优——突破上传与内存限制(防坑加餐) ​

WordPress 跑起来后,学生往往会遇到两个经典报错:

  • “上传的附件文件超过了 php.ini 中 upload_max_filesize 选项限制的额度。”
  • “WordPress 后台在线安装主题/插件时提示需要输入 FTP 凭证。”

带学生现场修改这两处底层环境参数,能极大地体现运维的专业度:

1. 解锁 PHP 上传与执行上限 ​

bash
# 配置文件一般在 /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-fpm

2. 免除 FTP 提示,允许直接热更新 ​

直接在 WordPress 核心配置文件的末尾追加一行代码,告诉系统直接使用本地文件系统:

bash
echo "define('FS_METHOD', 'direct');" >> /usr/share/nginx/html/wp-config.php

​

部署流程梳理 ​

image-20260705085206703

常见错误排查 ​

现象可能原因排查方法
浏览器访问IP打不开安全组/防火墙没开80
Nginx没启动
先ping通不通 → 检查安全组 → 检查防火墙 → systemctl status nginx
访问PHP文件显示源码/下载Nginx没配置PHP解析
PHP-FPM没启动
检查nginx配置里有没有location ~ \.php$ → 看php-fpm状态
访问PHP显示502 Bad GatewayPHP-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分) ​

  1. 成功安装Nginx,能通过公网IP访问到Nginx欢迎页 ✅

  2. 成功安装MySQL,能正常登录,创建wordpress数据库和用户 ✅

  3. 成功安装PHP和PHP-FPM,phpinfo页面能正常显示 ✅

  4. 成功部署WordPress,能正常访问博客首页和后台 ✅

  5. 能发布一篇文章,上传一张图片 ✅

进阶任务(选做,每项加10分) ​

  1. 安装一个好看的WordPress主题,简单配置一下

  2. 安装几个常用插件(比如WP Super Cache缓存插件)

  3. 配置虚拟主机,用不同域名访问不同网站(可以改hosts测试)

  4. 配置HTTPS(可以用自签名证书试试)

  5. 尝试部署另一个PHP应用(比如Typecho、Discuz、phpMyAdmin)

  6. 给网站加个简单的访问统计

挑战任务(大神专属,额外加分) ​

  1. 用Docker方式部署WordPress(如果学过Docker的话)

  2. 配置Nginx反向代理,实现动静分离

  3. 写一个简单的Shell脚本,一键部署LNMP

Day 02 课后任务 ​

  1. 各组继续完善项目,确保基础任务全部完成

  2. 有精力的组挑战进阶任务

  3. 整理今天的操作步骤、遇到的问题和解决方法(答辩素材)

  4. 为明天的PPT准备素材(截图、架构图等)

  5. 预习明天的答辩要求,想想PPT怎么写

安全提醒:

  • 服务器密码不要设置太简单,避免被黑客扫到

  • 不要在服务器上做违法违规的事情

  • 操作要小心,特别是rm命令,删错了找不回来

  • 搞坏了也别怕,可以重置系统盘重来,就当练手了

基于 Vite 强力驱动 | 纯静态轻量托管