如何在Heroku的两个免费dynos上运行Node.js Web服务器?
如何在Heroku免费版上用两个dynos部署你的Express应用
嘿,我明白你想利用免费版的两个dynos来部署你的简单Web服务器,官方文档提集群可能让你有点困惑——其实免费版的dynos是用来扩展现有的web进程,不是付费级别的集群方案,操作很简单,我一步步教你:
1. 确认你的基础配置没问题
先检查你现有的代码和Procfile:
- 你的Express代码完全符合Heroku要求,监听
process.env.PORT是正确的做法:
var express = require('express') var app = express() app.get('/', function (req, res) { res.send(`Hello World`) }) app.listen(process.env.PORT)
- Procfile的配置也没问题,准确指定了web进程的启动命令:
web: node web.js
2. 用Heroku CLI缩放dyno数量
打开终端,先确保你已经登录Heroku CLI(没登录的话先执行heroku login完成认证),然后进入你的项目目录,执行以下命令:
heroku ps:scale web=2
这个命令会把你的web进程数量从默认的1个调整为2个,刚好用上免费版允许的最大dynos额度。
3. 验证部署结果
执行heroku ps命令,你会看到类似这样的输出,这就说明两个dynos已经正常运行了:
=== web (Free): node web.js web.1: up 2024/05/20 10:30:00 (~ 5m ago) web.2: up 2024/05/20 10:30:05 (~ 5m ago)
一些实用注意事项
- 免费额度限制:Heroku每个账户每月有550小时的免费dyno运行时间,如果你开了2个dynos,总运行时间会按两个进程计算(相当于每个dyno最多能运行275小时/月),超过额度后dynos会自动休眠,直到下月额度重置。
- 休眠机制:免费dynos如果30分钟没有外部访问,会进入休眠状态,下次访问需要几秒唤醒。不过两个dynos的话,通常不会同时休眠,能小幅提升可用性,但毕竟是免费服务,不要指望生产级别的稳定性。
内容的提问来源于stack exchange,提问作者mage




