NodeBB 是 一种基于 Node.js 构建的电子公告牌系统(Bulletin Board System)。事实上,NodeBB已经不能说是一种单纯的 BBS 系统了。相对于传统的BBS,它的风格其实更偏向于 WeCenter 这种话题类的平台(Platform),也就是说它可能并不是十分适合有 传统BBS 需求的站长。
NodeBB的优势在于 即时通讯技术 和 瀑布流消息的呈现模式,这主要得益于 Socket.io 提供的 ajax 解决方案(WebSocket > Long polling)。可以说,NodeBB能够吸引人的其实就是它这种十分友好,流畅的用户之间的交互。

NodeBB Hot : https://nodebb-cn.org
社区 (不管你点哪个,其实都是一个站点) :
https://community.nodebb-cn.org
http://nodebb.org.cn
http://nodebb.net

NodeBB官方链接索引
NodeBB GitHub
官方论坛
官方英文版文档

以下提供CentOS+Redis和CentOS+Mongodb两种安装方式。具体可以查看中文安装文档 https://www.kancloud.cn/a632079/nodebb-cn

CentOS+Redis

从 Github 上克隆 NodeBB 的发布版本分支

$ cd /home #把目录替换为你想安装到的地方
$ git clone -b v1.10.x https://github.com/NodeBB/NodeBB nodebb

现在,你可以使用国内的镜像仓库(https://gitee.com/qiai365/NodeBB.git)来提高连接速度。

安装 NodeBB 依赖环境

$ cd /home/nodebb #替换为上面你修改的目录 + /nodebb

由于机器性能和网络情况的差异,该操作可能需要您花费 数分钟 甚至 数十分钟 的时间!

进行初始化设置

$ ./nodebb setup

需要注意的是: 由于默认选择的数据库是 MongoDB 所以在 Which databases to use 那步 请填写 redis!

这时候您可以尝试通过 http://你的IP:4567 访问 NodeBB。如果成功访问,那么我们就大功告成了!(可能需要您使 iptables/firewalld 允许外部连接对于 4567 端口的访问)

反代

上一步我们安装好了nodebb,但是需要通过4567端口才能访问。现在我们设置一下反代服务,支持通过域名访问网站。

反代服务器 有很多种,但这里我们选取的是最流行也是性能最优秀的反代服务: Nginx

首先,安装nginx

$ yum install nginx

设置nginx反代规则

$ cd /etc/nginx/conf.d
$ nano example.conf

规则如下(www重定向至no-www,如果不需要,可以自己修改)

server {
    listen       80;
    server_name  www.example.com;
    return       301 http://example.com$request_uri;
}

server {
    listen 80;

    server_name example.com;

    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 配置生效

$ service nginx reload

如果出现如下错误:

nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed

修改 nginx.conf,在 http{} 添加:

server_names_hash_bucket_size  64;

保存,退出,启动nginx

教程改编自官方文档,官方文档地址:https://docs.nodebb.org/en/latest/installing/os/centos.html

ContOS+Mongodb

在开始之前:
① 提前切换成root用户,免得麻烦。
② 不要直接下载 Github 上发布的 release 压缩包,那里面没有 .git/config 配置文件,而在安装过程中需要读取配置文件的值。正确的做法是使用 Git 从 GitHub 上克隆源代码。

下载 NodeBB

切换到 /home目录(可替换为你想要的位置),克隆源代码:

$ cd /home #切换到你想要的位置
$ git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git nodebb

现在,你可以使用国内的镜像仓库(https://gitee.com/qiai365/NodeBB.git)来提高连接速度。

注意: v1.10.x 是最新的稳定版分支的名字,不建议 使用其他分支作为 生产环境!

安装 NodeBB 的运行依赖

$ cd /home/nodebb # /home替换成你上面选取的位置
  • 新建数据库(详细可查看 配置MongoDB 篇)
    使用以下命令进入 MongoDB 的命令行管理界面:
    $ mongo
  • 新建数据库:
    > use nodebb # 新建数据库,名叫 nodebb
  • 添加用户角色:
    > db.createUser( { user: "nodebb", pwd: "替换成你的密码", roles: [ "readWrite" ] } )

    NodeBB 需要 MongoDB 版本至少为 2.6

如果要在NodeBB的管理控制面板(高级→数据库)中查看数据库统计信息,请键入以下命令:

> db.grantRolesToUser("nodebb",[{ role: "clusterMonitor", db: "admin" }]);
  • 打开 MongoDB 权限认证
    执行 vim /etc/mongod.conf,找到 security: 这一行,取消注释并改为:

    security:
     authorization: enabled
  • 重启 MongodB

    $ service mongod restart
  • 初始化 NodeBB
    使用如下命令开始初始化:

    $ ./nodebb setup

    注意事项:

  • URL used to access this NodeBB这个问题填写域名http://www.xxx.com(别漏下 http 前缀,域名末尾不加 /)

  • 另外,NodeBB会默认监听本地端口 4567,我们后面还要使用 nginx转发 80 端口的请求到 4567 端口。
    中间还有两次需要回答问题 Which database to use

  • 第一次是回答数据库程序名mongo,第二次回答所创建的数据库名nodebb

  • 这些回答都将被写入 NodeBB 的配置文件config.json,如果答错了可以随后手动修改

    极度重要!

  • 注意第一个问题所回答的 URL 将会作为之后邀请链接的网址,我们设成了 http://www.xxx.com,那么邀请连接就是 http://www.xxx.com/register

  • 同时注意末尾别加斜杠,否则邀请链接里多一个斜杠成了 http://xxx//register

  • 也不要加端口,不然邀请链接里包含 4567 端口(http://www.xxx.com:4567/register),而4567端口是不对外开放的!

    Nginx(反代)

    上一步我们安装好了nodebb,但是需要通过4567端口才能访问。现在我们设置一下反代服务,支持通过域名访问网站。

反代服务器 有很多种,但这里我们选取的是最流行也是性能最优秀的反代服务: Nginx

执行vim /etc/yum.repos.d/nginx.repo 并写入以下信息:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/x86_64/
gpgcheck=0
enabled=1

开始安装:

$ yum install nginx.x86_64

配置 Nginx

执行 vim /etc/nginx/nginx.conf,在 http 语句块内追加上:

##########################################
server {
    listen 80;

    server_name www.xxx.com; # 你的域名

   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

$ service nginx start

完成

启动

运行以下命令启动 NodeBB:

$ ./nodebb start

请检测是否能通过url访问你的社区,若不行,则看看哪一步出错了。

至此,你的论坛已经完成。

高级管理

为了更好的管理 NodeBB 的运行,推荐使用 forever 这个工具自动后台运行 NodeBB。

  • 安装 forever
    $ npm install forever -g # 这里必须加-g参数,不然可能装不上

装完后 forever 后,其可执行程序位于 Node.js 安装目录的 bin 子目录里,我们此前已经把整个 bin 目录加入 PATH 变量了。

  • 管理 NodeBB 进程
    后台启动 NodeBB:
    $ forever start app.js
    停止 NodeBB:
    $ forever stop app.js
    查看后台的 NodeBB:
    $ forever list
    参考:

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/#install-mongodb-community-edition
https://docs.nodebb.org/en/latest/configuring/databases/mongo.html
https://docs.mongodb.org/manual/administration/configuration/#security-considerations
https://docs.nodebb.org/en/latest/configuring/proxies/nginx.html

文档更新时间: 2018-11-23 08:59   作者:cklx