阿里云部署Node.js项目完整教程(含PM2与域名配置)
用Node.js写的接口服务、网站或全栈应用,怎么部署到云服务器上长期稳定运行?核心就三件事:装对Node版本、用PM2守护进程、用Nginx收口对外。本文以阿里云ECS为例,给出一条完整的Node项目部署路径。
一、需求分析:Node项目对服务器的要求
Node是单线程事件驱动模型,内存占用比Java低,但对并发连接和磁盘IO更敏感:
- 小型API服务、个人全栈项目:2核2G可以跑,但同机部署数据库时偏紧;
- 正式上线的Web应用、带WebSocket长连接的业务:建议2核4G起步,与小程序后端、Java类业务一致;
- 前端构建(npm build)比较吃内存,1G以下机器构建大项目容易报错,2G是底线。
二、服务器配置推荐
| 方案 | 配置 | 参考价(以官网活动页为准) | 适合场景 |
|---|---|---|---|
| ECS e实例 | 2核2G 3M带宽 | 约99元/年 | 练手项目、轻量API |
| ECS 进阶款 | 2核4G | 约199元/年 | 正式项目、前后端同机 |
| 更高配置 | 4核8G起 | 以官网实时信息为准 | 高并发、长连接密集型 |
大陆地域对外提供服务需完成ICP备案,约1到3周;开发联调阶段可先用IP访问。价格以阿里云官网实时信息为准。
三、环境准备:nvm安装与管理Node版本
- SSH登录服务器,安装nvm(Node版本管理工具),之后可随时切换版本;
- 用nvm安装LTS版本Node,例如nvm install 20,并设置默认版本;
- 配置npm镜像加速依赖安装,国内服务器下载速度提升明显;
- 项目上传:代码推到Git仓库后在服务器clone,或本地打包用scp上传,避开node_modules,在服务器重新npm install。
四、用PM2守护进程(关键一步)
直接node app.js启动,SSH一断进程就没了,PM2解决这个问题:
- 全局安装PM2:npm install -g pm2;
- 启动应用:pm2 start app.js --name myapp,或用配置文件管理启动参数与环境变量;
- 常用命令:pm2 list查看状态、pm2 logs myapp看日志、pm2 restart myapp重启;
- 开机自启:执行pm2 startup并pm2 save,服务器重启后应用自动拉起,这是生产环境的标配;
- 集群模式:pm2 start -i max可按CPU核数开多进程,2核机器就能吃到多核红利。
五、Nginx反向代理与域名配置
- 安装Nginx,配置server块,把80、443的请求proxy_pass转发到Node监听的本机端口(如3000);
- WebSocket项目记得加上升级头的代理配置,否则长连接握手会失败;
- 在阿里云域名控制台添加A记录指向服务器公网IP;
- 申请免费SSL证书部署到Nginx,开启HTTPS并强制跳转;
- 安全组只放行80、443、22端口,Node端口不直接暴露公网,安全性和体验都更好。
前后端同机部署的常见组合
不少用户会在一台服务器上同时跑前端页面和Node接口,标准做法是:前端构建产物交给Nginx直接托管,接口路径由Nginx反向代理转发到Node进程。动静分离之后,静态资源不再占用Node的处理能力,整体吞吐明显更好;配合gzip压缩与静态资源缓存头,页面加载速度还能再提一档,一台2核4G服务器就能同时胜任前后端。
六、费用估算
| 项目 | 参考费用 | 说明 |
|---|---|---|
| 云服务器 | 约99元到199元/年 | 2核2G到2核4G,以官网实时信息为准 |
| Node与PM2 | 0元 | 开源软件 |
| SSL证书 | 0元 | 免费证书即可 |
| ICP备案 | 0元 | 大陆地域必须,约1到3周 |
常见问题
问:PM2是什么,为什么必须用? 答:PM2是Node进程管理器,负责守护进程、崩溃重启、开机自启和日志管理,生产环境部署Node的标配工具。
问:Node项目要用多大内存? 答:小型服务2核2G够用;正式项目或前后端、数据库同机部署建议2核4G起步,余量更稳。
问:端口只开了3000,外面访问不了? 答:两处都要查:阿里云安全组是否放行该端口;推荐做法其实是只放行80和443,由Nginx反代Node端口。
问:前端和后端能部署在同一台服务器吗? 答:可以。前端静态文件交给Nginx托管,接口走反向代理到Node,一台2核4G即可同时胜任。
问:代码更新后怎么发布? 答:git pull拉取最新代码,npm install后执行pm2 restart myapp即可,全程几秒完成,不影响配置文件。
问:npm install很慢或报错怎么办? 答:先切换npm镜像源,国内服务器访问官方源速度不理想;依赖报错优先确认Node版本与项目要求一致,用nvm切换到对应版本再安装。
问:Node进程内存不足被杀怎么办? 答:可在PM2配置中调大内存重启阈值,同时排查是否存在内存泄漏;长期高内存占用说明该升级配置或拆分服务了。
问:如何查看项目实时日志? 答:pm2 logs命令可实时滚动查看应用输出,配合pm2 monit能看到每个进程的资源占用,排查问题基本靠这两条命令。
问:可以用Docker部署Node项目吗? 答:完全可以,写好Dockerfile后环境一致性更好;但新手建议先用PM2跑通全流程,熟悉部署链路后再切换容器方案。
问:服务器到期迁移麻烦吗? 答:不麻烦。代码在Git仓库、环境用nvm和PM2重装、数据库导出导入,半小时内可完成迁移;平时把配置文件也纳入版本管理会更省心。
行动建议
Node项目部署路径已经很成熟:nvm管版本、PM2管进程、Nginx管入口。建议先去阿里云官网活动页查看ECS实时价格,先领券再下单,2核4G活动价通常在百元级;备案在开发期同步启动,上线不被卡。价格以阿里云官网实时信息为准,新用户资格通常限首购,想好配置再出手。