2. 环境准备:Node.js 与 NestJS CLI 安装、MinIO 服务 Docker 部署、Postman/Thunder Client 安装
在开始构建 MinIO 对象存储中间件之前,必须搭建一套完整、可复现的开发环境。本章将依次完成以下四项核心准备工作:Node.js 运行时、NestJS CLI 脚手架、MinIO 对象存储服务(Docker 部署)以及 API 调试工具(Postman / Thunder Client)。
💡 版本一致性提示:本课程所有代码和配置均基于 Node.js 18 LTS、NestJS 10.x、MinIO RELEASE.2024-01 系列。请尽量保持版本一致,避免因大版本差异导致 API 行为异常。
2.1 Node.js 与 npm 安装
Node.js 是 NestJS 的运行基础,npm 是包管理工具。推荐使用 nvm (Node Version Manager) 管理多版本,便于后续切换。
安装步骤(macOS / Linux)
- 安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 重新加载终端配置:
source ~/.bashrc或source ~/.zshrc - 安装 Node.js 18 LTS:
nvm install 18 - 设置为默认版本:
nvm alias default 18 - 验证安装:
node -v(应输出 v18.x.x)npm -v(应输出 9.x.x 或 10.x.x)
Windows 用户
直接访问 nodejs.org 下载 18 LTS 安装包,安装完成后自动包含 npm。建议勾选“Add to PATH”。
| 组件 | 最低版本 | 推荐版本 | 验证命令 |
|---|---|---|---|
| Node.js | 16.x | 18.18.x LTS | node -v |
| npm | 8.x | 9.8.x / 10.x | npm -v |
| nvm(可选) | 0.39.x | 0.39.7 | nvm --version |
⚠️ 常见问题:如果
node -v 显示旧版本,请检查 PATH 环境变量中是否混入了其他 Node.js 安装路径。使用 which node(macOS/Linux)或 where node(Windows)定位实际执行文件。
2.2 NestJS CLI 安装与项目初始化
NestJS CLI 提供 nest new 命令快速生成项目骨架,并内置了模块、控制器、服务等代码生成器。
全局安装 NestJS CLI
npm install -g @nestjs/cli
验证安装
nest --version # 应输出 10.x.x
创建课程项目
nest new nest-minio-course
cd nest-minio-course
CLI 会询问使用哪种包管理器(npm / yarn / pnpm),选择 npm 即可。项目创建完成后,目录结构如下:
nest-minio-course/
├── src/
│ ├── app.controller.ts
│ ├── app.controller.spec.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── test/
├── .eslintrc.js
├── .prettierrc
├── nest-cli.json
├── package.json
├── tsconfig.json
└── tsconfig.build.json
📌 后续章节将在
src/ 下创建 minio/ 模块,并编写中间件逻辑。保持项目结构整洁是架构设计的第一步。
2.3 MinIO 服务 Docker 部署
MinIO 是兼容 Amazon S3 协议的高性能对象存储系统。使用 Docker 单节点部署,适合本地开发和测试。
拉取 MinIO 镜像
docker pull minio/minio:RELEASE.2024-01-16T22-38-06Z
启动 MinIO 容器
docker run -d \
--name minio-server \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=password123 \
-v ~/minio-data:/data \
minio/minio:RELEASE.2024-01-16T22-38-06Z \
server /data --console-address ":9001"
| 参数 | 说明 | 本课程使用值 |
|---|---|---|
-p 9000:9000 |
API 端口(S3 兼容) | 9000 |
-p 9001:9001 |
Web 控制台端口 | 9001 |
MINIO_ROOT_USER |
管理员用户名 | admin |
MINIO_ROOT_PASSWORD |
管理员密码(至少 8 位) | password123 |
-v ~/minio-data:/data |
数据持久化挂载 | ~/minio-data |
验证 MinIO 服务
- 打开浏览器访问
http://localhost:9001,使用admin / password123登录 Web 控制台。 - 在控制台中创建一个名为
nestjs-bucket的存储桶(Bucket),用于后续课程实验。 - 使用命令行测试 API 连通性:
curl http://localhost:9000/minio/health/live,应返回{"status":"alive"}。
🔐 生产环境注意:本课程使用明文密码仅用于本地开发。生产环境请使用 MinIO 的 IAM 策略、TLS 证书和密钥管理服务(KMS)。
2.4 API 调试工具安装
本课程提供两种调试工具选项:Postman(功能全面,适合团队协作)和 Thunder Client(轻量级 VS Code 插件,适合个人开发)。
Postman 安装
- 访问 postman.com/downloads,下载对应操作系统版本。
- 安装后注册/登录账号(免费版即可)。
- 创建集合(Collection)命名为
NestJS-MinIO,用于组织所有 API 请求。
Thunder Client 安装
- 在 VS Code 扩展市场搜索 Thunder Client,点击安装。
- 安装完成后,左侧活动栏出现 Thunder Client 图标。
- 创建环境变量:
BASE_URL = http://localhost:3000,方便后续切换。
| 特性 | Postman | Thunder Client |
|---|---|---|
| 安装方式 | 独立桌面应用 | VS Code 插件 |
| 集合/环境管理 | ✅ 云端同步 | ✅ 本地 JSON |
| 自动化测试 | ✅ 内置 Runner | ⚠️ 需脚本 |
| 团队协作 | ✅ 共享工作区 | ❌ 无原生协作 |
| 本课程推荐 | 团队/教学场景 | 个人快速调试 |
📌 后续章节将使用 Postman 演示 API 请求示例,但所有接口同样兼容 Thunder Client。选择你最顺手的工具即可。
2.5 环境验证清单
完成上述安装后,执行以下命令进行全链路验证:
# 1. Node.js 版本
node -v # v18.18.0
# 2. npm 版本
npm -v # 9.8.1
# 3. NestJS CLI 版本
nest --version # 10.3.0
# 4. Docker 容器状态
docker ps | grep minio # 应显示 minio-server 运行中
# 5. MinIO API 健康检查
curl http://localhost:9000/minio/health/live
# 返回: {"status":"alive"}
# 6. MinIO Web 控制台
# 浏览器打开 http://localhost:9001,登录后能看到存储桶列表