服务器 Node 环境与 PM2 准备
适用人群:准备在云服务器上搭 Node 运行环境并守护进程的开发者与运维。
核心概念
Node 版本
用 nvm 或包管理器安装项目要求的 Node LTS 版本(如 20.x)。版本不匹配是构建/运行报错的常见原因,用项目里的 .nvmrc/engines 对齐版本。
进程守护:PM2 vs systemd
- PM2:Node 生态的进程管理器,命令简单,自带日志、重启、开机自启、集群模式,适合大多数场景。
- systemd:系统级服务管理,无需额外依赖,适合喜欢用系统原生方案的运维。
二选一即可,目的都是让 Node 进程崩溃后自动拉起、服务器重启后自动运行。
操作步骤
步骤 1装 Node
用 nvm 安装项目要求的 LTS 版本,node -v / npm -v 验证。
步骤 2拉代码装依赖
把项目部署到服务器,npm ci 安装依赖(生产用 ci 更稳定)。
步骤 3构建
运行 npm run build 生成生产产物(Next 的 .next / Nuxt 的 .output)。
步骤 4配置守护
用 pm2 start 或写 systemd service 启动应用,并设置开机自启。
步骤 5验证
本机 curl 127.0.0.1:3000 确认应用正常响应,再交给 Nginx 反代。
实际示例
# PM2 守护
npm i -g pm2
pm2 start npm --name myapp -- run start # 或 pm2 start .output/server/index.mjs
pm2 startup && pm2 save # 开机自启 + 保存进程列表
# systemd 方式(/etc/systemd/system/myapp.service)
# ExecStart=/usr/bin/node /var/www/myapp/.output/server/index.mjs
systemctl enable --now myapp
常见错误
- ⚠️Node 版本和项目要求不符,构建或运行报错
- ⚠️只 pm2 start 没执行 pm2 startup && pm2 save,服务器重启后应用没自动起来
- ⚠️生产装依赖用 npm install 而非 npm ci,lockfile 未锁定导致版本漂移
- ⚠️把开发依赖也装进生产、或没设 NODE_ENV=production,性能和体积受影响
对应工具
常见问题
PM2 和 systemd 选哪个?
服务器重启后应用没自动起来?
相关教程
相关文章
网站上线前怎么测试?测试环境、预发布与上线前检查清单
直接把没测过的网站推到线上,很容易上线即翻车:页面报错、链接失效、证书没配好,甚至因为空白页被判备案不合格。正式上线前做一轮测试和逐项检查,能把问题挡在用户之前。本文讲清测试环境怎么搭、备案期间怎么合规地测,以及上线前该核对什么。 为什么要先测 功能验证:注册、表单、支付、接口等关键流程能不能跑通; 展示验证:各页面…
服务器/云厂商迁移怎么做?数据迁移、环境搭建与备案接入同步
换云厂商、升配、或把业务迁到新服务器,是常见的运维动作。迁移做不好容易停机、丢数据,还可能漏掉备案接入的同步。本文按实操顺序梳理服务器迁移的完整流程。 什么时候需要迁移 更换云服务商(如价格、性能、地域考虑),选型对比见 云服务商备案怎么选; 服务器升配或换机型; 机房/地域调整。 迁移往往伴随 IP 变化,是否要重…
备案通过后网站怎么上线?域名解析、服务器绑定与部署实操
很多站长拿到 ICP 备案通过通知后,反而卡在"接下来怎么让网站真正打开"这一步。备案解决的是"能不能上线"的资质问题,真正上线还需要一套运维动作:把域名解析到服务器、在服务器上部署站点、绑定域名、配好 HTTPS,最后验证访问。本文按实操顺序梳理。 上线前提:备案与接入都已就绪 开始部署前先确认两件事:一是备案已通…
更换服务器或IP要不要重新备案?三种情况一次说清
先搞清楚:备案到底绑定了什么 很多人担心"服务器一动,备案就没了",其实备案绑定的是主体 + 域名 + 接入服务商这三者,而不是某一台具体的物理服务器。换句话说: 只要备案主体没变、域名没变、接入服务商没变,多数情况下你只是在同一家服务商内部调整资源,备案号通常保留、无需从零重新备案。 真正会触发备案手续的,是接入服…
备案站点的多环境与配置管理实践
配置是被低估的事故源 复盘线上事故会发现一个规律:相当一部分不是代码写错,而是配置改错——连错了数据库、开关开反了、超时被设成 0、缓存时间多打了个零。代码有 review、有测试、有灰度,配置却常常有人直接改生产、改完立即生效。把配置当成和代码同等重要的变更来管,能省掉很多深夜。 配置与代码分离 遵循十二要素原则:…
官方资料来源