NodeBB是一个基于Node.js的开源论坛软件,为在线社区提供现代化、响应式的解决方案。NodeBB运行在Linux系统上,利用操作系统的稳定性和灵活性来提供高性能和可扩展性。它使用MongoDB和Redis的组合进行数据库管理,能够高效处理大量用户生成的内容。

NodeBB以其实时通知、与各种社交媒体平台的无缝集成以及丰富的插件生态系统而闻名,允许管理员根据特定需求自定义论坛。此外,其移动优先的设计确保在所有设备上都能提供一致且引人入胜的用户体验。本指南将提供在AlmaLinux 9服务器上安装NodeBB的详细步骤说明,使用MongoDB作为数据库,Nginx作为反向代理,并通过Certbot和Let's Encrypt为NodeBB配置HTTPS安全连接。

前提条件

在开始之前,请确保具备以下条件:

  • 一台AlmaLinux 9服务器
  • 一个具有管理员权限的非root用户
  • 一个已指向服务器IP地址的域名
  • SELinux状态设置为permissive且已启用

安装依赖

NodeBB是基于Node.js的开源论坛软件。要安装NodeBB,必须确保安装以下软件包:

  • 系统工具,如"Development Tools"、Git和ImageMagick
  • Node.js 18或更高版本以及NPM(Node包管理器)
  • MongoDB NoSQL数据库服务器
  • Nginx Web服务器作为反向代理

在本节中,您将在AlmaLinux 9服务器上安装这些依赖项。

首先,运行以下命令启用AlmaLinux CRB(CodeReadyBuild)仓库并安装EPEL仓库。

sudo crb enable
sudo dnf install epel-release -y

然后使用nano编辑器创建新的仓库文件'/etc/yum.repos.d/mongodb-org-7.0.repo'。

sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo

将以下配置输入到文件中:

