跳至正文

教你在 Ubuntu 22.04 系统上搭建 NodeBB 开源论坛程序(一)

今天和大家分享搭建 NodeBB 轻量级论坛过程。在网上搜索了一圈,发现关于 NodeBB 论坛的搭建教程都有些过时,有些则使用的是 CentOS 系统,对于我个人来说,习惯了 Ubuntu 和 Debian 。而且官方推荐的也是使用 Ubuntu 系统搭建,那么现在就和大家分享一下如何在 Ubuntu 系统上搭建 NodeBB 轻量级论坛。

为什么选择 NodeBB

开源、轻量级、快速和高度可扩展性!颜值高!

官方演示网站:https://try.nodebb.org/

我在初次搭建的过程中,觉得过程稍许繁杂,我知道肯定有小伙伴想说为什么不用 Docker 安装,我首选的方法也是用 Docker,但我在 dockerhub 上找了一圈,发现关于 NodeBB 的 docker 镜像版本太旧,更新时间大约是一年前。而 NodeBB 最新版本已经来到 3.8.2。所以才没有采取 docker 来安装 NodeBB 。

搭建的过程中也是踩了一些坑,比如说在安装 node.js 的过程中,按照官方代码部署,发现最终安装的不是最新版本;最让我头疼的是好不容易部署完成,登录账号密码的时候,提示密码错误等等。希望经过我的踩坑经验,能让大家少走些弯路。

NodeBB 配置要求

  • 操作系统: Ubuntu 16.04+ 或 Debian 9+
  • 内存: 至少 512MB(推荐 1GB 或更高)
  • Node.js: v14.x 或更高
  • 数据库: MongoDB 或 Redis
  • 反向代理: Nginx 或 Apache

搭建步骤

  • 环境搭建( Node.js + MongoDB 数据库)
  • 安装 NodeBB 主程序
  • 配置反向代理
  • NodeBB 加入系统开机启动
  • 配置 HTTPS
  • 升级
  • 备份与恢复

一 、环境搭建( Node.js + MongoDB 数据库)

1. 安装 Node.js

NodeBB 由 Node.js 驱动,因此需要安装 Node.js 。为了获得最新的 Node.js LTS 版本,具有更好的性能和最新的功能,建议大家从 NodeSource Ubuntu 二进制发行版存储库获取。可以将下列代码直接复制粘贴到 ssh 控制台

sudo apt update
sudo apt install curl
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

控制台输入node -v,npm -v 验证 Node.js 和 npm 的安装是否成功。出现版本信息即为成功。

2. 安装 MongoDB 数据库

MongoDB 是 NodeBB 的默认数据库,本教程以当前最新的 7.0 稳定版本为例。同样可以将下列代码直接复制粘贴到 ssh 控制台。

sudo apt-get install gnupg curl
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

上述命令执行并完成安装后,输入 mongod –version 验证 MongoDB 的安装是否成功,依旧是出现版本信息即为成功。

启动 mongod 服务,将此服务加入开机自动,最后查看 mongod 运行状态

sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod

出现下图红色框选内容:active(running),说明服务出于运行状态。按 ctrl+c 返回控制台。接下来,我们需要配置 MongoDB 数据库

3. 配置 MongoDB 数据库

1.首先输入 mongosh 进入 shell 控制台,然后切换到内置 admin 数据库,创建一个 admin 管理用户。

命令如下(依次执行):

mongosh
use admin
db.createUser({ user: "admin", pwd: "Tuge985", roles: [ { role: "root", db: "admin" } ] })

这个 admin 用户的范围是管理数据库,一旦启用授权就可以管理MongoDB。

注意:请将第三条命令中的Tuge985更换为自己设定的密码,Tuge985是我自行创建的密码。

2.创建名为 nodebb 的新数据库,同时创建 nodebb 用户来管理 nodebb 数据库,完成后退出(这个 nodebb用户和上面的 admin 用户不同,admin 用户类似于一所学校的校长,而 nodebb 用户类似于某一年级的年级主任)。

