在服务器上同时运行多个Node.js项目时,合理的路径管理是保障项目稳定运行的基础,宝塔面板提供了从目录创建到进程管理的全流程工具,可快速实现多项目的路径隔离与配置。

一、前期项目路径规划
首先需要在服务器上为每个Node.js项目分配独立的目录,避免文件混杂。建议采用统一的目录结构,例如将所有Node.js项目放在/www/wwwroot/node_projects目录下,每个项目单独建文件夹:
- 项目A路径:
/www/wwwroot/node_projects/project_a - 项目B路径:
/www/wwwroot/node_projects/project_b - 项目C路径:
/www/wwwroot/node_projects/project_c
可以在宝塔面板的文件模块中直接创建上述目录,同时为每个目录设置对应的权限,避免权限不足导致的启动失败问题。
二、配置独立的Node.js版本
不同Node.js项目可能依赖不同的Node.js版本,宝塔面板支持安装多个Node.js版本并分配给不同项目:
- 进入宝塔面板的软件商店,搜索Node.js,安装项目需要的多个版本,例如Node.js 16、Node.js 18等。
- 进入网站模块,点击添加站点,域名可以填写服务器IP加端口,根目录选择对应项目的路径,比如项目A选择
/www/wwwroot/node_projects/project_a。 - 在站点设置中找到Node.js版本选项,选择该项目对应的Node.js版本,保存后该项目的运行环境就会绑定到指定版本,避免版本冲突。
三、使用PM2管理项目进程与路径
PM2是Node.js项目的常用进程管理工具,宝塔面板内置了PM2插件,可直接通过可视化界面管理多项目的启动、停止和路径配置:
1. 安装PM2插件
在宝塔面板的软件商店中搜索PM2,点击安装,安装完成后进入PM2管理界面。
2. 添加项目配置
点击PM2界面的添加项目,填写以下信息:
| 配置项 | 说明 |
|---|---|
| 项目名称 | 自定义,例如project_a、project_b,用于区分不同项目 |
| 项目路径 | 填写对应项目的绝对路径,例如/www/wwwroot/node_projects/project_a |
| 启动文件 | 填写项目的入口文件,通常是app.js或者server.js,如果项目使用npm脚本启动,可以填写npm,启动参数填写start |
| 运行端口 | 填写该项目使用的端口,不同项目需要分配不同端口,避免端口冲突 |
3. 启动项目并验证路径
配置完成后点击提交,PM2会自动启动项目,在PM2列表中可以看到项目的运行状态、CPU和内存占用情况。如果需要修改项目路径,只需要停止项目后编辑配置,修改项目路径字段即可。
可以通过以下代码验证项目是否正常监听对应路径和端口:
// 项目入口文件示例 app.js
const express = require('express');
const app = express();
const port = 3001; // 对应PM2中配置的项目A端口
// 验证项目路径是否正确,返回当前项目的根目录
app.get('/path', (req, res) => {
res.send(`当前项目根路径:${process.cwd()}`);
});
app.listen(port, () => {
console.log(`项目运行在 http://127.0.0.1:${port}`);
});
四、配置反向代理映射路径
如果需要让多个项目通过不同的路径访问,而不是不同的端口,可以通过宝塔面板的反向代理功能实现:
- 进入对应站点的设置,选择反向代理,点击添加反向代理。
- 代理名称自定义,代理目录填写想要访问的路径,例如
/project_a,目标URL填写http://127.0.0.1:3001(即项目A的端口地址)。 - 保存后,访问
http://服务器IP/project_a就可以访问到项目A的内容,同理可以为项目B配置/project_b路径,映射到项目B的端口,实现多项目同域名不同路径的访问。
五、常见问题排查
如果项目启动失败,首先检查PM2中配置的项目路径是否正确,是否为绝对路径,然后检查项目目录下是否存在对应的启动文件,最后查看PM2的错误日志,定位路径相关的问题。
如果需要迁移项目,只需要将整个项目目录复制到新的路径,在PM2中修改项目路径配置,重新启动即可,无需修改项目内部的代码路径,大幅降低了多项目管理的运维成本。