如何在 Ubuntu 18.04 LTS 上安装 NodeBB 论坛
本教程适用于这些操作系统版本
- Ubuntu 20.04(Focal Fossa)
- Ubuntu 18.04(仿生海狸)
在此页
- 要求
- 先决条件
- 第 1 步:安装 Node.js 和 npm
- 第 2 步:安装和配置 MongoDB
- 第 3 步 - 安装
acme.sh
客户端并获取 Let\>) - 第 4 步:安装和配置 Nginx
- 第 5 步:安装和设置 NodeBB
- 第 6 步:将 NodeBB 作为系统服务运行
- 链接
NodeBB 是为现代网络构建的基于 Node.js 的论坛软件。它建立在 MongoDB 或 Redis 数据库之上。它利用网络套接字进行即时交互和实时通知。 NodeBB 具有许多开箱即用的现代功能,例如社交网络集成和流式讨论。通过使用第三方插件启用附加功能。 NodeBB 是一个开源项目,可以在 Github 上找到。在本指南中,我们将逐步引导您在 Ubuntu 18.04 LTS 操作系统上安装 NodeBB,使用 Nginx 作为反向代理,使用 MongoDB 作为数据库,使用 acme.sh 和 Lets Encrypt for HTTPS。
要求
NodeBB 需要安装以下软件:
- Node.js 版本 6 或更高版本
- MongoDB 2.6 版或更高版本或 Redis 2.8.9 版或更高版本
- Nginx 版本 1.3.13 或更高版本
- Git
注意: 安装 NodeBBs 依赖项可能需要超过 512 兆字节的系统内存。如果您的 Linux 系统内存不足,建议启用交换分区以进行补偿。
先决条件
- 运行 Ubuntu 18.04 的系统至少有 1GB 或 RAM。
- 设置了
A
/AAAA
记录的域名。 - 具有 sudo 权限的非根用户。
初始步骤
检查您的 Ubuntu 版本:
lsb_release -ds
# Ubuntu 18.04.1 LTS
设置时区:
sudo dpkg-reconfigure tzdata
更新您的操作系统包(软件)。这是重要的第一步,因为它确保您拥有操作系统默认软件包的最新更新和安全修复程序:
sudo apt update && sudo apt upgrade -y
安装 Ubuntu 操作系统基本管理所需的一些基本软件包:
sudo apt install -y curl wget vim git unzip socat bash-completion
第 1 步:安装 Node.js 和 npm
NodeBB 建立在 Node.js 之上。在撰写本文时,我们将为 NodeBB 安装推荐版本 8。在 Linux 上,您有几个 Node.js 安装选项:Linux 二进制文件 (x86/x64)、源代码或通过包管理器。我们将使用包管理选项,这使得安装和更新 Node.js 变得轻而易举。
从 Nodesource 存储库下载并安装最新的 Node.js 长期支持 (LTS) 版本:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
要从 npm 编译和安装本机附加组件,您可能还需要安装构建工具:
sudo apt install -y build-essential
注意:npm 与 Node.js 一起分发 - 这意味着当您下载 Node.js 时,您会自动在系统上安装 npm。
检查 Node.js 和 npm 版本:
node -v && npm -v
# v10.15.1
# 6.4.1
Npm 是一个独立于 Node.js 的项目,并且更新频率更高。因此,即使您刚刚下载了 Node.js(因此也下载了 npm),您也可能需要更新您的 npm。幸运的是,npm 知道如何自我更新!要更新您的 npm,请在您的终端中输入:
sudo npm install -g
此命令会将 npm 更新到最新的稳定版本。
使用以下命令重新检查 npm 版本:
npm -v
# 6.7.0
它应该返回最新的版本号。
第 2 步:安装和配置 MongoDB
NodeBB 需要一个数据库来存储它的数据,它支持 MongoDB 和 Redis。在本教程中,我们选择 MongoDB 作为数据存储引擎。因此,在接下来的几个步骤中,我们将从官方 MongoDB rpm 存储库下载并安装 MongoDB 数据库:
要安装 MongoDB 软件包的稳定版本,请发出以下命令:
sudo apt install -y mongodb
检查 MongoDB 版本:
mongo --version | head -n 1 && mongod --version | head -n 1
启动并启用(将其设置为在重启时启动)MongoDB 服务:
sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service
通过运行检查 MongoDB 数据库服务器状态:
sudo systemctl status mongodb.service
# active (running)
接下来,为 NodeBB 创建 MongoDB 数据库和用户。
首先连接到 MongoDB 服务器。
mongo
切换到内置的 admin
数据库。
> use admin
创建管理用户。
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
注意:将占位符
替换为您自己选择的密码。
添加一个名为 nodebb
的新数据库。
> use nodebb
将创建数据库并将上下文切换到 nodebb
。接下来创建具有适当权限的 nodebb
用户。
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
注意:同样,将占位符
替换为您自己选择的密码。
退出 Mongo shell。
> quit()
重新启动 MongoDB 并验证之前创建的管理用户是否可以连接。
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
如果一切顺利,您的 MongoDB 应该已安装并为 NodeBB 做好准备。在下一步中,我们将处理 Web 服务器的安装和配置。
第 3 步 - 安装 acme.sh 客户端并获取 Lets Encrypt 证书(可选)
使用 HTTPS 保护您的 NodeBB 论坛不是必需的,但这是保护您的网站流量的好习惯。为了从 Lets Encrypt 获得 TLS 证书,我们将使用 acme.sh 客户端。 Acme.sh 是一个纯 unix shell 软件,用于以零依赖从 Lets Encrypt 获取 TLS 证书。
下载并安装 acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail
source ~/.bashrc
cd ~
检查 acme.sh 版本:
acme.sh --version
# v2.8.0
为您的域/主机名获取 RSA 和 ECC/ECDSA 证书:<br>
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
如果你想要假证书进行测试,你可以在上面的命令中添加 --staging
标志。
运行上述命令后,您的证书和密钥将位于:
- 对于 RSA:
/home/username/example.com
目录。 - 对于 ECC/ECDSA:
/home/username/example.com_ecc
目录。
要列出您颁发的证书,您可以运行:
acme.sh --list
创建一个目录来存储您的证书。我们将使用 /etc/letsencrypt
目录。
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
安装/复制证书到 /etc/letsencrypt 目录。
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
所有证书将每 60 天自动更新一次。
获得证书后,从 root 用户退出并返回到普通 sudo 用户:
exit
第四步:安装配置Nginx
NodeBB 可以与许多网络服务器一起正常工作。在本教程中,我们选择了 Nginx。
安装 Nginx 包,通过发出以下命令:
sudo apt install -y nginx
安装后,您可以通过运行以下命令来验证 Nginx 版本:
nginx -v
启动并启用(将其设置为在重启时启动)Nginx 服务:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
通过运行以下命令检查 Nginx 网络服务器状态:
sudo systemctl status nginx.service
# active (running)
默认情况下,NodeBB 在端口 4567
上运行。为避免键入 http://example.com:4567
,我们将 Nginx 配置为 NodeBB 应用程序的反向代理。端口 80
或 443
(如果使用 SSL)上的每个请求都将转发到端口 4567
。
运行 sudo vim /etc/nginx/conf.d/nodebb.conf
并将 Nginx 配置为 HTTPS 反向代理。
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
client_max_body_size 50M;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
检查 Nginx 配置:
sudo nginx -t
最后,为了使更改生效,我们需要重新加载 Nginx:
sudo systemctl reload nginx.service
第 5 步:安装和设置 NodeBB
创建 NodeBB 应驻留在的文档根目录:
sudo mkdir -p /var/www/nodebb
导航到文档根目录:
cd /var/www/nodebb
将 /var/www/nodebb
目录的所有权更改为您的用户。
sudo chown -R [your_user]:[your_user] /var/www/nodebb
注意:将上述命令中的 your_user 替换为您应该作为本教程的先决条件创建的非根用户。
将最新的 NodeBB 存储库克隆到文档根文件夹中:
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
通过使用 setup
标志运行应用程序来启动设置脚本。回答每个问题:
./nodebb setup
NodeBB 设置完成后,运行 ./nodebb start
手动启动您的 NodeBB 服务器:
./nodebb start
运行此命令后,您应该能够在网络浏览器中访问全新的论坛:

第 6 步:将 NodeBB 作为系统服务运行
通过./nodebb start
启动时,NodeBB不会在系统重启时自动再次启动。为避免这种情况,我们需要将 NodeBB 设置为系统服务。
如果正在运行,请停止 NodeBB:
./nodebb stop
创建一个新的 nodebb
用户:
sudo useradd nodebb
将 /var/www/nodebb
目录的所有权更改为 nodebb
用户:
sudo chown -R nodebb:nodebb /var/www/nodebb
创建一个 nodebb.service
systemd 单元配置文件。该单元文件将处理 NodeBB 守护进程的启动。运行 sudo vim /etc/systemd/system/nodebb.service
并添加以下内容:
[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=forking
User=nodebb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always
[Install]
WantedBy=multi-user.target
注意:根据您选择的名称设置用户名和目录路径。
重启时启用 nodebb.service
并立即启动 nodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
检查 nodebb.service
状态:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
恭喜!您已经在 Ubuntu 18.04 系统上成功安装和部署了 NodeBB 讨论平台。您应该能够在您的域上访问您的论坛并与您的论坛互动。
链接
- https://nodebb.org/ <李>
- https://github.com/NodeBB/NodeBB