>[danger] **棄用提醒:**
> *由于看云對于免費用戶的限制愈發嚴苛,本文檔已經遷移至語雀。本文檔將不做維護。*
> **語雀地址**:[https://www.yuque.com/a632079/nodebb](https://www.yuque.com/a632079/nodebb)
*****
> 服務器選用 64 位 CentOS,MongoDB 現在只有64位版本
# CentOS & MongoDB
[TOC]
## 一、準備
1. 關閉 SELinux
>[info] 有些主機商給你的 CentOS 可能不存在下面那個文件,那你可以直接跳過這步。
```
$ vim /etc/sysconfig/selinux
$ yum install vim #如果 vim 指令未安裝,那就按照它
```
找到 `SELINUX` 然后修改成 `disabled`.
```
SELINUX = disabled
```
2. 更新系統并安裝基礎工具
```
$ 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](https://github.com/creationix/nvm/) 中獲取 NVM 最新的安裝指令***
2. 添加 NVM 到環境變量
```
$ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
```
3. 使環境變量的修改生效
```
$ source ~/.bashrc
```
4. 檢查是否成功安裝
```
$ 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
```
5. 好,我們使用下面的代碼來安裝LTS版本
```
#安裝Node.js LTS
$ nvm install --lts
```
6. 等待執行完成,如果使用`node -v` ,`npm -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-4.2.repo
```
2. 把下面的內容復制進去
```
[mongodb-org-4.2]
name = MongoDB Repository
baseurl = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck = 1
enabled = 1
gpgkey = https://www.mongodb.org/static/pgp/server-4.2.asc
```
3. 更新文件,安裝
```
$ yum update
$ yum -y install mongodb-org
```
>[success] 如果您是國內服務器,那么這樣安裝 `MongoDB` 會很慢,可以將 repo 里面的鏈接換成阿里云源,
> `baseurl=https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ `
```
$ mongod --version #查看 Mongodb 版本
```
>[danger] 請檢查:**您的 MongoDB 版本是否大于或等于3.4.10**,如果不是請立即升級(以前的版本存在嚴重的安全風險)!
4. 關閉巨型頁
安裝完成后,為了消除 MongoDB 的性能警告,需要關閉 Linux 巨型頁:
```shell
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
```
5. 啟動 MongoDB 服務
```
$ service mongod start
```
### §3. NodeBB
>[info] ***在開始之前:***
>**① 提前切換成root用戶,免得麻煩。**
> **② 不要直接下載 Github 上發布的 release 壓縮包**,那里面沒有 `.git/config` 配置文件,而在安裝過程中需要讀取配置文件的值。正確的做法是使用 Git 從 GitHub 上克隆源代碼。
1. 下載 NodeBB
切換到 `/home`目錄(可替換為你想要的位置),克隆源代碼:
```
$ cd /home #切換到你想要的位置
$ git clone -b v1.13.x https://github.com/NodeBB/NodeBB.git nodebb
```
>[info] 現在,你可以使用國內的鏡像倉庫(`https://gitee.com/qiai365/NodeBB.git`)來提高連接速度。
---------------------------------
>[warning] 注意: `v1.13.x` 是最新的穩定版分支的名字,**不建議** 使用其他分支作為 **生產環境**!
2. 安裝 NodeBB 的運行依賴
```
$ cd /home/nodebb # /home替換成你上面選取的位置
```
3. 新建數據庫(詳細可查看 配置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
```
4. 初始化 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/rhel/$releasever/x86_64/
gpgcheck=0
enabled=1
```
2. 開始安裝:
```
$ yum install nginx.x86_64
```
3. 配置 Nginx
執行 `vim /etc/nginx/nginx.conf`,在 `http` 語句塊內追加上:
```nginx
##########################################
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
}
##########################################
```
4. 啟動 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` 變量了。
2. 管理 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
最后更新: 2019.12.07
- 序
- 贊助
- 導言
- 安裝
- 通過操作系統
- Windows + Mongodb/Redis
- Ubuntu/Debian + Redis/Mongodb
- CentOS + Redis
- CentOS + Mongodb
- FreeBSD/OpenBSD + Redis
- Arch Linux + Redis
- OSX + Redis
- 通過云服務
- 通過主機面板安裝
- AppNode
- CPanel
- 寶塔
- 使用
- FAQ
- 高級
- 運行 NodeBB
- 配置 Config.json
- 配置 Nginx
- 配置 MongoDB
- 更新 NodeBB
- 設置 Widgets
- 安裝 Yarn
- 更新 MongoDB
- 數據庫備份與恢復
- 重置管理員密碼
- 讓 NodeBB 支持搜索
- 優化
- 優化配置,提升NodeBB處理能力
- Google字體庫 -> 360公共前端庫
- Google字體庫 -> 中科大鏡像
- 海外VPS提升NodeBB訪問速度
- 通過 NodeBB API 自動發帖
- 開發
- 準備
- 常用方法 & 變量
- 插件制作
- 使用工具包編寫一個插件
- 主題制作
- 使用工具包編寫一個主題
- 部件制作
- 國際化
- 鉤子(hook)使用說明