NodeBB是一款基于Node.js的BBS系统。与Discuz之类的传统BBS系统相比,它具有能够即时通讯、用户交互非常友好等优势。不过,想要熟练折腾NodeBB的难度可不低,在入NodeBB这个大坑之前最好先三思。
(上周末刚部署完一个NodeBB论坛的我现在就在钻研NodeBB插件开发文档,并在后悔中。)
1.关于NodeBB
项目地址:https://github.com/NodeBB/NodeBB
中文社区:https://community.nodebb-cn.org
2.系统要求
想要部署NodeBB,你的服务器必须满足以下条件:
- 可用内存 > 512 MB
3.创建运行用户
建议使用一个非root用户来管理NodeBB进程。由于接下来的操作最好不要用root用户进行,我们先来创建这个运行用户。
adduser nodebb
输好密码并确认之后一路回车,就创建好一个名为nodebb
的用户了。
给nodebb
用户一个sudo
权限之后切换到这个用户,接下来的操作将用nodebb
用户进行。
usermod -aG sudo nodebb su nodebb
4.安装并配置依赖
4.1.安装Node.js
我们还是使用NodeSource编译的源来安装Node.js。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - apt install nodejs -y
4.2.安装MongoDB
NodeBB支持使用Redis和MongoDB这两种数据库。个人推荐使用MongoDB,更省资源。
首先先导入这个公钥。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
然后创建一个列表文件。(注意:命令里面的ubuntu bionic是Ubuntu 18.04的版本代号,如果你用的不是这个版本,请把它换成相应的版本代号,否则将不会安装MongoDB服务。)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
搞定之后就能安装MongoDB了。
sudo apt update sudo apt install mongodb-org -y
安装完毕之后启动MongoDB服务,并查看一下是否运行正常。
sudo service mongod start sudo service mongod status
服务运行正常的话就让这个服务开机启动。
sudo systemctl enable mongod
4.3.配置MongoDB
输入这条命令进入MongoDB数据库命令行。
mongo
在给NodeBB创建数据库之前,先要添加一个管理员数据库和管理员用户。首先进入管理员数据库。
use admin
进入管理员数据库后创建一个管理员用户。创建管理员用户的命令是:
db.createUser( { user: "admin", pwd: "(密码)", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
然后进入nodebb
数据库。
use nodebb
创建一个具有读写nodebb
数据库权限的用户。
db.createUser( { user: "nodebb", pwd: "(密码)", roles: [ "readWrite" ] } )
创建完后按CTRL+C
退出数据库命令行。
4.4.启用MongoDB权限认证(可选)
安全起见最好启用MongoDB的权限认证,不过启用了权限认证之后NodeBB的有些功能会受影响,请自行决定是否启动权限认证。
4.5.其他依赖
差点忘了还有这两样东西没有安装。直接使用apt
安装即可。
sudo apt install git build-essential -y
5.部署NodeBB
创建一个NodeBB安装目录并进入该目录,然后通过git获取最新版NodeBB程序到nodebb
文件夹。
sudo mkdir /var/www && cd /var/www sudo git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git nodebb
进入nodebb
文件夹并运行配置脚本。
cd nodebb sudo ./nodebb setup
当脚本输出以下内容时NodeBB就基本部署完毕了。
Welcome to NodeBB v1.10.1!
This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed.
Press enter to accept the default setting (shown in brackets).
URL used to access this NodeBB (http://localhost:4567)
现在先按CTRL+C
退出配置脚本,剩下的配置可以在Web版的配置向导里面进行。
6.配置Nginx反向代理
我们依旧用Ondřej Surý大佬的PPA来安装Nginx。
sudo apt install software-properties-common -y sudo add-apt-repository ppa:ondrej/nginx-mainline sudo apt update sudo apt install nginx -y
安装完毕之后创建一个配置文件。
sudo vim /etc/nginx/conf.d/nodebb.conf
配置文件的格式大致如下,注意把example.com
换成你自己的域名,并修改SSL证书与密钥的路径。
upstream backend { server 127.0.0.1:4567; } server { listen 443; server_name example.com; error_log /var/log/nginx/nodebb.access.log; ssl on; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass http://backend/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } } server { listen 80; server_name example.com; return 301 https://example.com$request_uri; }
保存完配置文件后测试下配置文件并重启Nginx服务。
sudo nginx -t sudo service nginx restart
7.创建NodeBB服务
创建一个NodeBB服务可以让它开机自启。
在创建服务之前,先得把NodeBB所在的文件夹所有权转移给nodebb
用户与nodebb
用户组。
sudo chown -R nodebb:nodebb /var/www/nodebb
搞定好了就能创建NodeBB服务了。
sudo vim /etc/systemd/system/nodebb.service
NodeBB服务的格式基本如下。
[Unit] Description=NodeBB Documentation=https://docs.nodebb.org After=system.slice multi-user.target mongod.service [Service] Type=simple User=nodebb StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodebb Environment=NODE_ENV=production WorkingDirectory=/var/www/nodebb ExecStart=/usr/bin/node loader.js --no-daemon --no-silent Restart=always [Install] WantedBy=multi-user.target
保存完服务文件之后先启动服务并查看一下运行状态。
sudo service nodebb start sudo service nodebb status
运行正常的话就可以让它开机自启了。
sudo systemctl enable nodebb
8.完成部署
由于之前已经做好了反向代理,并且NodeBB服务也已经启动了,现在就可以直接访问你给你的NodeBB论坛解析的域名进入Web版安装向导,继续未完成的安装了。
URL与管理员用户的设置不用多说。不过这里的URL必须设置为http://example.com:4567
这样的格式(请把example.com
换成自己的域名)。
数据库选择MongoDB,用户名、密码、使用的数据库根据实际情况填写,其他的保持默认即可。
信息填写完毕,点击Install NodeBB
来完成NodeBB的部署。等待一分钟,一个全新的NodeBB论坛就正式部署完毕了。
9.个人吐槽
部署完NodeBB只是代表着折腾的开始。正如文章开头所说,目前我正在折腾NodeBB插件,并在痛苦中。(毕竟我之前根本没有开发过Node.js。)(っ °Д °;)っ
不过我倒不讨厌折腾,因为这样也是蛮有意思的。( •̀ ω •́ )
0 Comments