这套环境就是最常见的那种后台组合:
Node.js 做服务端,MongoDB 做数据存储,Redis 做缓存或会话。
用宝塔面板来搭,主要是图形化方便,少记一些命令。下面按步骤来。

一、前提条件
先确认几件事:
-
服务器系统:CentOS / Ubuntu 都可以(你现在是 Ubuntu 22.04 也没问题)。
-
已安装好宝塔面板,并且能正常登录。
-
服务器放行了常用端口:22、80、443,面板端口(默认 8888)也能访问。
-
有一个域名(可选),后面做 Nginx 反代会方便一些。
如果宝塔已经在跑了,直接往下看就行。
二、在宝塔里安装 Nginx、Node.js、MongoDB、Redis
打开宝塔面板 → 左侧菜单里找 "软件商店"。
一般会这样装一圈:
-
Web 服务:Nginx
-
在「运行环境」里找到 Nginx,选一个稳定版本安装(不用追最新)。
-
后面做反向代理、绑定域名用。
-
-
Node.js 版本管理或 Node.js 运行环境
-
在「运行环境」或者「一键部署」里找到 Node.js 相关的东西:
-
有的面板是 "Node.js" + "PM2 管理器"
-
有的版本是 "Node 项目管理器"
-
-
安装至少一个 LTS 版本(比如 Node 18 LTS)。
-
-
MongoDB
-
软件商店里搜索 MongoDB。
-
安装完成后,它会自动创建服务并设置开机自启。
-
-
Redis
-
同样在软件商店里搜索 Redis。
-
装好之后也是服务方式运行。
-
装这三个过程中,如果有让你选安装路径、端口,用默认的就行,后面需要再去改。
三、MongoDB 基本配置(只允许本机访问 + 用户密码)
1. 只允许本机访问
为了安全,一般不建议直接把 MongoDB 暴露到公网。
-
在宝塔的软件列表里点进 MongoDB。
-
找到配置文件路径,例如:
/etc/mongod.conf或类似。 -
打开配置,找到类似:
bindIp: 127.0.0.1
确认这里是 127.0.0.1,不要写 0.0.0.0。
这样 MongoDB 只允许本机访问,Node 跑在同一台机子就够用了。
2. 创建管理员账号
宝塔有的版本带 web 管理界面,有的没有。这里用命令行方式最通用。
SSH 登录服务器,执行:
mongo
进入 Mongo 的 shell 后:
use admin
db.createUser({
user: "app_admin",
pwd: "一个自己记得住的强密码",
roles: [ { role: "root", db: "admin" } ]
})
创建好以后,编辑 mongod.conf,开启认证:
security:
authorization: enabled
改完之后重启 MongoDB:
# 可以用宝塔界面里的"重启服务",也可以命令行
systemctl restart mongod
之后再连接就要带账号密码了。
四、Redis 基本配置(本机访问 + 密码)
Redis 默认有两个主要点需要改:访问范围和密码。
1. 只允许本机访问
Redis 配置一般在 /etc/redis.conf 或 /etc/redis/redis.conf,也可以从宝塔里面打开。
找到这一行:
bind 127.0.0.1
确保它存在,并且不是 0.0.0.0。
2. 设置访问密码
在配置文件里找到:
# requirepass foobared
去掉注释,改成你自己的密码:
requirepass 你的Redis密码
再重启 Redis:
systemctl restart redis
这样就只有本机、并且知道密码的进程才能访问。
五、部署一个 Node.js 项目
1. 把代码放到服务器上
通常做法有两种:
-
用 SFTP / 宝塔「文件」功能,把项目上传到比如
/www/wwwroot/my-node-app -
或直接
git clone到那个目录:cd /www/wwwroot
git clone https://your.repo/my-node-app.git
然后进入项目目录,安装依赖:
cd /www/wwwroot/my-node-app
npm install
# 或者:pnpm i / yarn
2. 用 PM2 或宝塔的 Node 项目管理器
如果软件商店装了 PM2 管理器:
npm install -g pm2
pm2 start app.js --name my-node-app
pm2 save
pm2 startup # 让它开机自启
如果你用的是宝塔自己的「Node 项目管理器」,一般流程是:
-
打开「Node 项目管理器」。
-
新建项目:
-
选择 Node 版本
-
填写项目路径
/www/wwwroot/my-node-app -
启动文件:
app.js或main.js -
监听端口:比如
3000
-
-
启动项目。
没报错就说明 Node 服务已经正常跑起来了。
六、Node.js 连接 MongoDB 和 Redis 示例
假设你刚才建的 Mongo/Redis 都是本机服务。
1. 连接 MongoDB(用 mongoose 举例)
先装依赖:
npm install mongoose
简单示例:
// db/mongo.js
const mongoose = require('mongoose');
const uri = 'mongodb://app_admin:你的密码@127.0.0.1:27017/my_app_db?authSource=admin';
async function connectMongo() {
try {
await mongoose.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB connected');
} catch (err) {
console.error('MongoDB connect error:', err);
}
}
module.exports = {
connectMongo,
};
在入口文件中调用:
const { connectMongo } = require('./db/mongo');
connectMongo();
2. 连接 Redis(用 ioredis 举例)
安装:
npm install ioredis
示例:
// db/redis.js
const Redis = require('ioredis');
const redis = new Redis({
host: '127.0.0.1',
port: 6379,
password: '你的Redis密码',
db: 0,
});
redis.on('connect', () => {
console.log('Redis connected');
});
redis.on('error', (err) => {
console.error('Redis error:', err);
});
module.exports = redis;
使用:
const redis = require('./db/redis');
async function testRedis() {
await redis.set('test_key', 'hello', 'EX', 60);
const v = await redis.get('test_key');
console.log('Redis value:', v);
}
testRedis();
这样 Node → Mongo / Redis 就通了。
七、用 Nginx 做反向代理,把网站挂在域名上
现在 Node 一般在本地端口跑,比如 3000。
我们用 Nginx 把域名转发到这个端口。
1. 在宝塔里添加站点
-
左侧点击「网站」→「添加站点」
-
填入你的域名,例如:
api.example.com -
选择:
-
类型:PHP 可选「纯静态」即可(反正只做反代)
-
根目录:默认给的就行,不重要
-
-
点提交。
2. 配置反向代理到 Node
站点创建好后,在网站列表找到这个站点 → 设置。
可以有两种方式:
方式一:用宝塔的"反向代理"界面
-
点击「反向代理」
-
添加反代规则:
- 目标 URL:
http://127.0.0.1:3000
- 目标 URL:
-
保存即可
方式二:手动改 Nginx 配置
点「配置文件」,在 server 块里大概长这样:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
保存后重载 Nginx。
现在访问你的域名,实际上就会转到 Node 服务。
八、简单的排查思路
环境搭好之后,如果有问题,一般就集中在几类:
-
网页打开是 502
-
看 Node 是否在运行(pm2 list / 宝塔 Node 项目管理器)
-
端口是否写对(默认 3000,自己有没有改)
-
-
Node 连不上 Mongo
-
确认 Mongo 是否在跑:
systemctl status mongod -
mongod.conf是否开启了authorization: enabled -
连接串里的 user/pass/db 是否写对
-
-
Node 连不上 Redis
-
Redis 是否在跑:
systemctl status redis -
是否配置了密码,代码里有没有配密码
-
是否只监听 127.0.0.1(保证 Node 与 Redis 在一台机上)
-
-
服务重启后 Node 不自动启动
-
PM2 有没有执行
pm2 save和pm2 startup -
如果用宝塔 Node 项目管理器,检查是否勾了"开机自启"
-
整体下来,用宝塔搭 Node.js + MongoDB + Redis 的思路就是:
-
软件商店装好 4 核心组件:Nginx / Node / MongoDB / Redis
-
Mongo / Redis 限制为本机访问 + 设置密码
-
Node 项目放到
/www/wwwroot,用 PM2 或面板托管 -
Nginx 做反向代理,把域名指向 Node 端口