跳转至

开发环境基础

学习目标

学完本章后,学习者应该能够:

  1. 理解开发环境对后端学习的重要性。
  2. 掌握命令行、Git、编辑器、HTTP 调试工具的基本用途。
  3. 能启动一个本地服务,并用工具验证它是否真的可访问。
  4. 理解“本地能跑”和“环境可复现”的差别。

为什么开发环境很重要

后端工程师每天都在和环境打交道:

  • 本地开发环境。
  • 测试环境。
  • 预发环境。
  • 生产环境。
  • CI/CD 构建环境。
  • Docker 容器环境。
  • Kubernetes 集群环境。

很多问题不是代码逻辑错,而是环境不一致:

  • 本地有配置,测试环境没有。
  • 本地数据库版本和线上不同。
  • 本地端口没冲突,服务器上端口被占用。
  • 本地文件路径存在,容器里不存在。
  • 本地时区正确,容器里时区不一致。

所以从第一天开始,就要养成“环境可复现”的习惯。

命令行基础

后端工程师必须能使用命令行完成基本操作。

常见任务:

  • 查看当前目录。
  • 创建、移动、删除文件。
  • 查看环境变量。
  • 启动程序。
  • 查看端口监听。
  • 查看进程。
  • 查看日志。
Get-Location
Get-ChildItem
Get-Content .\README.md
Get-Process
netstat -ano
Invoke-WebRequest http://127.0.0.1:8000/
pwd
ls -la
cat README.md
ps aux
ss -lntp
curl -i http://127.0.0.1:8000/

重点不是记住所有命令,而是知道遇到问题时该查什么。

Git 基础

Git 是后端工程师协作的基础。

必须掌握:

  • git status:查看工作区状态。
  • git diff:查看修改内容。
  • git add:暂存修改。
  • git commit:提交修改。
  • git log:查看历史。
  • git branch:查看分支。
  • git switch:切换分支。
  • git pull:拉取远程更新。
  • git push:推送远程分支。

一个基本工作流:

git status
git diff
git add docs/foundation/index.md
git commit -m "完善计算机基础导论"
git push

在团队中,Git 不只是保存代码,更是记录协作过程。好的提交信息应该说明本次修改解决了什么问题。

编辑器与工程目录

推荐学习者至少熟悉一个主力编辑器,例如 VS Code 或 GoLand。

需要掌握:

  • 打开项目目录。
  • 全局搜索文件。
  • 跳转定义。
  • 查看 Git 变更。
  • 运行终端命令。
  • 格式化代码。
  • 配置 Go 插件。
  • 查看测试结果。

后端项目通常不是单文件脚本,而是一组目录和模块。学习时要尽早习惯从项目结构理解代码。

HTTP 调试工具

后端服务最常见的入口是 HTTP API。调试 HTTP 可以使用:

  • 浏览器。
  • curl
  • Postman。
  • Apifox。
  • HTTPie。
  • IDE 内置 HTTP Client。

例如:

curl -i http://127.0.0.1:8080/health

重点观察:

  • 状态码。
  • 响应头。
  • 响应体。
  • 请求耗时。
  • 错误信息。

Docker 本地环境初识

Docker 可以让学习者用更稳定的方式启动数据库、Redis、消息队列等依赖。

例如启动 PostgreSQL 和 Redis 时,不必在本机手动安装多个服务,而可以使用 Docker Compose 管理。

本阶段不要求深入 Docker 原理,只需要理解:

  • 镜像是运行环境的模板。
  • 容器是镜像运行起来后的实例。
  • 端口映射决定本机如何访问容器服务。
  • volume 用来持久化数据。
  • compose 文件用来描述多个服务。

后续云原生章节会深入 Docker 和 Kubernetes。

必会检查方法

当你启动一个本地后端服务后,不要只看控制台有没有报错,要做完整验证:

  1. 进程是否存在。
  2. 端口是否监听。
  3. HTTP 请求是否返回。
  4. 日志是否正常输出。
  5. 配置是否加载正确。
netstat -ano | findstr :8080
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8080/health
ss -lntp | grep 8080
curl -i http://127.0.0.1:8080/health

常见误区

  • 误区一:控制台显示启动成功,就一定能访问。

端口可能没监听、监听地址可能不对、防火墙可能拦截、服务可能卡在初始化。

  • 误区二:本地装得越多越好。

环境越随意,越难复现。能用 Docker Compose 固化的依赖,尽量固化。

  • 误区三:不会命令行也能做后端。

可以短期写代码,但很难排查真实问题。

实战任务

步骤一:启动当前 MkDocs 项目。

python -m mkdocs serve
python -m mkdocs serve

步骤二:用浏览器访问。

http://127.0.0.1:8000/

步骤三:用命令行验证。

netstat -ano | findstr :8000
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8000/
ss -lntp | grep 8000
curl -i http://127.0.0.1:8000/

步骤四:记录观察结果。

  • 哪个进程监听了 8000 端口?
  • HTTP 状态码是多少?
  • 如果访问失败,你会先检查什么?

面试题

1. 为什么后端工程师必须熟悉命令行?

参考答案

后端服务通常运行在服务器、容器或 CI/CD 环境里,很多操作没有图形界面。命令行可以用来启动服务、查看进程、检查端口、读取日志、验证 HTTP 请求、管理 Git、排查网络和定位环境问题。

熟悉命令行不是为了炫技,而是为了在问题发生时能快速验证事实。例如服务打不开时,可以用命令确认进程是否存在、端口是否监听、HTTP 是否返回,而不是只凭感觉猜。

2. git statusgit diff 分别解决什么问题?

参考答案

git status 用来查看当前工作区和暂存区的整体状态,例如哪些文件被修改、哪些文件未跟踪、哪些修改已经暂存。它回答的是“现在仓库处于什么状态”。

git diff 用来查看具体修改内容。它回答的是“到底改了什么”。提交前通常应该先看 git status 确认范围,再看 git diff 检查内容,避免把无关修改提交进去。

3. 如何确认一个本地服务真的启动成功?

参考答案

不能只看控制台输出“启动成功”。至少要确认进程存在、端口正在监听、监听地址正确、HTTP 请求能返回预期状态码、日志没有明显错误,必要时还要检查配置和依赖是否连接成功。

例如在 Windows 上可以用 netstat -ano | findstr :8080 查看端口,用 Invoke-WebRequest 请求健康检查接口。在 Linux 或 macOS 上可以用 ss -lntpcurl

4. Docker 对本地开发环境有什么价值?

参考答案

Docker 可以把数据库、Redis、消息队列等依赖用容器方式启动,减少本机手动安装和版本不一致的问题。配合 Docker Compose,可以把多个依赖服务写成一份配置,让团队成员用相同方式启动本地环境。

它的核心价值是可复现、易清理、隔离性好。尤其是教学项目中,Docker 能让学习者更快获得一致的实验环境。

5. 本地环境和生产环境不一致可能带来哪些问题?

参考答案

可能导致本地正常、线上失败。例如操作系统不同、数据库版本不同、环境变量缺失、时区不一致、文件路径不同、端口绑定不同、容器资源限制不同、第三方服务地址不同,都可能引发问题。

工程上要通过配置管理、Docker、CI/CD、自动化测试和部署规范来减少环境差异。遇到问题时,也要把“环境差异”作为重要排查方向。