CentOS + Mongodb 搭建NodeBB [转载翻译]

2023-05-16

原文:https://www.kancloud.cn/a632079/nodebb-cn/372108

服务器选用 64 位 CentOS,MongoDB 现在只有64位版本

CentOS & MongoDB
一、准备
二、安装
§1. Node.js
§2. MongoDB
§3. NodeBB
§4. Nginx(反代)
三、完成
§1. 启动
§2. 高级管理
一、准备
关闭 SELinux
有些主机商给你的 CentOS 可能不存在下面那个文件,那你可以直接跳过这步。

vim/etc/sysconfig/selinux v i m / e t c / s y s c o n f i g / s e l i n u x yum install vim #如果 vim 指令未安装,那就按照它
找到 SELINUX 然后修改成 disabled.

SELINUX = disabled
更新系统并安装基础工具
yumupdate y u m u p d a t e yum -y install epel-release
yumygroupinstallDevelopmentTools y u m − y g r o u p i n s t a l l “ D e v e l o p m e n t T o o l s ” yum -y install git ImageMagick ImageMagick-devel
二、安装
§1. Node.js
nvm是一款优秀的Node.js版本管理软件,这里我们就使用它来安装 Node.js.

首先,我们现在服务器上安装 NVM

截止2018.01.25,NVM最新版本为 v0.33.8

$ sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
可以在 Github 中获取 NVM 最新的安装指令

添加 NVM 到环境变量
exportNVMDIR=" e x p o r t N V M D I R =" HOME/.nvm”
[ -s “NVM_DIR/nvm.sh" ] && . " NVM_DIR/nvm.sh" ] && . " NVM_DIR/nvm.sh” # This loads nvm
使环境变量的修改生效
source /.bashrc s o u r c e   / . b a s h r c 检 查 是 否 成 功 安 装 command -v nvm
如果没有抛出任何错误信息,那么我们继续下面的步骤吧。(如果有,请到Github中寻找解决方案。)

如果你使用的机器是国内的话,建议使用以下代码让NVM使用淘宝镜像来下载源码(腾讯云的下载速度只有可怜的1x.kb/s…)

让NVM使用淘宝源

$ export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node
$ export NVM_IOJS_ORG_MIRROR=http://npm.taobao.org/mirrors/iojs
好,我们使用下面的代码来安装LTS版本

安装Node.js LTS

$ nvm install –lts
等待执行完成,如果使用node -v ,npm -v都能正确输出版本号的话,说明nodejs已经成功安装。
在国内,NPM源的速度比较慢,可以使用sudo npm config set registry http://registry.npm.taobao.org/来将npm更换到国内的淘宝源

§2. MongoDB
配置 MongoDB yum 源
创建文件并编辑它
$ vim /etc/yum.repos.d/mongodb-org-3.6.repo
把下面的内容复制进去
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
更新文件,安装
yumupdate y u m u p d a t e yum -y install mongodb-org
如果您是国内服务器,那么这样安装 MongoDB 会很慢,可以将 repo 里面的链接换成阿里云源,
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/6/mongodb-org/stable/x86_64/

$ mongod –version #查看 Mongodb 版本
请检查:您的 MongoDB 版本是否大于或等于3.4.10,如果不是请立即升级(以前的版本存在严重的安全风险)!

关闭巨型页
安装完成后,为了消除 MongoDB 的性能警告,需要关闭 Linux 巨型页:

echonever>/sys/kernel/mm/transparenthugepage/enabled e c h o n e v e r > / s y s / k e r n e l / m m / t r a n s p a r e n t h u g e p a g e / e n a b l e d echo never > /sys/kernel/mm/transparent_hugepage/defrag
启动 MongoDB 服务
$ service mongod start
§3. NodeBB
在开始之前:
① 提前切换成root用户,免得麻烦。
② 不要直接下载 Github 上发布的 release 压缩包,那里面没有 .git/config 配置文件,而在安装过程中需要读取配置文件的值。正确的做法是使用 Git 从 GitHub 上克隆源代码。

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

cd /home #切换到你想要的位置 cd /home #切换到你想要的位置 git clone -b v1.8.x https://github.com/NodeBB/NodeBB.git nodebb
现在,你可以使用国内的镜像仓库(https://gitee.com/NodeBB-CN/NodeBB.git)来提高连接速度。

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

安装 NodeBB 的运行依赖
cd /home/nodebb # /home替换成你上面选取的位置  
新建数据库(详细可查看 配置MongoDB 篇)  
使用以下命令进入 MongoDB 的命令行管理界面:
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
servicemongodrestartNodeBB使 s e r v i c e m o n g o d r e s t a r t 初 始 化 N o d e B B 使 用 如 下 命 令 开 始 初 始 化 : ./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端口是不对外开放的!
§4. Nginx(反代)
上一步我们安装好了nodebb,但是需要通过4567端口才能访问。现在我们设置一下反代服务,支持通过域名访问网站。

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

执行vim /etc/yum.repos.d/nginx.repo 并写入以下信息:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/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 remoteaddr;proxysetheaderXForwardedFor r e m o t e a d d r ; p r o x y s e t h e a d e r X − F o r w a r d e d − F o r proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto scheme;proxysetheaderHost s c h e m e ; p r o x y s e t h e a d e r H o s t 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";
}

# 配置 502 页? 参考: 高级 - 配置 Nginx

}

