开源论坛 NodeBB 安装(数据库配置权限)

安装NodeBB论坛(数据库配置权限)

参考:https://www.jianshu.com/p/ab72fe404c8d

其他论坛:Dizuss (PHP)https://www.discuz.net/

0. 前置准备

1. 安装 mongoBD

备份数据库操作:https://www.cnblogs.com/woshimrf/p/docker-install-mongodb-and-backup.html

先创建所需的 docker 网络 docker network create mongo-net 创建了一个名字为mongo-net的默认网络

可以通过命令:docker network list 查看是否创建成功,创建成果结果如下:

NETWORK ID     NAME        DRIVER    SCOPE
78a4240d5b93   bridge      bridge    local
b93f96ae1e20   host        host      local
fd99a9463343   mongo-net   bridge    local
ee1974ed8911   none        null      local

安装 mongodb

使用权限(当前测试连接有问题)

创建数据库

  • 主机映射路径在没有的情况下会自动创建:-v /data/opt/mongodb/data/configdb:/data/configdb/
    • 物理机目录是前面的:/data/opt/mongodb/data/configdb
    • 容器映射目录是:/data/configdb/
 docker run  \
--name mongo \
--restart always \
--network mongo-net \
-p 27017:27017  \
-v /data/opt/mongodb/data/configdb:/data/configdb/ \
-v /data/opt/mongodb/data/db/:/data/db/ \
-d mongo:4.0 --auth --wiredTigerCacheSizeGB 0.25

创建管理员用户

  • 用户:admin
  • 密码:xxx
docker exec -it mongo mongo admin
 
db.createUser({ user: 'admin', pwd: 'xxx', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

创建使用用户已经对应数据库(后续NodeBB论坛连接使用)

  • 用户:nodeBBUser
  • 密码:xxx
  • 数据库:nodeBBDB
// 验证权限,正常返回 1
db.auth("admin", "xxx")
// 创建 NodeBB论坛用户
db.createUser({ user: 'nodeBBUser', pwd: 'xxx', roles: [ { role: "readWrite", db: "nodebb" } ] })

数据库连接地址,后续NodeBB论坛使用

ip:27017

数据库备份设置

全量备份/data/opt/mongodb/data

创建备份目录/data/opt/mongodb/backup/data

mkdir -p /data/opt/mongodb/backup/data

备份日志目录: /data/opt/mongodb/backup

创建备份脚本: /data/opt/mongodb/backup-mongodb.sh

vim /data/opt/mongodb/backup-mongodb.sh

拷贝如下内容:

#!/bin/bash
LOG_DIR=/data/opt/mongodb/backup
SOURCE_DIR=/data/opt/mongodb/data
BACKUP_DIR=/data/opt/mongodb/backup/data


function log()
{
  echo "[ `date '+%Y-%m-%d %H:%M:%S'` ] $1"
}


# 备份
function main(){
    d=`date "+%Y%m%d%H%M%S"`
    fname=${BACKUP_DIR}/backup_${d}.tgz
    log "开始备份 ${fname}"
    tar -zcf ${fname} ${SOURCE_DIR}


    log "开始删除7天前的备份"
    find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
    log "删除完毕"
}


main >> ${LOG_DIR}/backup.log  2>&1

测试备份

bash /data/opt/mongodb/backup-mongodb.sh

查看备份结果

cd /data/opt/mongodb/backup/data
ll
// 可以看到备份结果
... backup_xxx.tgz

创建定时任务,每天2点全量备份

https://blog.csdn.net/renhuan28/article/details/79820281

crontab -e
写入
0 2 * * * bash /data/opt/mongodb/backup/backup-mongodb.sh
保存即可
wq

数据库恢复

启动容器前:拷贝备份文件data目录到

// 进入备份目录,注意备份路径解压后是全路径:
cd /data/opt/mongodb/backup/data/data/opt/mongodb
// 解压文件
tar -zxf backup_xxx.tgz
// 拷贝到mongo 数据目录
mv data/ /data/opt/mongodb/

然后正常安装即可

  • 一定要重新安装mongo 以及nodeBB,并且需要初始化论坛

  • 初始化时候需要跟以前数据库配置相同,当前全部使用默认值

2. 安装NodeBB(测试中)

容器启动NodeBB

  • 对外端口配置:-p 4567:4567
    • 前面4567为物理机端口
    • 后面4567容器内端口

docker run --restart always --name nodebb --network mongo-net -p 4567:4567 -d nodebb/docker

初始化配置(当前MongDB没有配置权限)

访问 NodeBB

ip:port 这里是 ip:4567

初始化界面如图:

NodeBB_setup

  1. 创建管理员账户密码

  2. 配置数据库

    • Database Type:MongoDB
    • Host IP or address of your MongoDB instance:mongo(数据库容器名称)
    • Host port of your MongoDB instance:27107
    • MongoDB username:未使用权限无需填写
    • Password of your MongoDB database:未使用权限无需填写
    • MongoDB database name:nodebb(使用默认即可)
  3. 配置论坛

    登录管理员账号,配置即可。

分享