准备

  • 一台Linux服务器(以CentOS 7.4为例)
  • 全程root操作

安装

安装nodejs

使用nvm安装nodejs.目前nvm最新版是v0.33.8

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

然后将nvm的目录信息写入shell的配置文件.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

重新载入配置文件.

source ~/.zshrc

安装nodejs.目前最新的稳定版是8.9.4

nvm install 8.9.4

nodejs 8.9.4 设置为默认版本.

nvm use 8.9.4

安装 pm2

npm install -g pm2

安装mongodb

创建/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

安装 mongodb 3.6

yum install -y mongodb-org

关闭selinux以及配置防火墙.这里懒得写了.然后设置开机启动.

systemctl enable mongod

启动mongodb

systemctl start mongod

配置mongodb

鉴于mongodb这个坑爹玩意默认不做鉴权,没有密码,需要设置一发密码保证数据安全.先连接到mongodb

mongo --host 127.0.0.1:27017

设置管理员密码

切换到admin

use admin

创建管理员(role:root 表示最高权限)

db.createUser({
    user:"admin",
    pwd:"这里写密码",
    roles:[{
        role:"root",
        db:"admin"
    }]
})

创建普通用户

首先创建nodebb的数据库

use nodebb

创建普通用户

db.createUser(
  {
    user: "nodebb",
    pwd: "这里写密码",
    roles: [
    	{
    		role: "readWrite",
    		db: "nodebb"
    	}
	]
  }
)

安装nodebb

克隆nodebb的代码到本地

git clone https://github.com/NodeBB/NodeBB.git

进入nodebb目录

cd nodebb

安装nodebb

./nodebb setup

根据脚本提示填入相关的信息.确认无误后启动测试.

./nodebb start

这时候,没什么问题的话,就可以直接启动了.访问地址为http://服务器ip:4567

开机启动nodebb

使用pm2守护nodebb进程.并且设置开机启动.

pm2 start app.js --watch
pm2 save
pm2 startup

安装nginx

yum install nginx

设置反向代理

以下是配置文件的反代部分.将流量转发至4567端口.

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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

关于备份

以下是一个简易的备份脚本.定时执行即可.

backup_date=$(date +"%F")       #获取日期
cd /root/backups        #切换到当前用户家目录,你可以换成你的用户目录
/usr/bin/mongodump -u nodebb -p nodebb数据库密码 --authenticationDatabase=nodebb -d nodebb  #导出数据库备份               
mkdir -p dump/${backup_date}
tar -zcvf dump/${backup_date}/${backup_date}-database.tar.gz dump/nodebb --remove-files #将导出的备份压缩打包,并以日 期命名压缩包         
tar -zcvf dump/${backup_date}/${backup_date}-file.tar.gz /data/wwwroot/NodeBB
find dump/ -mtime +3 | xargs rm -rf#检索三天前的备份压缩包,将之删除
echo $(date +"%F %H:%M:%S") Backup successfully ! >> log.backup #写入日志