Skip to content

Latest commit

 

History

History
295 lines (236 loc) · 8.69 KB

CentOS-Mongodb.md

File metadata and controls

295 lines (236 loc) · 8.69 KB

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

CentOS & MongoDB

[TOC]

一、准备

  1. 关闭 SELinux

[info] 有些主机商给你的 CentOS 可能不存在下面那个文件,那你可以直接跳过这步。

$ vim /etc/sysconfig/selinux
$ yum install vim #如果 vim 指令未安装,那就按照它

找到 SELINUX 然后修改成 disabled.

SELINUX = disabled
  1. 更新系统并安装基础工具
$ yum update
$ yum -y install epel-release
$ yum -y groupinstall "Development Tools"
$ yum -y install git ImageMagick ImageMagick-devel

二、安装

§1. Node.js

[info] nvm是一款优秀的Node.js版本管理软件,这里我们就使用它来安装 Node.js.

  1. 首先,我们现在服务器上安装 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 最新的安装指令

  1. 添加 NVM 到环境变量
$ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
  1. 使环境变量的修改生效
$ source ~/.bashrc
  1. 检查是否成功安装
$ command -v nvm

如果没有抛出任何错误信息,那么我们继续下面的步骤吧。(如果有,请到Github中寻找解决方案。)


[info] 如果你使用的机器是国内的话,建议使用以下代码让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
  1. 好,我们使用下面的代码来安装LTS版本
#安装Node.js LTS
$ nvm install --lts
  1. 等待执行完成,如果使用node -vnpm -v都能正确输出版本号的话,说明nodejs已经成功安装。

[info] 在国内,NPM源的速度比较慢,可以使用sudo npm config set registry http://registry.npm.taobao.org/来将npm更换到国内的淘宝源

§2. MongoDB

  • 配置 MongoDB yum 源
  1. 创建文件并编辑它
$ vim /etc/yum.repos.d/mongodb-org-3.6.repo
  1. 把下面的内容复制进去
[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
  1. 更新文件,安装
$ yum update
$ yum -y install mongodb-org

[success] 如果您是国内服务器,那么这样安装 MongoDB 会很慢,可以将 repo 里面的链接换成阿里云源, baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/6/mongodb-org/stable/x86_64/

$ mongod --version #查看 Mongodb 版本

[danger] 请检查:您的 MongoDB 版本是否大于或等于3.4.10,如果不是请立即升级(以前的版本存在严重的安全风险)!

  1. 关闭巨型页

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

$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
  1. 启动 MongoDB 服务
$ service mongod start

§3. NodeBB

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

  1. 下载 NodeBB

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

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

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


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

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

[danger] 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
  1. 初始化 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端口是不对外开放的!

§4. Nginx(反代)

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

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

  1. 执行vim /etc/yum.repos.d/nginx.repo 并写入以下信息:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/x86_64/
gpgcheck=0
enabled=1
  1. 开始安装:
$ yum install nginx.x86_64
  1. 配置 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";
    }
    
    # 配置 502 页? 参考: 高级 - 配置 Nginx
}
##########################################
  1. 启动 Nginx
$ service nginx start

更详细的Nginx配置,可参考 高级 - 配置Nginx 篇。

三、完成

§1. 启动

运行以下命令启动 NodeBB:

$ ./nodebb start

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

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

§2. 高级管理

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

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

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

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

参考:

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

[info] 编写: hao-lee 维护: a632079 审核: PA Team 最后更新: 2018.05.05