Docker、nginx、PHP与MySQL的角色:旅宿主人的WordPress服务器入门

住客的访问经nginx、PHP与WordPress、MySQL成为网页,Docker整理各服务,由人员管理的插画 WordPress 入门

使用VPS运营WordPress时,会遇到Docker、nginx、PHP与MySQL等名称。有时它们都被称为「服务器」,但角色不同。

旅宿主人不需要记住指令。然而,若知道各组件的工作,故障时较容易说明「整个网站停止」「只能看到图片」或「出现数据库连接错误」。

先看整体流程。

住客浏览器 → nginx → 以PHP执行WordPress → 从MySQL取得文章与设置 → 将HTML返回浏览器

使用Docker的配置,会分开执行各组件,再统一管理。

以旅馆比喻

技术 旅馆比喻 主要角色
Docker 分开各负责人的作业区与运营台账 在隔离环境,以可重现方式执行软件
nginx 入口与柜台 受理URL、分派、图片传送与HTTPS
PHP 组合介绍信息的人员 执行WordPress程序,制作页面
WordPress 旅宿介绍作业 使用文章、主题与插件决定内容
MySQL 住宿台账与数据库 保存与搜索文章、设置、用户等

比喻只是理解的入口。实际配置也可能使用Apache、MariaDB、CDN或缓存等其他组件。

页面显示前的流程

住客开启客房页面时,一般流程如下。

  1. 浏览器访问域名URL
  2. DNS指出连接目标服务器
  3. nginx受理HTTPS连接
  4. 直接返回图片等,或将WordPress处理交给PHP
  5. PHP执行WordPress
  6. WordPress向MySQL查询文章与设置
  7. PHP组合HTML
  8. nginx将结果返回浏览器
  9. 浏览器显示页面

一个画面背后有多个组件运作,因此即使「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数据、设置与证书保存在哪里。

更新需区分层级

一次更新全部,便无法找出原因。

  1. 记录目前配置与版本
  2. 备份文件、DB与配置文件
  3. 在测试环境更新一个层级
  4. 确认记录与启动状态
  5. 确认WordPress显示与管理画面
  6. 确认预订、表单与电子邮件
  7. 在正式环境只更新一个层级
  8. 进行同样确认

不要在同一天集中进行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等。请确认管理员的配置资料。

已复制标题与网址