#

启动 Nginx
$ service nginx start
更详细的Nginx配置,可参考 高级 - 配置Nginx 篇。

三、完成
§1. 启动
运行以下命令启动 NodeBB:

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

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

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

安装 forever
$ npm install forever -g # 这里必须加-g参数,不然可能装不上
装完后 forever 后,其可执行程序位于 Node.js 安装目录的 bin 子目录里,我们此前已经把整个 bin 目录加入 PATH 变量了。

管理 NodeBB 进程
后台启动 NodeBB:
foreverstartapp.jsNodeBB f o r e v e r s t a r t a p p . j s 停 止 N o d e B B : 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS + Mongodb 搭建NodeBB [转载翻译] 的相关文章

  • 节点 mongodb:错误:由于 parseError 连接已关闭

    使用本机 mongodb npm 包 我收到 Error connection closed due to parseError 进行非常基本的查询时 collections myCollection findOne id someID f
  • Mongoose 查询:删除“_id”属性,在结果中保留虚拟属性“id”

    我正在运行 Express js 应用程序 并且有以下设置 模型 js var schemaOptions toJSON virtuals true toObject virtuals true var modelSchema new mo
  • bdist_rpm 从 Ubuntu 到 CentOs

    我们在 Ubuntu Mac 上进行开发 并将 RPM 部署到 CentOS 这是设置 不能更改太多 问题是 当从 rpm 安装时 软件包会转到 usr local lib python2 7 dist packages 这是 Ubuntu
  • Mongoose 模型 update() 与 save()

    有一个关于问题update vs save https stackoverflow com questions 39010045 mongoose update vs save 但它针对的是一些不同的东西 我猜 纯粹相关mongoose S
  • Mongodb 聚合嵌套组以及最近更新的文档

    我已经在我的集合中指定了人员 状态 如下所示 ASSIGN ID 583f84bce58725f76b322398 SPEC ID 58411771 STATUS 1 UPDATE DATE ISODate 2016 12 21T04 10
  • Java MongoDB 获取子文档的值

    我试图从子文档中获取键的值 但我似乎无法弄清楚如何使用 BasicDBObject get 函数 因为键嵌入了两层深度 这是文档的结构 File name file 1 report name report 1 group RnD 基本上一
  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • Mongodump之后,调用MongoRestore挂起

    我们正在尝试在相对较小的数据库上做一个简单的 MongoDump 我们的步骤很简单 export 从目标机器上删除现有数据库 在目标机器上导入 MongoDump 完美执行 mongodump out root mongo prod DB
  • 获取对象数组中每个嵌套对象的虚拟属性?

    所以我知道如何获取单个虚拟属性 如 Mongoose 文档中所述 PersonSchema virtual name full get function return this name first this name last 但如果我的
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 使用填充方法在 sails mongo 中进行深层关联?

    我是 sails js 的新手 我正在使用 sails js 与 Mongodb 我在我的 sails 应用程序中使用 populate 进行深层关联时遇到问题 我有这样的关系 Category has many to many relat
  • 使用 C# 将 XML 转换为 BSON

    我想将 XML 文件转换为 BSON 然后将 BSON 导入 MongoDB 我进行了搜索 但找不到如何使用 C 来隐藏它 请向我提供使用 C 执行此操作的源代码 今天有同样的问题 这肯定不是最好的解决方案 但是 我在我的项目中以这种方式解
  • NestJs/Mongoose 中的自动递增序列

    我正在将 NodeJs 项目迁移到 NestJs 该项目使用 MongoDB 作为后端数据库 使用 Mongoose 作为 ODM 我当时用的是猫鼬序列 https github com ramiel mongoose sequence插件
  • 如何在java中使用$lookup阶段与spring data mongodb? [复制]

    这个问题在这里已经有答案了 到 Spring 的最新版本 我已经看到很多堆栈溢出问题 这表明 spring data mongodb 中不支持此操作新的 spring data mongodb 1 10 0 中是否支持此操作 db orde
  • 有没有多核利用NoSQL系统?

    我从昨天开始就开始使用 MongoDB 并且非常喜欢它 我正在尝试导入大量数据 20 亿行 并为其建立索引 但它似乎没有使用我的系统拥有的 8 个核心 并且导入以正常速率 60000 条记录 秒 进行 我只能想象索引这个集合中的两列可能需要
  • 是否有一个好的开源 MongoDB 队列 C# 驱动程序实现

    并不是说编写一个程序不够容易 或有趣 可以说 不重新发明轮子是有道理的 我已经浏览了各种尝试 但我似乎还没有遇到支持这些标准的实现 具有MongoDB持久化的简单队列OSS系统 基于 C 驱动程序 官方 如此完整的 POCO 序列化 可尾游
  • MongoRepository动态查询

    我有以下问题 假设我有以下模型对象 class Person String id String firstName String lastName Map
  • mongodb 和 pymongo 文档大小 16Mb 限制

    我正在使用 Windows 上的 showIncludes 标志和 nix 上的 H 标志来分析构建中的包含内容 我正在用 python 脚本解析这些信息 包含的每个文件都变成一个对象 列出其子文件 它包含的文件 和祖先 包含该文件的包含路
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修

