附录2
运维部署实训文档
基于阿里云ECS的LNMP环境与WordPress博客部署
| 项目 | 内容 |
|---|---|
| 文档编号 | OPS-LAB-2026-001 |
| 版本号 | V1.0 |
| 适用课程 | 运维工程师实训 / 网站架构部署 |
| 编制人 | [姓名] |
| 实训周期 | [开始日期] - [结束日期] |
| 密级 | 内部教学公开 |
文档变更记录
| 版本 | 变更日期 | 变更内容 | 变更人 |
|---|---|---|---|
| V1.0 | 2026-07-04 | 参照教学大纲完成初稿创建 | [姓名] |
目录
一、项目背景与架构选型
1.1 项目背景
本次实训旨在通过手动部署的方式,在阿里云云服务器ECS上搭建一套生产级别的LNMP环境,并部署全球市场占有率第一的CMS系统(内容管理系统)——WordPress,最终实现博客站点的公网访问。
1.2 核心技术理论
- Web服务工作原理:浏览器(Client)通过HTTP协议发起请求 -> Web服务器(Nginx)接收 -> 动态请求转发给应用服务器(PHP-FPM) -> 应用服务器操作数据库(MySQL)并渲染数据 -> 返回HTML给浏览器。
- 为什么选择LNMP而不是LAMP?
- LNMP(Linux + Nginx + MySQL + PHP):Nginx处理高并发静态资源能力极强,内存占用低,适合高并发访问场景。
- LAMP(Linux + Apache + MySQL + PHP):Apache功能模块丰富,但处理高并发时资源消耗较大。
- 结论:对于云服务器资源有限且追求高效能的情况,LNMP是更优选择。
1.3 架构示意图
用户浏览器 --> 阿里云安全组(80端口) --> Nginx (静态资源直接返回)
--> Nginx (动态请求) --> PHP-FPM (:9000) --> MySQL (数据库读写)二、阿里云ECS服务器申请与配置(实操)
2.1 为什么选择阿里云ECS?
- 高可用性:阿里云提供99.95%的服务可用性承诺(SLA)。
- 弹性伸缩:根据业务负载随时升降配置(CPU/内存)。
- 安全防护:自带DDoS基础防护和安全组(防火墙)功能。
2.2 SSH是什么?
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中实现安全的远程登录和命令执行。我们后续将通过SSH协议远程管理ECS服务器。
2.3 第一步:注册与账号准备
- 新用户免费试用:首次注册用户可领取3个月免费ECS(需实名认证)。
- 学生认证特惠:完成学生认证后享受“学生机”专属折扣(9.9元/月)。
- 计费模式选择:
- 按量付费:按小时计费,随时释放,适合短期实验(实验结束后务必立即释放,避免持续扣费!)。
- 包年包月:提前预付费,适合长期稳定运行的生产项目。
2.4 第二步:创建ECS实例(关键配置清单)
登录阿里云控制台 -> 云服务器ECS -> 创建实例,参考以下配置:
| 配置项 | 推荐规格 | 说明 |
|---|---|---|
| 付费模式 | 按量付费 / 包年包月 | 实训建议按量付费,用完即删 |
| 地域 | 华东1(杭州)/ 华北2(北京) | 选择距离自己最近的地域以降低网络延迟 |
| 实例规格 | 2核(vCPU) 2GiB 内存(ecs.u1-c1m2.large) | 最低配置:1核1GiB(运行LNMP+WP勉强够用) |
| 操作系统 | CentOS 7.9 64位 | 必须与教程版本严格一致 |
| 系统盘 | 40GiB ESSD云盘 | 满足基本系统与网站文件存储 |
| 公网IP | 分配公网IPv4地址 | 勾选“分配公网IPv4地址” |
| 带宽计费 | 按固定带宽 1Mbps | 或“按使用流量”(测试流量较少,更省钱) |
2.5 第三步:配置安全组(非常重要!)
安全组相当于云服务器的虚拟防火墙。创建实例时或创建后,必须在安全组中放行以下端口:
| 协议类型 | 端口范围 | 授权对象(源IP) | 用途说明 |
|---|---|---|---|
| TCP | 22 | 0.0.0.0/0 | SSH远程连接(如只允许自己IP登录,可改为具体IP) |
| TCP | 80 | 0.0.0.0/0 | HTTP网站访问(必须开放,否则外网无法看网站) |
| TCP | 443 | 0.0.0.0/0 | HTTPS加密访问(后续SSL证书配置用) |
注意:如果安全组未放行80端口,即使服务器内部服务正常运行,外网也无法访问网站!
2.6 第四步:远程连接服务器
- 在ECS实例列表找到你的公网IP。
- 打开本地终端(Windows用CMD/PowerShell,Mac/Linux用Terminal)。
- 执行命令:bash
ssh root@你的服务器公网IP - 输入创建实例时设置的root密码,看到
[root@iZbp1xxx ~]#即表示连接成功。
三、Linux操作系统与基础命令(实操)
3.1 Linux操作系统介绍
- Linux是什么:一套开源的、类Unix的操作系统内核,我们使用的CentOS是基于该内核的发行版。
- Linux目录结构详解(FHS标准):
| 目录 | 全称/用途 | 实训重点关注 |
|---|---|---|
| / | 根目录 | 一切文件的起点 |
| /root | 超级管理员的家目录 | 登录后默认所在位置 |
| /etc | 配置文件存放地 | Nginx、PHP、MySQL的配置都在这里 |
| /var | 经常变化的文件(日志、缓存) | 网站日志 /var/log/nginx |
| /usr | 用户程序与数据 | 软件默认安装位置 |
| /usr/share/nginx/html | Nginx默认网站根目录 | 稍后要把WordPress放这里 |
- Linux的设计哲学:“一切皆文件”(硬件、进程、网络都以文件形式存在)+ “小型、单一用途的程序组合完成复杂任务”。
3.2 文件与目录操作命令(核心命令)
| 命令 | 语法示例 | 作用(必会!) |
|---|---|---|
| pwd | pwd | 显示当前所在绝对路径 |
| cd | cd /etc | 切换目录 |
| ls -l | ls -l /home | 列出目录下文件详情 |
| mkdir | mkdir test | 创建目录 |
| touch | touch a.txt | 创建空文件或更新时间戳 |
| cp | cp a.txt b.txt | 复制文件 |
| mv | mv a.txt /tmp/ | 移动文件或重命名 |
| rm -rf | rm -rf ./test | 强制删除(极其危险,慎用!) |
| vim | vim /etc/hosts | 文本编辑器(按 i 编辑,按 ESC 退出编辑,输入 :wq 保存退出) |
3.3 命令学习小技巧
tab键:自动补全命令或路径。history:查看历史命令。命令 --help:查看帮助文档(如ls --help)。
3.4 综合实操练习(课前/课中自测)
请同学们连接服务器后,依次执行以下操作,体验Linux命令:
# 1. 创建实训目录
mkdir /root/lab
# 2. 进入目录
cd /root/lab
# 3. 创建一份服务器信息文件
echo "Server IP: 你的IP" > server_info.txt
# 4. 查看文件内容
cat server_info.txt
# 5. 复制文件到上级目录
cp server_info.txt ../
# 6. 查看当前目录大小
du -sh .四、LNMP环境部署(实操)
4.1 LNMP架构理论回顾
LNMP是一组开源软件的组合,用于提供动态网站服务。数据流:Nginx(入口) -> PHP-FPM(处理程序逻辑) -> MySQL(存储数据)。
4.2 实操第一步:更新系统软件包
保持系统软件包与安全补丁为最新状态:
yum update -y4.3 实操第二步:安装Nginx
CentOS 7.9默认YUM源不含Nginx,需添加官方源:
# 添加Nginx官方YUM源
rpm -Uvh https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装Nginx
yum install -y nginx
# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
# 验证安装
nginx -v4.4 实操第三步:安装MariaDB / MySQL数据库
由于MySQL被Oracle收购后的商业限制,CentOS默认源使用兼容的MariaDB(完全兼容MySQL语法)。本次实训选用MariaDB(更轻量、开源)。
# 安装MariaDB服务端和客户端
yum install -y mariadb-server mariadb
# 启动并设置开机自启
systemctl start mariadb
systemctl enable mariadb
# 执行安全初始化脚本(设置root密码、删除匿名用户、禁止远程root登录)
mysql_secure_installation按提示操作:输入当前密码(初次为空直接回车) -> 设置root密码(牢记!) -> 一路输入
Y确认删除匿名用户、禁止远程登录、删除测试库、重新加载权限。
4.5 实操第四步:安装PHP(7.4版本)
CentOS 7.9默认PHP版本为5.4,太老,需更换Remi仓库获取PHP 7.4。
# 安装EPEL源和Remi源
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 启用PHP 7.4仓库并安装(包含WordPress所需全部扩展)
yum install -y --enablerepo=remi-php74 php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-json php-zip php-curl
# 启动PHP-FPM并设置开机自启
systemctl start php-fpm
systemctl enable php-fpm
# 验证版本
php -v4.6 实操第五步:配置Nginx支持PHP
编辑Nginx站点配置文件:
vim /etc/nginx/conf.d/blog.conf粘贴以下内容(将your_server_ip换成你的真实公网IP):
server {
listen 80;
server_name your_server_ip; # 如果有域名,改为域名
root /usr/share/nginx/html;
index index.php index.html index.htm;
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;
}
}保存退出(:wq)。
4.7 实操第六步:测试配置并重载
# 检查Nginx配置语法是否有误
nginx -t
# 重载Nginx使配置生效
systemctl reload nginx
# 创建PHP探针文件测试解析是否正常
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php此时在浏览器访问 http://你的IP/info.php,看到PHP扩展信息页面即为LNMP环境搭建成功!
五、WordPress安装与配置(实操)
5.1 全球第一CMS:WordPress介绍
- 江湖地位:全球互联网中超过 40% 的网站由WordPress驱动(市占率第一)。
- 底层技术架构:经典的LNMP/LAMP栈(PHP + MySQL)。
- 核心优势:
- 生态无敌:拥有超过6万个插件和数万款主题,几乎能实现任何功能(电商、论坛、企业站)。
- 上手极简:无需懂代码,后台可视化编辑,拖拖拽拽即可发布内容。
- 持续迭代:全球开发者社区活跃,安全更新频繁。
5.2 WordPress部署实操第一步:创建专属数据库与用户
# 登录MySQL命令行
mysql -u root -p执行以下SQL命令:
-- 创建数据库(名字任意,但记录好)
CREATE DATABASE wordpress;
-- 创建专用用户(密码请设置复杂一点,不要用弱口令)
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YourStrongP@ssw0rd';
-- 赋予该用户对wordpress数据库的全部权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
-- 刷新权限表
FLUSH PRIVILEGES;
-- 退出
EXIT;5.3 第二步:下载并解压WordPress源码包
# 进入网站根目录
cd /usr/share/nginx/html
# 下载最新中文版WordPress
wget https://cn.wordpress.org/latest-zh_CN.zip
# 解压(如果没有unzip,先装一下:yum install -y unzip)
unzip latest-zh_CN.zip
# 将wordpress目录下的所有文件移动到当前根目录
mv wordpress/* ./
rm -rf wordpress latest-zh_CN.zip
# 修改文件权限,使Nginx用户有读写权限(用于安装插件/主题)
chown -R nginx:nginx /usr/share/nginx/html
chmod -R 755 /usr/share/nginx/html5.4 第三步:通过Web引导界面完成核心配置
- 打开浏览器,访问
http://你的服务器公网IP。 - 选择安装语言(简体中文)。
- 点击“现在就开始!”。
- 填入刚才在数据库中创建的信息:
- 数据库名:
wordpress - 用户名:
wpuser - 密码:
YourStrongP@ssw0rd - 数据库主机:
localhost - 表前缀:
wp_(保持默认)
- 数据库名:
- 点击“提交” -> “运行安装”。
- 填入站点信息:
- 站点标题:
我的实训博客 - 用户名:
admin(或自定义) - 密码:自动生成(务必复制保存!或改为复杂密码)
- 电子邮箱:填入自己的邮箱
- 站点标题:
- 点击“安装WordPress”,成功后自动跳转到后台登录界面。
5.5 第四步:登录后台并发布第一篇博文
- 使用刚才设置的管理员账号密码登录后台(
http://IP/wp-admin)。 - 在左侧菜单点击“文章” -> “写文章”。
- 输入标题(如“Hello LNMP!”)和内容(“这是我的第一个云上博客”)。
- 点击右侧“发布”按钮。
- 访问
http://你的IP查看首页,博文已经显示!
5.6 第五步(企业级调优):突破上传与内存限制(防坑加餐)
WordPress默认上传文件大小限制为2MB,且安装插件时可能提示需要FTP信息。需要进行以下优化:
1. 修改PHP上传与执行上限
vim /etc/php.ini找到以下配置项并修改(可用 /关键词 快速搜索):
upload_max_filesize = 50M
post_max_size = 50M
memory_limit = 128M
max_execution_time = 300保存退出,重启PHP-FPM使生效:systemctl restart php-fpm。
2. 免除FTP提示,允许直接热更新 编辑WordPress配置文件:
vim /usr/share/nginx/html/wp-config.php在 /* 好了,请不要再继续编辑。... */ 这一行之前,插入以下代码:
define('FS_METHOD', 'direct');保存后,再去后台安装主题/插件时,便不再需要FTP账户。
六、部署流程梳理与分组实操
6.1 整体部署流程脑图梳理
申请ECS并配置安全组
|
SSH登录服务器
|
更新系统(YUM Update)
|
安装Nginx + 启动
|
安装MariaDB + 安全初始化
|
安装PHP 7.4 + PHP-FPM + 扩展
|
配置Nginx虚拟主机(blog.conf) + 重载
|
创建WordPress数据库及专用用户
|
下载并解压WordPress源码到根目录
|
浏览器访问IP -> 填写数据库信息 -> 完成安装
|
后台配置主题/插件 -> 发布博文 -> 公网验证成功6.2 分组实操安排
- 分组形式:2-3人一组(小组内分工:一人负责ECS申请与安全组配置,一人负责命令行部署,一人负责WordPress配置与文档记录)。
- 实践任务要求:
- 每人/每组必须独立完成从ECS申请到博客发布的完整流程。
- 记录操作过程中遇到的所有报错信息及解决办法。
- 在博客上发布一篇不低于200字的实训心得文章。
6.3 课后作业
- 命令强化:使用
mkdir、touch、cp、mv、rm在自己家目录下模拟创建/project/{css,js,images}目录结构。 - 理论思考:简述当用户在浏览器输入
http://你的IP并按下回车后,数据包在LNMP架构中的流转过程。 - 扩展挑战:尝试给博客更换一个免费主题。
七、常见问题排查思路
| 问题现象 | 可能原因 | 排查与解决方法 |
|---|---|---|
| 浏览器无法访问IP,页面空白/超时 | 阿里云安全组未放行80端口 | 去ECS控制台安全组规则中添加“入方向”80端口 |
| 浏览器显示 Nginx 403 Forbidden | 网站根目录没有index文件;或权限不足 | chown -R nginx:nginx /usr/share/nginx/html |
| 浏览器显示 Nginx 404 Not Found | Nginx配置中 root 路径写错 | 检查 /etc/nginx/conf.d/blog.conf 中的 root 路径是否正确 |
| 访问.php文件显示源码(下载文件) | Nginx未配置PHP转发,或PHP-FPM未启动 | 检查blog.conf中是否有 location ~ \.php$;执行 systemctl status php-fpm |
| WordPress安装提示“连接数据库错误” | 数据库名/用户/密码写错;或MariaDB未启动 | 核对wp-config.php;systemctl status mariadb;用命令行测试登录 mysql -u wpuser -p |
| 上传主题/插件提示“需要FTP凭证” | 文件目录权限不属于Nginx用户,或未配置FS_METHOD | 执行 chown -R nginx:nginx /html;或在wp-config.php添加 define('FS_METHOD','direct'); |
| 上传图片提示“超出最大上传大小” | PHP的 upload_max_filesize 限制 | 修改 /etc/php.ini 中上述参数,重启php-fpm |
文档结束
提交说明:请同学们将本文档中的
[姓名]、[日期]替换为实际内容,并在文末附上关键步骤的操作截图(如:ECS控制台实例截图、SSH连接成功截图、phpinfo()页面截图、博客前台发布成功截图),作为本次实训的最终交付物。