命令如下(依次执行):

use nodebb
db.createUser({ user: "nodebb", pwd: "Tuge985", roles: [{ role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" }] })
quit()

注意:同样请将第二条命令中的Tuge985更换为自己设定的密码。

3. MongoDB 配置文件 /etc/mongod.conf 中进行编辑

执行 nano /etc/mongod.conf 打开该文件,然后在 #security 下添加下面的代码

security:
authorization: enabled

之后,按 ctrl+x 后点击 y 保存,回车后回到主界面。

4.重新启动 MongoDB 并验证之前创建的管理用户是否可以连接,测试无误后输入 quit 退出。

sudo systemctl restart mongod
mongosh -u admin -p Tuge985 --authenticationDatabase=admin

二 、安装 NodeBB 主程序

  1. 安装前,需要先安装 git,用来获取 NodeBB 安装代码
sudo apt-get install -y git

官方声明:使用 git 和后面用到的 ./nodebb 这些命令的时候,不应该用 root 权限或 root 账号来执行。说是会有NodeBB 需要访问的文件的不同所有权问题。这样的话,我们就新建一个没有 root 权限的普通用户:

sudo adduser nodebb

简单的设置一下密码,之后一路回车,此时,用用户 nodebb 就创建成功!

注意:密码不要设置的太简短,大小写字母加数字最佳,否则需要你重新设置。

2. 创建 NodeBB 论坛所在的目录

sudo mkdir -p /var/www/nodebb

将文件夹的所有权更改为新创建的用户。

sudo chown -R nodebb:nodebb /var/www/nodebb

3. 切换到我们新建的 nodebb 账户,进行安装 NodeBB 程序。

su nodebb

切换到 NodeBB 安装目录。

cd /var/www/nodebb

要安装 NodeBB,首先我们需要克隆它的 Github 存储库。将 NodeBB 克隆到该 /var/www/nodebb 目录。命令末尾的点表示当前目录。(切记不要丢掉最后的点)

git clone -b v3.8.2 https://github.com/NodeBB/NodeBB.git .

在这里,我们克隆了 NodeBB 的 v3.8.2,它是编写本博客时最新的稳定版本。你可以从 NodeBB 的最新版本页面 中找到最新的稳定分支。

使用以下命令安装 NodeBB :

./nodebb setup

此过程大约持续 5-10 分钟,机器性能强则等待时间较短,反之,则需要多等一下。大约 5 分钟左右,会交互式的出现一些信息,请操考下图:

  • ① 填写自己的域名(图中有误,请将 https改为 http);
  • ② 一个符合示例格式的随机字符串,比如说:e71ba472-72a8-40f2-adb4-22681b4d8a79;
  • ③ no;
  • ④⑤⑥⑦直接回车即可;
  • ⑧ 填写数据库名字,上面我们创建了 nodebb 的数据库,所以此处写 nodebb;
  • ⑨ 输入数据库密码,输入的时候不显示,但其实是输入成功的,确认输入正确后回车;
  • ⑩ 直接回车

接下来,下图中输入NodeBB论坛管理员用户和密码,这里我以 uuzi 为用户名,填写上邮箱和密码,回车即可。

当最后出现如下提示,此时 NodeBB 安装成功!

NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.

最后,使用以下命令启动 NodeBB

./nodebb start

虽然此时启动成功,但是实测打开速度特别慢,不过将程序重启一下就没问题了。

./nodebb stop
./nodebb start

此时我们通过在浏览器中输入 ip + 端口的方式访问,如果出现一下无法打开页面的画面,则可能是防火墙的原因导致,只要在防火墙中放行 4567 端口即可。

只需要在 root 用户下输入下面的命令,即可。

ufw allow 4567

然后再次访问 http://158.247.208.136:4567/,发现可以正常打开。

三 、配置反向代理

由于篇幅有限,关于配置反向代理使用域名访问,以及配置 HTTPS,将会在下一篇博客中,尽请期待。

推荐阅读

☕️ 感谢打赏支持

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注