宝塔面板搭建 Node.js + MongoDB + Redis 环境

这套环境就是最常见的那种后台组合:

Node.js 做服务端,MongoDB 做数据存储,Redis 做缓存或会话。

用宝塔面板来搭,主要是图形化方便,少记一些命令。下面按步骤来。


一、前提条件

先确认几件事:

  1. 服务器系统:CentOS / Ubuntu 都可以(你现在是 Ubuntu 22.04 也没问题)。

  2. 已安装好宝塔面板,并且能正常登录。

  3. 服务器放行了常用端口:22、80、443,面板端口(默认 8888)也能访问。

  4. 有一个域名(可选),后面做 Nginx 反代会方便一些。

如果宝塔已经在跑了,直接往下看就行。


二、在宝塔里安装 Nginx、Node.js、MongoDB、Redis

打开宝塔面板 → 左侧菜单里找 "软件商店"

一般会这样装一圈:

  1. Web 服务:Nginx

    • 在「运行环境」里找到 Nginx,选一个稳定版本安装(不用追最新)。

    • 后面做反向代理、绑定域名用。

  2. Node.js 版本管理或 Node.js 运行环境

    • 在「运行环境」或者「一键部署」里找到 Node.js 相关的东西:

      • 有的面板是 "Node.js" + "PM2 管理器"

      • 有的版本是 "Node 项目管理器"

    • 安装至少一个 LTS 版本(比如 Node 18 LTS)。

  3. MongoDB

    • 软件商店里搜索 MongoDB

    • 安装完成后,它会自动创建服务并设置开机自启。

  4. Redis

    • 同样在软件商店里搜索 Redis

    • 装好之后也是服务方式运行。

装这三个过程中,如果有让你选安装路径、端口,用默认的就行,后面需要再去改。


三、MongoDB 基本配置(只允许本机访问 + 用户密码)

1. 只允许本机访问

为了安全,一般不建议直接把 MongoDB 暴露到公网。

  1. 在宝塔的软件列表里点进 MongoDB

  2. 找到配置文件路径,例如:/etc/mongod.conf 或类似。

  3. 打开配置,找到类似:

    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 项目管理器」,一般流程是:

  1. 打开「Node 项目管理器」。

  2. 新建项目:

    • 选择 Node 版本

    • 填写项目路径 /www/wwwroot/my-node-app

    • 启动文件:app.jsmain.js

    • 监听端口:比如 3000

  3. 启动项目。

没报错就说明 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. 在宝塔里添加站点

  1. 左侧点击「网站」→「添加站点」

  2. 填入你的域名,例如:api.example.com

  3. 选择:

    • 类型:PHP 可选「纯静态」即可(反正只做反代)

    • 根目录:默认给的就行,不重要

  4. 点提交。

2. 配置反向代理到 Node

站点创建好后,在网站列表找到这个站点 → 设置。

可以有两种方式:

方式一:用宝塔的"反向代理"界面
  • 点击「反向代理」

  • 添加反代规则:

    • 目标 URL:http://127.0.0.1:3000
  • 保存即可

方式二:手动改 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 服务。


八、简单的排查思路

环境搭好之后,如果有问题,一般就集中在几类:

  1. 网页打开是 502

    • 看 Node 是否在运行(pm2 list / 宝塔 Node 项目管理器)

    • 端口是否写对(默认 3000,自己有没有改)

  2. Node 连不上 Mongo

    • 确认 Mongo 是否在跑:systemctl status mongod

    • mongod.conf 是否开启了 authorization: enabled

    • 连接串里的 user/pass/db 是否写对

  3. Node 连不上 Redis

    • Redis 是否在跑:systemctl status redis

    • 是否配置了密码,代码里有没有配密码

    • 是否只监听 127.0.0.1(保证 Node 与 Redis 在一台机上)

  4. 服务重启后 Node 不自动启动

    • PM2 有没有执行 pm2 savepm2 startup

    • 如果用宝塔 Node 项目管理器,检查是否勾了"开机自启"


整体下来,用宝塔搭 Node.js + MongoDB + Redis 的思路就是:

  1. 软件商店装好 4 核心组件:Nginx / Node / MongoDB / Redis

  2. Mongo / Redis 限制为本机访问 + 设置密码

  3. Node 项目放到 /www/wwwroot,用 PM2 或面板托管

  4. Nginx 做反向代理,把域名指向 Node 端口

相关推荐
伯明翰java3 小时前
Redis学习笔记-List列表(2)
redis·笔记·学习
a123560mh3 小时前
国产信创操作系统银河麒麟常见软件适配(MongoDB、 Redis、Nginx、Tomcat)
linux·redis·nginx·mongodb·tomcat·kylin
Bug快跑-13 小时前
分布式数据流平台如何重塑未来企业级实时计算体系的全景化变革路径研究
mongodb
Elias不吃糖3 小时前
总结我的小项目里现在用到的Redis
c++·redis·学习
一个处女座的程序猿O(∩_∩)O4 小时前
Spring Boot、Redis、RabbitMQ 在项目中的核心作用详解
spring boot·redis·java-rabbitmq
⑩-5 小时前
缓存穿透,击穿,雪崩
java·redis
clownAdam6 小时前
MongoDB-cdc原理
数据库·mongodb
稚辉君.MCA_P8_Java6 小时前
DeepSeek 使用Kubernetes部署Redisson
大数据·人工智能·redis·后端·kubernetes
玄妙之门6 小时前
项目实战中redis和数据库结合提升缓存效率
数据库·redis·缓存
得物技术7 小时前
一文解析得物自建 Redis 最新技术演进
数据库·redis·云计算