随机推荐

  • FPGA USB device原型验证流程及调试手段

    device mode enable usb ACM usb serial gadget function and connect it to PC host 1 register access check if register acce
  • FPGA USB host原型验证流程及调试手段

    host mode plug in a device for test super speed device usb3 0 usb storage high speed device usb2 0 usb storage full spee
  • USB2.0 UTMI+接口

    1 UTMI The UTMI standard contains progressive levels of technology support because the complexity requirements for devic
  • cadence usb linux配置

    1 kernel config 2 dts
  • USB3.0 host xHCI驱动

    xHCI驱动在usb host中 主要初始化xHCI xHCI作为usb nbsp host部分的驱动 1 nbsp xhci driver与device的匹配 usb host xhci plat c static struct plat
  • windows PCIe 工具: TeleScan

    TeleScan PE for Windows 用户可以通过TeleScan PE来扫描系统中的PCI PCIe设备 xff0c 并提供了读写其配置空间中的寄存器的功能 download Teledyne LeCroy PCI Expres
  • intel 82574 1000M pcie 网卡 kernel driver

    0 kernel config Device Drivers gt Network device support gt Ethernet driver support gt Intel devices lt gt Intel R PRO 1
  • Windows NFS server:Winnfsd

    1 Winnfsd GitHub winnfsd winnfsd Usage WinNFSd exe id lt uid gt lt gid gt log on off pathFile lt file gt addr lt ip gt e
  • windows dhcp server

    1 tool Open DHCP Server Open Source Freeware Windows Linux MultiSubnet MultiDomain DHCP Server supports every Industry S
  • uboot环境变量保存到EMMC

    1 cmd 命令行可以用setenv printenv saveenv uboot u boot 2020 04 cmd nvedit c setenv gt do env set gt do env set gt hsearch r en
  • 安装VScode配置c/c++环境出现问题提示#include errors detected. Please update your includePath......解决办法

    文章目录 1 vscode下载安装以及c c 43 43 插件安装 2 MinGW安装3 配置环境变量4 配置几个json文件 1 vscode下载安装以及c c 43 43 插件安装 VScode下载地址 2 MinGW安装 官网下载地址
  • linux支持ipv6

    1 kernel config Networking support gt Networking options gt lt gt The IPv6 protocol gt 2 test 2 1 proc net if inet6 查看 p
  • 以太网 网线分类

    1 双绞线分类 一类线 xff1a 主要用于传输语音 xff08 一类标准主要用于八十年代初之前的电话线缆 xff09 xff0c 不同于数据传输 二类线 xff1a 传输频率为1MHZ xff0c 用于语音传输和最高传输速率4Mbps的数
  • linux pcie RC 框架

    1 linux pcie rc framework Following is a brief explanation of layers shown in the diagram There are different drivers fo
  • you-get下载bilibili视频

    you get是一个命令行工具 xff0c 可以从网络上下载视频 音频 图片等资源 https codechina csdn net mirrors soimort you get utm source 61 csdn github acc
  • gpg: 无法检查签名:没有公钥

    repo error 34 git 34 failed with exit status 1 cmd 39 git 39 39 tag 39 39 v 39 39 v1 12 16 39 stdout gt gt object 666d53
  • ARM指令中怎么判断合法立即数的方法(转载)

    在ARM汇编的数据处理指令中经常会使用到常数 xff0c 而ARM汇编中规定使用的常数必 须是立即数 ARM立即数的是由一个8位的常数循环右移偶数位得到的 xff0c 其中循环右移 的位数由一个4位2进制的两倍表示 xff0c 公式如下 i
  • 选择排序算法

    概要 本章介绍排序算法中的选择排序 目录 1 选择排序介绍 2 选择排序图文说明 3 选择排序的时间复杂度和稳定性 4 选择排序实现 4 1 选择排序C实现 4 2 选择排序C 43 43 实现 4 3 选择排序Java实现 转载请注明出处
  • 字符编码详解

    相信很多程序员在面对 字符编码 这个问题时 xff0c 都曾困扰过 xff0c 甚至头疼不已 接着之前两篇博客 xff08 二进制文件和文本文件 文本文件换行符 xff09 xff0c 本文将对 字符编码 做一个全面而细致的剖析 xff0c
  • CentOS + Mongodb 搭建NodeBB [转载翻译]

    原文 xff1a https www kancloud cn a632079 nodebb cn 372108 服务器选用 64 位 CentOS xff0c MongoDB 现在只有64位版本 CentOS amp MongoDB 一 准