Node.js on Heroku 入门:部署、配置、扩展与数据服务

掌握 Node.js 应用在 Heroku 上的完整生命周期:从 git push 部署到水平扩展。本文以 Ursa Major Solar 的报价应用为例,讲解 Heroku 平台的优势(弹性扩展、零基础设施管理、Git 部署)、基于 Git 的逐步部署、Procfile/config vars/依赖/日志的配置、用 Heroku Local 本地开发与测试调试、dyno 的水平/垂直扩展,以及用 add-ons 生态添加 Postgres、Redis、Kafka 等数据服务,构建云原生应用。...

📅 2026/10/5 ✍️ ponybai 🏷️ salesforce, developer, heroku, nodejs, headless

一、部署到 Heroku

slide_2

Heroku 是平台即服务(PaaS),让开发者用简单命令在云端部署、管理、扩展 Web 应用。Ursa Major Solar 的开发者 Wei Leung 要创建一个 Node.js 应用,让潜在客户回答问题后通过邮件收到报价,简化太阳能板报价流程。

学习目标

slide_3

完成本单元后,你将能够:解释 Heroku 为什么适合 Web 应用托管;设置 Heroku 部署的基本工具和账户;部署应用到 Heroku;选择适合安全和数据隐私需求的运行时和区域。

为什么选 Heroku、设置、部署与区域

slide_4

为什么选 Heroku:弹性扩展(自动应对流量峰值)、零基础设施管理、内置 Node.js/Ruby/Python/Java 支持、基于 Git 的部署(git push heroku main)、丰富的插件生态、通过 API 与 Salesforce 集成。

设置:① 创建 Heroku 账户 ② 安装 Heroku CLI ③ 安装 Node.js 和 npm ④ 验证 heroku --version、node --version。

逐步部署:创建 Node.js 应用 → 加 package.json(依赖 + start 脚本)→ git init/add/commit → heroku create → git push heroku main → heroku open。

区域与运行时:Common Runtime(多租户网络,美国/欧洲,简单且成本效益);Private Spaces(私有基础设施,多全球区域,适合企业级高安全合规)。Ursa Major 选择美国 Common Runtime(最合适且成本效益最高)。

二、配置应用

slide_5

配置已部署的应用:理解 Procfile、用 config vars 管理环境变量、处理依赖、利用 Heroku 日志系统。

学习目标(单元二)

slide_6

完成本单元后,你将能够:为 Heroku 部署设置不同的进程类型;用 config vars 高效安全地管理配置;管理依赖;用 Heroku 日志系统和实时日志监控应用问题。

Procfile、配置变量、依赖与日志

slide_7

Procfile:定义进程类型,如 web: npm start(处理 HTTP 流量)、worker: node worker.js(后台作业)。放在项目根目录,Heroku 部署时读取。

Config vars:环境变量,用 heroku config:set KEY=value 设置、process.env.KEY 在代码中访问,把密钥(API key、数据库 URL)隔离在源码外。命名规则:只限字母数字下划线、不能有连字符、不能以 HEROKU_ 开头。

依赖:package.json 的 dependencies/devDependencies,Heroku 用 buildpacks 自动检测 Node.js 并 npm install。

日志:Logplex 聚合 app/system/API/add-on 日志,heroku logs --tail 实时查看、保留 1500 行。

三、本地开发应用

slide_8

设置本地开发环境、管理本地服务器、部署前测试与调试。

学习目标(单元三)

slide_9

完成本单元后,你将能够:建立镜像 Heroku 的本地环境;用 Heroku Local 本地运行应用;实施有效的测试和调试策略。

本地环境设置、服务器管理与测试调试

slide_10

本地环境:安装 Node.js/npm、git clone、npm install、用 .env 文件存本地环境变量(不同于 Heroku 的 config vars,记得加进 .gitignore)。

服务器管理:npm start 启动、nodemon 文件变化自动重启、heroku local web 模拟 Heroku 环境(含 Procfile 和 config vars,本地端口 5001)。

测试调试:console.log 基础调试、node --inspect 调试器 + Chrome DevTools、单元测试(Jest/Mocha/Node TestRunner)、npm test。原则:本地测试一切再 push。

四、扩展应用

slide_11

监控性能、水平扩展、管理 dyno(运行应用的容器实例)。

学习目标(单元四)

slide_12

完成本单元后,你将能够:监控应用性能;为应用选择正确的 dyno;水平/垂直扩展 dyno 以满足变化的需求。

监控性能与扩展应用

slide_13

监控性能:Heroku Dashboard 的 Metrics 标签(吞吐量、响应时间、CPU、内存)、heroku logs --tail、New Relic 等 APM 插件。Ursa Major 发现流量上升、出现大量 408 - Request Timeout(服务器过载),响应时间因 PDF 渲染变慢而激增。

扩展应用:水平扩展(增加 web dyno 数量:heroku ps:scale web=2)、垂直扩展(升级 dyno 类型:Standard-1X → 2X)、两者结合。dyno 类型:Eco/Basic(单 dyno/进程类型)、Standard、Performance。Ursa Major 把 Basic 升级到 Standard-1X 再扩展到 3 个 dyno,并设置吞吐量/响应时间告警。

五、添加数据服务与插件

slide_14

探索 Heroku 的插件生态——用一条命令给应用加数据库、缓存、监控等服务。

学习目标(单元五)

slide_15

完成本单元后,你将能够:描述 Heroku 的插件生态;列举常用插件;为 Heroku 应用安装插件。

插件、数据服务与整合

slide_16

插件(add-ons):Heroku Elements 市场 150+ 插件,heroku addons:create 一条命令安装,自动注入 config vars。类别:数据存储(Postgres/Redis/MongoDB/Kafka)、监控(New Relic/Papertrail)、邮件/短信(SendGrid/Twilio)、搜索(Elasticsearch)、安全、CI/CD。

托管数据服务:Heroku Postgres、Heroku Key-Value Store(Redis)、Apache Kafka。安装:heroku addons:create heroku-redis:mini。

Ursa Major 用 Key-Value Store 存储后台作业请求:web dyno 把报价请求推入队列 → worker dyno 生成 PDF 并发邮件,解决响应慢问题。整合:部署 → 配置 → 本地开发 → 扩展 → 加数据服务 = 完整云原生应用。


文章来源:Trailhead - Introduction to Node.js on Heroku