公告栏
这是一个公告栏...目前还没有啥公告...
记一次NodeBB的安装
-
说在最前:
其实安装Nodebb主要是考虑以后如果有可能,我会将网站直接做成app或者微信的小程序,查询了一圈,看上去只有NodeBB最合适,主要是后期开发成本较低。。
于是我就入坑了....当你真正上手安装才知道,为啥这玩意中文社区几乎没有,Github的中文doc停留在了6~7年前...
先决条件
important
在开始安装和配置 MongoDB 之前,您需要准备以下内容:
- 一台运行 Debian 12 的服务器(因为我的服务器是这个系统),已经安装了 sudo 和 curl 工具。
- 一个具有 sudo 权限的用户账户,用于执行安装和配置的命令。
然后我们开始
安装NodeJS
首先是安装环境
进入宝塔面板,安装nodejs(宝塔面板中搜索
Node.js版本管理器
然后安装即可)安装MongoDB
然后继续,在宝塔面板的软件商店中搜索
MongoDB
然后选择安装MongoDB 是 NodeBB 的默认数据库。根据 MongoDB 支持政策,截至 2024 年 2 月,4.4 版之前的版本已被正式终止支持。本指南安装版本为 8.0。
注意:请安装8.0版本
安装好以后,我们先来设置
打开配置
注意,监听IP必须修改为
0.0.0.0
监听端口可以随意修改,但不建议修改
然后不要手贱一上来就打开安全验证,因为你目前还要对数据库进行一次手动配置
然后打开终端
使用管理员账户
sudo -i
管理员账户运行
mongosh
运行命令(使用amin库)
use admin
db.createUser({ user: "admin", pwd: "这里输入你认为相对安全的密码", roles: [{ role: "root", db: "admin" }] })
验证你创建的admin用户名密码
db.auth('admin','这里输入你刚才创建的,你认为相对安全的密码');
然后退出mongosh
exit
我们验证一下你刚才的管理员账户
mongosh "mongodb://localhost:27017" --username admin --authenticationDatabase admin
这时会要求你输入密码
这里输入你刚才创建的,你认为相对安全的密码
如果通过验证,那就说明ok了
找回管理员密码
如果,你脑子不太好,记不住,就用记事本记下来,如果实在忘了
再次进入admin表
use admin
使用 db.updateUser 方法更新管理员用户的密码
db.updateUser( "admin", { pwd: "这里输入你又灵光一闪认为相对安全的密码", roles: [{ role: "root", db: "admin" }] } )
验证你创建的admin用户名密码
db.auth('admin','这里输入你刚才又创建的,你认为相对安全的密码,我为什么说又?');
然后退出mongosh
exit
我们验证一下你刚才的管理员账户
mongosh "mongodb://localhost:27017" --username admin --authenticationDatabase admin
这时会要求你输入密码
这里输入你刚才创建的,你认为相对安全的密码
如果通过验证,那就说明ok了
找个本记录下来吧,实在不行咱去看看老年痴呆。。。。。
好了我们继续
在宝塔面板上创建你的数据库
刚刚我们创建了管理员的用户名密码
现在我们要在宝塔面板上创建一个数据库,你可以任意起名字
我写的就是
nodebb
然后我们继续回到终端,输入
mongosh
我们进入nodebb数据库
use nodebb
我们现在要创建一个,用户你
nodebb
数据库的用户名和密码db.createUser( { user: "nodebb", pwd: "你的密码", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
然后我们验证一下我们刚才创建的用户名密码
db.auth('nodebb','你的密码');
好了,至此,你的用户名密码已经建立好了,我们回到宝塔面板——数据库
开启安全验证
请注意!请务必开启安全验证,否则就像。。。你花了一万块钱买了一个防盗门然后从来不上锁。。。。。你家大门常打开。。。。。。
我们开始安装 NodeBB
安装git
首先,我们必须安装git它用于分发NodeBB
apt install -y git
下载NodeBB程序
打开终端,进入
/www/wwwroot
目录(宝塔默认的网站文件存储目录)git clone -b v3.x https://github.com/NodeBB/NodeBB.git nodebb cd nodebb
这将从
v3.x
分支克隆 NodeBB 仓库到 nodebb 目录。NodeBB 分支 GitHub 页面中提供了替代分支列表,但只有版本化分支是稳定的。安装NodeBB
NodeBB 自带一个命令行工具,允许执行多个功能。我们首先使用它来设置 NodeBB。这将从 npm 安装模块,然后进入设置工具。
./nodebb setup
恭喜你看到这里,但是还没完
此时由于你的服务器没有Nodejs或者由于其他个人莫名其妙的版本问题与依赖冲突,
./nodebb setup
可能无法运行没关系,请往下看
再次安装NodeJS和npm安装器
先确定你的nodejs和npm有没有工作
node -v npm -v
如果没有,那么我们继续
sudo apt update && sudo apt upgrade -y && sudo apt install -y nodejs npm && sudo npm config set registry https://registry.npmmirror.com && sudo npm install -g n && sudo apt remove nodejs npm -y && sudo apt autoremove -y && sudo n latest
代码释义
更新软件源/更新软件/使用apt安装nodejs,npm/设置npm镜像源(淘宝)/使用npm安装n/卸载nodejs,npm/使用n安装最新版本的nodejs,npm完成后再次确认你的npm和nodejs版本
node -v npm -v
看看还有没有错误,如果依然出错,那么就直接单独安装
安装node
sudo apt install -y nodejs
安装npm
sudo apt install -y npm
然后再次确认你的npm和nodejs版本
node -v npm -v
一般这样就没问题了
我们继续
保险起见,我们安装yarn
运行以下命令来添加Yarn的APT存储库
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
安装Yarn
sudo apt update sudo apt install yarn
验证安装: 安装完成后,你可以运行以下命令来验证Yarn是否成功安装
yarn --version
这里解释一下,为什么安装完了npm安装器还要安装yarn,
主要原因是两种不同的安装方式,npm
是类似线性执行的方式来安装,它的安装是最安全,也是最稳妥的,但是npm缺德的一点是它有可能会因为依赖树中的某个节点版本不匹配而直接停止安装,导致npm安装中断,然后你就要去修复各种莫名其妙的问题,如此往复,我就是这样耽误了三天。。。。[怒摔!!!]
而yarn
是会去尝试解析所有依赖,并生成一个一致的依赖树,即使某些依赖版本不匹配,它也会尽量安装其他依赖,并在最后报告错误。
所以,在这里依然建议先使用npm
来安装,如果不行再使用yarn
好了我们继续我们的安装
我们回到
/www/wwwroot/nodebb
文件夹,运行命令npm install sharp
完成后运行
./nodebb setup
如果出错,则执行
yarn install
等待完成,yarn处理完成后,我们继续
./nodebb setup
此时就会出现nodebb的安装流程了
是不是超级无敌复杂?
注意,安装一路默认即可,有些地方需要注意,如下:
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) #注意这个端口!以后要用到 Please enter a NodeBB secret (***********-*******-******-***-*****) Would you like to submit anonymous plugin usage to nbbpm? (yes) Which database to use (mongo) 2049-10-01T15:16:26.107Z [17717] - info: Now configuring mongo database: MongoDB connection URI: (leave blank if you wish to specify host, port, username/password and database individually) Format: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] Host IP or address of your MongoDB instance (127.0.0.1) Host port of your MongoDB instance (27017) MongoDB username #你的MongoDB用户名(是不是差不多都忘了) Password of your MongoDB database #这里输入你的数据库密码(不显示) MongoDB database name (nodebb) #你的MongoDB数据库名称 2049-10-01T15:17:00.522Z [17717] - info: [database] Checking database indices. 2049-10-01T15:17:00.669Z [17717] - info: [database] Checking database indices done! 2049-10-01T15:17:07.355Z [17717] - verbose: [minifier] utilizing a maximum of 2 additional threads Configuration Saved OK Populating database with default configs, if not already set... 2049-10-01T15:17:07.471Z [17717] - warn: [cache-buster] could not read cache buster ENOENT: no such file or directory, open '/root/nodebb/build/cache-buster' {"errno":-2,"code":"ENOENT","syscall":"open","path":"/root/nodebb/build/cache-buster","stack":"Error: ENOENT: no such file or directory, open '/root/nodebb/build/cache-buster'"} Enabling default theme: nodebb-theme-persona No categories found, populating instance with default categories 2049-10-01T15:17:09.204Z [17717] - warn: No administrators have been detected, running initial user setup Administrator username #你的论坛管理员账户登录名 Administrator email address #你的论坛管理员账户登录邮箱admin@admin.com Password #你的管理员密码 Confirm Password #再次确认你的管理员密码 Creating welcome post! Enabling default plugins
好了,完成以后既可以启动了
启动NodeBB
./nodebb start
激动不激动???别急还没完
设置域名访问
刚才那一长串代码看到了么?你运行
./nodebb start
启动以后,就可以用http
+你的IP
+4567
端口来访问了但是每个网站都要有域名不是吗?那我们应该怎么做呢?
看下图
这样就可以了,当然这里就不赘述添加SSL访问这种操作了,宝塔里有手就会
修改config.json
最后的最后,别忘记修改
config.json
,将"url": "http://127.0.0.1:4567"
改成你的域名
注意,如果你设置了SSl访问,
http
要加s
然后回到nodebb目录
cd /www/wwwroot/node
执行
./nodebb build
开机启动(以下内容可选)
为 NodeBB 创建 systemd 服务,以便开机启动。
先新建一个叫做
nodebb
的用户和用户组并且把nodebb
目录下所有文件的所有权转移给这个用户(组)。$ sudo adduser --system --group nodebb $ sudo chown -R nodebb:nodebb /www/wwwroot/nodebb
给 NodeBB 新建一个 systemd 单元,编辑以下文件。
nano /usr/lib/systemd/system/nodebb.service
[Unit] Description=NodeBB Daemon Service After=network.target Wants=network.target [Service] Type=simple User=nodebb Group=nodebb StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodebb WorkingDirectory=/www/wwwroot/nodebb ExecStart=/usr/bin/env node loader.js Restart=always [Install] WantedBy=multi-user.target
保存并重新加载配置(保存快捷键Ctrl+X然后按Y然后回车即可)
保存修改后的nodebb.service
文件,然后加载systemd
配置并尝试启动服务systemctl daemon-reload systemctl enable nodebb systemctl start nodebb
用于宝塔面板的权限设置
由于宝塔面板的用户是
www
,而我们刚才创建的用户是nodebb,所以在宝塔操作时很可能造成无法读取www创建的文件等问题,这就是权限混乱带来的恶果啊,希望宝塔能直接出一个教程一键部署Nodebb
为了解决这个问题,我暂时先写下来我的操作,目前还在测试阶段如图所示,宝塔创建的站点默认所有者是
www
,也就是说www
用户拥有绝对的权限,而刚刚创建的nodebb用户所有权是nodebb
的,这会造成什么问题呢,就是你上传或者你修改的文件nodebb
无法读取,你也无法通过例如FTP等工具创建和修改nodebb文件夹里的文件查看nodebb用户所属的组
groups nodebb
这会显示nodebb用户所属的所有组。
将www
用户添加到nodebb
用户所在的组(假设nodebb
用户的主要组也是nodebb
)usermod -aG nodebb www
确保
/www/wwwroot/nodebb
目录的组权限正确chown -R nodebb:nodebb /www/wwwroot/nodebb chmod -R 775 /www/wwwroot/nodebb
这里
775
表示所有者和组成员都有读写执行权限,其他用户只有读取和执行权限。验证更改
ls -l /www/wwwroot/
写在最后
我嘞个去啊!!!
三天啊!!
我折腾这个B玩意整整三天啊!
期间还去nodebb.org详细询问了错误出现的原因,最终也是无解,我真是醉了。虽然逻辑通顺,但是这玩意安装起来太麻烦了,尤其对于新手来说,就是各种权限地狱!新手谨慎安装!!!!
这里所有提到的Shell命令,都是要权限支持的,如果不熟悉Linux权限的朋友,请谨慎尝试
默认安装完成的Nodebb在浏览器中使用F12打开控制台查看,是没有任何错误的,凡是安装完成后,网站页面显示和提示莫名其妙的错误,都来自于权限问题!
或者你也可以向Ai寻找答案,这里推荐阿里的通义千问大模型,非常不错)相关链接
这里给出一些比较有用的相关链接,方便大家查阅
- Nodebb官方论坛:https://community.nodebb.org/
- Nopebb官方文档:https://docs.nodebb.org/
- Nodebb基础使用与开发(语雀@藤之青):https://www.yuque.com/a632079/nodebb
- Github大佬建立的Nodebb中文文档(貌似看上去已经很久没更新了):https://github.com/NodeBB-China/nodebb-cn-docs/tree/master
-
Copyright AiINK.CN All Rights Reserved Since 2023