Mix-Space后端Core使用远程数据库

2024 年 11 月 22 日 星期五(已编辑)
/ , ,
48
1
AI 生成的摘要
本文介绍了如何为Mix Space Core在服务器A上配置MongoDB和Redis数据库,并在服务器B上进行部署。对于MongoDB,建议不要使用默认的root用户,而是为mx-space数据库创建一个新用户,以避免连接问题。文章还提到Redis与MongoDB可以部署在同一台服务器上,但应注意RDB持久化时间的设置。最后,提供了一个docker-compose.yml文件的配置示例,并建议参考官方文档以获取更详细的参数说明。
这篇文章上次修改于 2024 年 11 月 22 日 星期五,可能部分内容已经不适用,如有疑问可询问作者。

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

Mix-Space后端Core使用远程数据库

文章适用于:你的Mix-Space后端Core使用远程MongoDb / Redis 数据库,或者需要为MongoDB / Redis 配置密码,可以参考此篇

如果没有特别需要就不用瞎折腾了捏

我的环境

  • 服务器A:部署MongoDB和Redis
  • 服务器B:部署Mix Space Core

MongoDB 配置

我使用1Panel商店安装的,默认创建 root 用户;mx-space需要连接mx-space数据库,root用户是无法直接使用的,我选择为mx-space数据库新建一个用户。

  1. 使用root用户连接MongoDB
mongosh --host <host> --port <port> -u <admin_user> -p <admin_password> --authenticationDatabase admin
# 我是在MongoDB容器内执行,因此不需要--host , --port
  1. 切换到mx-space数据库
use mx-space
  1. 为mx-space数据库创建用户
db.createUser({
  user: "UserName",           // 用户名
  pwd: "UserPassword",      // 用户密码
  roles: [
    { role: "readWrite", db: "mx-space" },  // 给用户 readWrite 权限
    { role: "dbAdmin", db: "mx-space" }     // 给用户 dbAdmin 权限
  ]
})
  1. 验证与测试
show users 
# 验证用户是否创建成功
mongo --username UserName --password UserPassword --authenticationDatabase mx-space
# 连接测试

MongoDB有认证库和连接库,刚开始就是一直用root用户,导致mx-space一直连接不上;这两个库具体的我也不懂,但是挺重要的,可以了解了解(

Redis 配置

这个没什么特别的配置,我是安装在与MongoDB同服务器上了,应该能与MongoDB分离,但是我遇到问题:前端auth有问题,导致无法正确加载,所以就干脆与MongoDB部署到一块了

需要注意的是:这个RDB持久化,N秒内插入1条数据,建议默认3600秒,或者更高,否则前端可能无法正确获取到 正在被XX人看爆

其他的Redis进阶配置我就不会了,懂的按需修改就行😢

Core yaml文件配置

官方文档有更详细的参数说明,请配合使用: https://mx-space.js.org/docs/core/extra

下面是我目前使用的docker-compose.yml配置示例

services:
  app:
    container_name: mx-server
    image: innei/mx-server:latest
    environment:
      - TZ=Asia/Shanghai
      - NODE_ENV=production
      - DB_HOST=127.0.0.1 #数据库地址
      - DB_USER=username #数据库用户名
      - DB_PASSWORD=userpassword #数据库密码
      - REDIS_HOST=127.0.0.1 #redis地址
      - REDIS_PASSWORD=redispwd #redis密码
      - ALLOWED_ORIGINS=www.example.com #允许的前端域名
      - JWT_SECRET=xxxxxxxxx #JWT密钥
      - ENCRYPT_ENABLE=true #数据库加密(按需开启)
      - ENCRYPT_KEY=xxxxxxxxxxxxxxxx #数据库加密密码,如果丢失将无法从备份文件恢复,然后可以跑路了(x
    volumes:
      - ./data/mx-space:/root/.mx-space
    ports:
      - '2333:2333'

    networks:
      - mx-space
    restart: unless-stopped
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://127.0.0.1:2333/api/v2/ping']
      interval: 1m30s
      timeout: 30s
      retries: 5
      start_period: 30s
networks:
  mx-space:
    driver: bridge
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...