使用VPS运营WordPress时,会遇到Docker、nginx、PHP与MySQL等名称。有时它们都被称为「服务器」,但角色不同。
旅宿主人不需要记住指令。然而,若知道各组件的工作,故障时较容易说明「整个网站停止」「只能看到图片」或「出现数据库连接错误」。
先看整体流程。
住客浏览器 → nginx → 以PHP执行WordPress → 从MySQL取得文章与设置 → 将HTML返回浏览器
使用Docker的配置,会分开执行各组件,再统一管理。
以旅馆比喻
| 技术 | 旅馆比喻 | 主要角色 |
|---|---|---|
| Docker | 分开各负责人的作业区与运营台账 | 在隔离环境,以可重现方式执行软件 |
| nginx | 入口与柜台 | 受理URL、分派、图片传送与HTTPS |
| PHP | 组合介绍信息的人员 | 执行WordPress程序,制作页面 |
| WordPress | 旅宿介绍作业 | 使用文章、主题与插件决定内容 |
| MySQL | 住宿台账与数据库 | 保存与搜索文章、设置、用户等 |
比喻只是理解的入口。实际配置也可能使用Apache、MariaDB、CDN或缓存等其他组件。
页面显示前的流程
住客开启客房页面时,一般流程如下。
- 浏览器访问域名URL
- DNS指出连接目标服务器
- nginx受理HTTPS连接
- 直接返回图片等,或将WordPress处理交给PHP
- PHP执行WordPress
- WordPress向MySQL查询文章与设置
- PHP组合HTML
- nginx将结果返回浏览器
- 浏览器显示页面
一个画面背后有多个组件运作,因此即使「WordPress已是最新版本」,OS、PHP或数据库有问题,仍可能无法显示。
Docker的角色
Docker官方资料将容器描述为在主机上隔离执行的进程。有些配置会将WordPress、nginx、PHP与数据库分为不同容器。
Docker能带来什么
- 将软件与必要文件视为一个整体处理
- 较容易减少开发、测试与正式环境的配置差异
- 较容易逐一启动、停止与更新组件
- 较容易将配置记录于文件并重现
Docker不会自动代办的事项
- OS与Docker本身更新
- 选择与更新安全镜像
- 保护密码与秘密信息
- 数据库备份
- 磁盘容量与记录管理
- 故障监控
- WordPress更新后的预订确认
即使容器可删除后重新建立,若弄错数据保存位置,仍可能遗失文章或图片。有Docker不代表不需要备份。
nginx的角色
nginx官方初学者资料说明静态文件传送、代理,以及通过FastCGI将请求分派给PHP等。
WordPress配置中的主要工作如下。
- 接收HTTP与HTTPS访问
- 依域名选择目标网站
- 返回图片、CSS与JavaScript等
- 将需PHP处理的访问交给PHP-FPM
- 设置大小与时间等限制
- 使用TLS证书加密通信
- 记录访问与错误记录
nginx出问题时的例子
- 无法连接整个网站
- 502、504等错误
- 出现HTTPS警告或显示其他网站
- 无法上传大型图片
- 只有特定URL出现404
- 重新导向不断循环
修改设置前,先检查语法并备份;反映后确认所有域名。
PHP的角色
PHP官方手册说明,PHP是在服务器端执行、将生成的HTML传给浏览器的语言。WordPress核心与许多主题、插件都以PHP执行。
PHP工作例子如下。
- 依URL进行WordPress处理
- 从MySQL取得文章与设置
- 使用主题生成HTML
- 处理表单输入
- 执行插件功能
- 调用电子邮件寄送处理
PHP出问题时的例子
- 显示「严重错误」
- 出现白画面
- 出现502错误
- 只有管理画面无法运作
- 只有特定插件功能失败
- 内存不足或处理逾时
更新PHP后,旧主题与插件可能不支持。不要同时叠加WordPress更新与PHP修改,先在测试环境确认。
WordPress的角色
WordPress是以PHP执行的Web应用程序。
- 管理文章与固定页面
- 以主题决定外观
- 通过插件新增SEO、表单、预订等
- 管理管理员与编辑者权限
- 将内容保存到MySQL
即使只考虑WordPress备份,也需同时有文件与数据库。详细内容请阅读WordPress更新前的备份与还原。
MySQL的角色
MySQL官方资料将MySQL描述为支持多位用户的SQL数据库服务器。
WordPress主要保存以下内容。
- 文章、固定页面、草稿与修订记录
- 用户与权限
- 网站URL与各种设置
- 留言
- 菜单与小工具
- 插件建立的资料表与设置
图片本身通常以文件保存,图片标题与URL等也会保存到数据库。因此,文件与数据库的时间点不一致,就可能发生数据不一致。
MySQL出问题时的例子
- 「建立数据库连接时发生错误」
- 无法保存文章与设置
- 页面显示极慢
- 磁盘不足,无法写入
- 只有数据库反复重新启动
不要将MySQL直接公开到互联网,应配置为只有WordPress等必要连接来源可使用。
容器与数据保存位置
Docker配置的重要事项之一,是区分容器与持久数据。
- 容器:可重新建立的执行环境
- 镜像:建立容器的设计来源
- 数据卷与挂载:需保留的文章图片、DB等数据
- Compose等配置文件:各组件如何连接
若设计为数据只放在容器内,重新建立时可能遗失。请让管理员能说明目前WordPress图片、MySQL数据、设置与证书保存在哪里。
更新需区分层级
一次更新全部,便无法找出原因。
- 记录目前配置与版本
- 备份文件、DB与配置文件
- 在测试环境更新一个层级
- 确认记录与启动状态
- 确认WordPress显示与管理画面
- 确认预订、表单与电子邮件
- 在正式环境只更新一个层级
- 进行同样确认
不要在同一天集中进行OS、Docker、nginx、PHP、MySQL与WordPress的重大更新。
故障时的查看顺序
旅宿主人应记录症状,而非指令。
| 症状 | 可检查的候选层级 |
|---|---|
| 无法连接整个域名 | DNS、VPS、网络、nginx |
| 只能看到图片,没有正文 | PHP、WordPress、MySQL |
| 502错误 | nginx至PHP等的连接 |
| DB连接错误 | MySQL、登录凭据、容量、网络 |
| 只有管理画面出现严重错误 | PHP、主题、插件 |
| 只有询问无法送达 | WordPress、PHP、邮件路径 |
| 只有预订连结无法开启 | WordPress内容、外部预订服务 |
请记录URL、发生时间、画面、刚才的变更,以及是否所有人都遇到。截图不要包含秘密信息或顾客资料。
最基本的监控
- VPS已启动
- 可通过HTTPS连接nginx
- PHP有回应
- 可建立必要的MySQL连接
- 磁盘容量有余裕
- TLS证书在有效期内
- 备份成功
- 首页与预订路径正常
- 询问邮件送达
即使容器显示「执行中」,应用程序也未必正常。也请从外部确认实际页面。
向管理员提出的问题
- 是否使用Docker,配置文件在哪里
- nginx、PHP与MySQL目前版本为何,由谁负责更新
- WordPress图片与DB在哪里持久保存
- 秘密信息在哪里安全管理
- 由谁确认记录与磁盘容量
- 备份是否包含配置文件、图片与DB
- 其中一个容器停止时,是否会通知
- 合约结束时,如何交付配置与数据
答案不需包含秘密值,只记录所在位置、方式与负责人。
请AI解释配置的提示词
请向IT初学者解释旅宿的WordPress服务器配置。
先不要连接、更新、重新启动或修改设置。
请根据可只读取得的配置资料,整理以下事项。
- 住客的访问如何成为显示页面
- Docker、nginx、PHP、WordPress与MySQL的角色
- 各组件持久数据与设置保存位置的类型
- 各组件停止时可见的症状
- 更新、监控与备份负责人
- 不明事项与向管理公司提出的问题
不要显示密码、私钥、环境变量的值或顾客信息。
不要将推测写成事实,请标记「尚未确认」。
总结
- nginx是Web入口,负责分派
- PHP执行WordPress,制作HTML
- MySQL保存文章、设置等
- Docker让组件较易隔离与重现,但不代办维护
- 在同一时间点备份WordPress图片与DB
- 不只监控容器启动,也监控公开页面与预订路径
- 逐层更新,由人员确认营业功能
各项管理由谁负责,可阅读VPS运营WordPress的责任范围。
参考资料
※实际配置也可能使用Apache、MariaDB、CDN、缓存或代管DB等。请确认管理员的配置资料。

