把 Node 项目部署到云服务器,核心就是五件事:买一台合适的服务器、装好 Node 运行环境、把代码传上去、用进程管理器把服务跑起来、再用 Nginx 做反向代理并配好域名和 HTTPS。 听起来步骤不多,但真正动手时,坑往往集中在端口、权限和进程守护这几个地方,下面按实际操作顺序拆开讲。
先判断:你的 Node 项目适合哪种部署方式
本地运行和云服务器部署 Node 项目有什么区别
很多人在本机 node app.js 跑得挺好,一上服务器就出问题,原因是对运行环境的预期不同,两者的差别可以用一张表说清楚:
| 对比维度 | 本地运行 | 云服务器部署 |
|---|---|---|
| 访问范围 | 基本只有自己能访问 | 公网用户可访问 |
| 运行时长 | 电脑关机就断 | 7×24 小时持续运行 |
| 环境依赖 | 依赖本机 Node 版本 | 环境独立、可复现 |
| 成本结构 | 硬件和电费 | 按月或按年付费 |
| 故障恢复 | 手动重启 | 可配置进程守护和自启 |
行业共识认为,生产环境的 Node 服务不应该用 node app.js 裸跑,而应该交给进程管理器托管,原因很直接:进程一旦崩溃,裸跑不会自动拉起,用户看到的就是 502。
三种常见部署路径怎么选
- 手动部署:SSH 登录服务器,装环境、拉代码、启动进程,适合个人项目、学习练手,理解每一步在做什么。
- Docker 部署:把 Node 版本、依赖、启动命令打包进镜像,适合团队协作和多环境一致性要求高的项目。
- CI/CD 自动化:代码推送到仓库后自动构建、自动发布,适合迭代频繁的项目,但前期配置成本更高。
如果你是第一次部署,建议从手动部署走一遍,再考虑容器化,不然出了问题,连日志在哪看都不知道。
Node 项目部署到云服务器详细步骤
第一步:选服务器和配置
个人项目不必一上来就买高配,Node 本身是单线程事件循环模型,轻量 API 服务对 CPU 要求不高,内存和带宽往往更关键,下面是常见场景的配置参考:
| 项目类型 | 推荐配置 | 费用大致区间 |
|---|---|---|
| 个人博客、练手项目 | 1 核 2G,轻量应用服务器 | 新用户活动价通常几十元到百元出头每月 |
| 小型 API、企业官网 | 2 核 4G | 百元到两三百元每月 |
| 有一定并发或跑数据库 | 4 核 8G 以上 | 按配置和带宽上浮 |
据工信部数据,近年来中小企业上云比例持续提升,云服务器已经成为个人开发者和团队跑 Web 服务的常规选择,买的时候注意两点:选离用户近的地域,比如用户主要在华南就选广州或深圳节点;系统镜像优先选 Ubuntu 22.04 或 Debian 12,社区资料多,装环境顺手。
第二步:连接服务器并安装 Node 环境
用 SSH 登录,命令很直接:
ssh root@你的服务器公网IP
登录后先更新软件源,再装 Node,不建议直接用系统自带的 Node 版本,版本往往偏旧,推荐用 nvm 管理:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install --lts node -v npm -v
--lts 装的是长期支持版本,据 Node.js 官方文档,LTS 版本会获得更长的维护周期,生产环境优先选它,装完后确认 node -v 有输出,再继续下一步。
第三步:上传代码
有两种常用方式,项目在 Git 仓库里,直接克隆:
mkdir -p /var/www && cd /var/www git clone 你的仓库地址 my-app cd my-app npm ci --omit=dev
没有仓库就用 scp 从本地上传:
scp -r ./my-app root@服务器IP:/var/www/
目录建议放在 /var/www 下,权限清晰,后面 Nginx 配置也好对应,注意 .env 这类环境变量文件不要提交到仓库,在服务器上单独创建,数据库密码、密钥都放里面。
第四步:用 PM2 把进程跑起来
npm install -g pm2 pm2 start app.js --name my-node-app pm2 status
更规范的做法是写一个 ecosystem.config.js,把启动入口、实例数、环境变量写进去,再用 pm2 start ecosystem.config.js 启动,PM2 会自动守护进程,崩溃后拉起,还能看日志:
pm2 logs my-node-app
业内专家指出,Node 项目上线后最常见的故障不是代码逻辑,而是进程退出后没人拉起、端口没放行、反向代理配置不一致,PM2 解决的是第一个问题。
第五步:Nginx 反向代理和域名
Node 服务监听 3000 端口,但用户访问的是 80 和 443,中间用 Nginx 转发:
sudo apt install nginx -y
新建配置文件 /etc/nginx/sites-available/my-app:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
软链接到启用目录,检查配置并重载:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
域名在云厂商控制台添加 A 记录,指向服务器公网 IP,解析生效通常需要几分钟到几十分钟。
第六步:安全组、HTTPS 和开机自启
云服务器默认有安全组或防火墙,需要在控制台放行 80 和 443 端口,Node 的 3000 端口不要对公网开放,只让 Nginx 走本机回环访问,更安全。
HTTPS 用 Let’s Encrypt 免费证书即可:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com
最后设置 PM2 开机自启,否则服务器重启后服务不会自己起来:
pm2 startup pm2 save
简米云服务器部署 Node 项目教程里最容易踩的坑
以简米云为例,控制台功能多,新手容易漏掉几处:
- 安全组没放行 80/443:Nginx 装好了、配置也没错,外网就是打不开,先去安全组看规则。
- Node 版本和本地不一致:本地用 20,服务器用 16,某些语法或依赖直接报错,用
nvm install对齐大版本。 - 依赖装成了开发依赖:生产环境用
npm ci --omit=dev,避免把测试工具和构建工具全装上去,既慢又占空间。 - 用 root 跑应用:更稳妥的做法是建一个普通用户跑 Node 进程,降低误操作风险。
- 内存不足:1G 内存的机器跑
npm install或构建时容易卡死,可以临时加 swap,或者升级配置。
Node 项目部署到云服务器要多少钱
费用主要分四块:
- 服务器:轻量应用服务器或 ECS,个人项目新用户首年通常有较大折扣,续费价格会回归正常,买之前看清续费价。
- 域名:常见后缀每年几十元,具体看注册商活动。
- HTTPS 证书:Let’s Encrypt 免费,商业证书按品牌和年限计价。
- 带宽或流量:按固定带宽或按流量计费,访问量小的时候固定带宽更可控。
小项目起步阶段,一年总成本控制在几百元是可行的,真正容易超预算的是带宽和公网流量,图片、视频这类静态资源建议放对象存储,别全压在小服务器上。
Node 项目部署到云服务器后怎么启动和自愈
部署不是一次性动作,上线后要关注服务能不能自己恢复:
pm2 list pm2 restart my-node-app pm2 logs --lines 100
配合 pm2 startup 和 pm2 save,服务器重启后进程会自动拉起,再往前一步,可以加一个简单的健康检查接口,/health,返回 200 就说明服务活着,监控层面,云厂商自带的云监控能看 CPU 和内存,应用层日志用 PM2 的日志文件定期清理,避免磁盘被撑满。
把这几步走完,一个 Node 项目就算真正跑在公网上了:环境对齐、进程守护、反向代理、端口放行、证书配好,缺一项都可能在某个环节卡住。
Node 项目部署到云服务器的常见疑问
部署后外网访问不了怎么办
按顺序排查:先在服务器上 curl http://127.0.0.1:3000,确认 Node 服务本身活着;再 curl http://127.0.0.1,确认 Nginx 转发正常;然后检查云控制台安全组是否放行 80/443;最后确认域名解析是否已经指向正确 IP,多数情况问题出在安全组或 Nginx 的 server_name 写错。
云服务器部署 Node 项目一定要用 Nginx 吗
不是必须,但推荐,Nginx 承担反向代理、静态资源、HTTPS 终止和并发连接管理,Node 只专心处理业务逻辑,直接让 Node 监听 80 端口也能跑,但证书配置、静态文件和负载均衡都要自己处理,维护成本更高。
小项目用宝塔面板部署 Node 项目可以吗
可以,宝塔把环境安装、Nginx 配置和证书申请做成了图形界面,适合不熟悉命令行的用户,代价是对底层细节感知弱,出问题时排查路径更长,如果只是个人项目快速上线,面板能省时间;如果打算长期维护,建议至少手动部署一次,把每一步对应的命令和配置文件搞清楚。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/770104.html