[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc

完成后保存文件并退出编辑器。

现在运行以下命令为AlmaLinux启用Node.js 18仓库。

sudo dnf module enable nodejs:18 -y

AlmaLinux 9安装NodeBB论坛教程

接下来,运行以下dnf命令安装"Development Tools"、MongoDB服务器、Node.js、NPM、Git和ImageMagick。

sudo dnf group install "Development Tools" -y
sudo dnf install nodejs npm git ImageMagick mongodb-org -y

AlmaLinux 9安装NodeBB论坛教程

安装完成后,使用以下命令启动并启用mongod服务。

sudo systemctl enable --now mongod
sudo systemctl status mongod

您可以看到MongoDB服务器正在运行且已启用。

AlmaLinux 9安装NodeBB论坛教程

最后,使用以下命令检查Node.js版本。您应该看到AlmaLinux服务器上已安装Node.js 18。

node --version
npm --version

AlmaLinux 9安装NodeBB论坛教程

配置MongoDB服务器和数据库

安装完依赖项后,您将通过启用密码认证并设置MongoDB管理员密码来保护MongoDB服务器。之后,您还将为NodeBB安装创建一个新的MongoDB数据库和用户。

使用以下mongosh命令登录到MongoDB服务器。

mongosh

AlmaLinux 9安装NodeBB论坛教程

登录后,切换到'admin'数据库并运行以下查询来设置MongoDB管理员密码。请确保将'MongoDBAdminPass'更改为您的密码组合。

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

现在运行以下查询创建一个新的数据库和用户'nodebb',密码为'NodeBBPassword'。您可以根据需要调整以下数据库详情。

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

输入'quit()'退出MongoDB服务器。

AlmaLinux 9安装NodeBB论坛教程

为MongoDB配置管理员密码后,让我们启用MongoDB认证。

使用nano编辑器打开默认的MongoDB配置文件'/etc/mongod.conf'。

sudo nano /etc/mongod.conf

要启用MongoDB认证,取消注释'security'行并添加'authorization: enabled',如下所示:

security:
  authorization: enabled

完成后保存并退出文件。

现在运行以下systemctl命令重启MongoDB服务器以应用更改。MongoDB认证现在应该已启用。

sudo systemctl restart mongod

要验证配置,运行以下mongosh命令使用用户'nodebb'登录到MongoDB。输入'nodebb'用户的密码。

mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb

安装NodeBB

现在您已经配置好了MongoDB服务器,接下来可以在AlmaLinux服务器上安装NodeBB了。

使用以下命令添加一个新的系统用户和组'nodebb'。

sudo adduser -r -M -d /opt/nodebb -U nodebb

将NodeBB源代码下载到'/opt/nodebb'目录并将所有权更改为'nodebb'用户。

git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb

进入'/opt/nodebb'目录并执行NodeBB安装脚本。

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb

在此,您将被询问一些NodeBB配置:

  • 输入NodeBB的域名,例如 https://forum.howtoforge.local
  • 在NodeBB密钥配置处按ENTER,保持默认值
  • 输入no以禁用NodeBB的匿名访问
  • 选择MongoDB作为数据库
  • 输入MongoDB数据库详情,格式如 mongodb://nodebb:NodeBBPassword@127.0.0.1:27017/nodebb
  • 输入NodeBB的新管理员用户和电子邮件地址
  • 输入NodeBB管理员用户的密码并重复输入

过程完成后,您将看到类似以下的输出:

AlmaLinux 9安装NodeBB论坛教程

您现在可以通过执行'nodebb'脚本来手动启动或停止NodeBB。

sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

AlmaLinux 9安装NodeBB论坛教程

将NodeBB配置为systemd服务

为了更方便地管理NodeBB,您可以使用'systemctl'工具来控制NodeBB进程。为此,您需要创建一个新的systemd服务文件来运行NodeBB。

使用nano编辑器创建新的systemd服务文件'/etc/systemd/system/nodebb.service'。

sudo nano /etc/systemd/system/nodebb.service

输入以下配置以将NodeBB作为systemd服务运行。

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

保存文件并退出编辑器。

使用以下systemctl命令重新加载systemd管理器。

sudo systemctl daemon-reload

最后,启动并启用'nodebb'服务,然后检查以确保服务正在运行。

sudo systemctl enable --now nodebb
sudo systemctl status nodebb

您可以看到NodeBB正在后台作为systemd服务运行。

AlmaLinux 9安装NodeBB论坛教程

配置Nginx反向代理

现在NodeBB已在后台作为服务运行,让我们安装Nginx并创建一个新的服务器块,用作NodeBB的反向代理。

首先,运行以下dnf命令安装Nginx Web服务器。

sudo dnf install nginx -y

AlmaLinux 9安装NodeBB论坛教程

现在使用nano编辑器创建新的Nginx配置'/etc/nginx/conf.d/nodebb.conf'。

sudo nano /etc/nginx/conf.d/nodebb.conf

输入以下配置,并确保将'server_name'参数更改为您的域名。

server {
    listen 80;

    server_name forum.howtoforge.local;

    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语法。如果成功,您将看到输出"syntax is ok - test is successful"。

sudo nginx -t

AlmaLinux 9安装NodeBB论坛教程

最后,运行以下systemctl命令启动、启用并验证Nginx Web服务器。

sudo systemctl enable --now nginx
sudo systemctl status nginx

您可以看到Nginx Web服务器正在运行。

AlmaLinux 9安装NodeBB论坛教程

使用HTTPS保护NodeBB

此时,您的NodeBB安装已准备就绪。但如果您使用的是公共域名,则必须使用HTTPS保护NodeBB。在本节中,您将使用Certbot和Let's Encrypt为NodeBB设置HTTPS。

使用以下命令安装Certbot和Certbot Nginx插件。

sudo dnf install certbot python3-certbot-nginx -y

现在运行以下certbot命令使用HTTPS保护您的NodeBB安装。请确保将此命令中的域名和电子邮件地址更改为您自己的。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d forum.howtoforge.local

过程完成后,您的SSL/TLS证书将位于'/etc/letsencrypt/live/domain.com'目录中,您的NodeBB安装应已使用HTTPS保护。

访问NodeBB

打开您的Web浏览器并访问NodeBB域名,例如 https://forum.howtoforge.local。如果安装成功,您将看到以下NodeBB主页。

AlmaLinux 9安装NodeBB论坛教程

总结

恭喜!您已完成在AlmaLinux 9服务器上安装NodeBB的全部步骤。您的NodeBB论坛已经成功运行,使用MongoDB作为数据库,Nginx作为反向代理。您还通过Certbot和Let's Encrypt为NodeBB安装配置了HTTPS安全连接。