Python编程:从入门到实践
章节

附录 E 部署故障排除

真正上线之后,排错能力会再次升级

附录 E 把部署后的常见故障单独拎出来,说明上线不是终点,而是另一层问题空间的开始。

章节主张

一旦程序进入真实环境,问题就会从代码逻辑扩展到配置、权限、静态资源和服务协同。

中文释读

很多初学者会误以为部署成功一次就算结束,附录 E 恰恰提醒你:部署后的排错是独立能力。路径、静态文件、数据库配置、权限、依赖包和环境变量,这些都可能在本地没问题、上线出错。能把这些问题逐层排开的人,才真正拥有交付能力。

本章知识路线

  1. 代码完成和项目交付,是两件不同的事
  2. 排错不是意外插曲,而是开发能力本身

关键论点

  • 线上环境会暴露本地从未出现的问题。
  • 部署故障往往来自配置协同而不只是代码本身。
  • 稳定交付要求开发者具备系统级排查能力。

行动清单

  • 上线失败时按配置、依赖、资源、权限的顺序排查。
  • 把部署问题留成可复用清单。
  • 把‘能上线’和‘能稳定维护’区分开看。

源章节深读

附录 E 部署故障排除 成功地部署应⽤程序让⼈很有成就感,在⾸次成功时尤其如此。然 ⽽,部署过程中可能出现很多障碍,⽽且有些障碍难以识别并逾越。 本附录旨在帮助你理解现代部署⽅法,并提供排除部署故障的具体⽅ 法。 如果这⾥提供的额外信息不⾜以帮助你顺利地完成部署过程,请参阅本书 提供的在线资源,其中的 “ 更新 ” 应该能够帮助你成功地完成部署。 E.1 理解部署 在排除部署故障时,对典型的部署原理有清晰认识⼤有裨益。所谓部署 ( deployment ),指的是这样的⼀个过程:将运⾏在本地系统中的项⽬复制 到远程服务器上,使其能够响应互联⽹⽤户发出的请求。相⽐于典型的本 地系统,远程环境有很多重要的不同之处:使⽤的操作系统可能不同,⽽ 且很可能只是物理服务器上众多的虚拟服务器之⼀。 要部署项⽬或将其推送到远程服务器上,需要执⾏如下步骤。 在位于数据中⼼的物理服务器上创建虚拟服务器。 在本地系统和远程服务器之间建⽴关联。 将项⽬的代码复制到远程服务器上。 确定项⽬依赖哪些库,并在远程服务器上安装这些库。 创建数据库并运⾏所有的迁移。 将静态⽂件( CSS 、 JavaScript ⽂件和媒体⽂件)复制到可被⾼效访问 的位置。

E.1 理解部署

E.1 理解部署 在排除部署故障时,对典型的部署原理有清晰认识⼤有裨益。所谓部署 ( deployment ),指的是这样的⼀个过程:将运⾏在本地系统中的项⽬复制 到远程服务器上,使其能够响应互联⽹⽤户发出的请求。相⽐于典型的本 地系统,远程环境有很多重要的不同之处:使⽤的操作系统可能不同,⽽ 且很可能只是物理服务器上众多的虚拟服务器之⼀。 要部署项⽬或将其推送到远程服务器上,需要执⾏如下步骤。 在位于数据中⼼的物理服务器上创建虚拟服务器。

这节解决什么:这一节主要解决《附录 E 部署故障排除》里一个更具体的子问题:E.1 理解部署 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

E.2 故障排除基础

E.2 故障排除基础 有些故障排除步骤随操作系统⽽异,稍后将介绍。我们先来介绍每次排除 部署故障时都应尝试采取的措施。 你能获得的最佳资源是推送过程中⽣成的输出。这种输出可能令⼈望⽽⽣ 畏:在刚接触应⽤程序部署的⼈看来,这种输出既冗⻓⼜显得技术含量很 ⾼。所幸,你不需要全⾯理解这些输出。浏览⽇志输出的⽬的有两个:确 定哪些部署步骤管⽤,以及确定哪些步骤不管⽤。如果能够达成这两个⽬ 的,或许就能够确定该如何调整项⽬或部署过程,让下⼀次推送取得成 功。

这节解决什么:这一节主要解决《附录 E 部署故障排除》里一个更具体的子问题:E.2 故障排除基础 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

E.3 随操作系统而异的故障排除技巧

E.3 随操作系统⽽异的故障排除技巧 我们既可以在任何操作系统上进⾏开发,也可以将项⽬推送到任何远程系 统上。⽤来推送项⽬的⼯具很先进,会在必要时修改项⽬,确保它能够在 远程系统上正确地运⾏。然⽽,可能会出现⼀些与操作系统相关的问题。 在部署到 Platform.sh 上的过程中,安装 Platform.sh CLI 是最有可能出现⿇ 烦的步骤之⼀。

这节解决什么:这一节主要解决《附录 E 部署故障排除》里一个更具体的子问题:E.3 随操作系统而异的故障排除技巧 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

E.4 其他部署方法

E.4 其他部署⽅法 如果对你来说部署到 Platform.sh 上不合适,或者你想尝试不同的⽅法,有 很多托管平台可供选择。在托管到⼀些平台上时,部署过程与第 20 章描述 的类似,但其他平台要求使⽤截然不同的⽅法来执⾏本附录开头描述的步 骤。 对于前⾯使⽤ CLI 执⾏的步骤, Platform.sh 允许使⽤浏览器来执⾏。 如果相较于基于终端的⼯作流程,你更喜欢基于浏览器的界⾯,那么 你可能更愿意使⽤这种⽅法。

这节解决什么:这一节主要解决《附录 E 部署故障排除》里一个更具体的子问题:E.4 其他部署方法 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

辨析题

为什么部署故障排查会让人第一次感到‘软件是系统工程’?

本章图版学习路径

代码完成和项目交付,是两件不同的事

排错不是意外插曲,而是开发能力本身