记录在 宝塔 Linux 面板 环境下,使用 PM2 部署 Node.js 应用,并通过 Nginx 绑定域名与配置 HTTPS SSL 证书 的完整流程。内容涵盖 Node 环境安装、PM2 进程管理、Nginx 反向代理、域名解析、SSL 证书申请以及常见问题排查,适用于 生产环境部署。

一、环境准备

  • Linux 服务器(CentOS / OpenCloudOS / Rocky / Alma)
  • 已安装宝塔 Linux 面板
  • 已安装 Nginx
  • 已解析域名到服务器公网 IP

二、安装 Node.js(Node 20+)

方式一:宝塔 Node 版本管理(推荐)

宝塔面板 → 软件商店 → Node.js 版本管理 → 安装 Node v20.x LTS

安装路径示例:

Swift
/www/server/nvm/versions/node/v20.10.0

验证:

Shell
node -v
npm -v

三、安装 PM2

1. 设置 npm 国内镜像

Shell
npm config set registry https://registry.npmmirror.com
npm config get registry

2. 全局安装 PM2

Shell
npm install -g pm2

验证:

Shell
pm2 -v

四、PM2 开机自启(必须)

Shell
pm2 startup

按提示执行 systemd 命令后:

Shell
pm2 save

五、部署 Node 项目

1. 上传项目

示例路径:

Shell
/www/wwwroot/api.leviqin.top

安装依赖:

Shell
cd /www/wwwroot/api.leviqin.top
npm install

2. 启动 Node 服务

Shell
pm2 start app.js --name api

常用命令:

Shell
pm2 status
pm2 logs api
pm2 restart api
pm2 stop api
pm2 delete api

3. 确认端口监听

Shell
ss -lntp | grep node

六、Node 监听配置(非常重要)

JavaScript
app.listen(9527, '0.0.0.0', () => {
  console.log('Server running');
});

❌ 不要监听公网 IP
❌ 不要监听域名

七、宝塔配置 Nginx 反向代理

1. 新建网站

宝塔 → 网站 → 添加站点

  • 域名:api.leviqin.top
  • 根目录:任意(Node 不用)

2. 添加反向代理

宝塔 → 网站 → 设置 → 反向代理

  • 目标 URL:http://127.0.0.1:9527
  • 发送域名:$host

八、配置 HTTPS / SSL

宝塔 → 网站 → SSL → Let’s Encrypt
勾选 强制 HTTPS

九、Vue 前端 404 解决(history 模式)

Nginx
location / {
  try_files $uri $uri/ /index.html;
}

十、数据库连接注意事项

线上数据库 host 必须使用:

JavaScript
host: '127.0.0.1'

❌ 不要使用服务器公网 IP

十一、常见问题

1. 关闭终端服务停止?

node app.js
pm2 start app.js

2. PM2 服务 inactive?

只要:

Shell
pm2 status

显示 online 即正常。

3. 接口 500 / 502

Shell
pm2 logs api --err

十二、部署完成检查清单

  • [x] PM2 启动 Node
  • [x] PM2 已 save
  • [x] Nginx 反向代理
  • [x] 域名可访问
  • [x] HTTPS 正常
  • [x] 重启服务器服务仍在线

总结

Node 只负责端口
Nginx 负责域名和 SSL
PM2 负责常驻和重启

这是最稳定、最标准的线上 Node 部署方案。

阅读进度 0%