>[danger] **棄用提醒:**
> *由于看云對于免費用戶的限制愈發嚴苛,本文檔已經遷移至語雀。本文檔將不做維護。*
> **語雀地址**:[https://www.yuque.com/a632079/nodebb](https://www.yuque.com/a632079/nodebb)
*****
# Windows
>[info] 為了您的服務器安全,僅建議 windows 7/10 以及 Windows Server 2012/2016 使用本教程!
[TOC]
## 一、準備 & 安裝
>[danger] 根據群友的報告,NodeBB 或者 NodeBB 的 依賴 在 Windows 8 環境下運行時可能會出現錯誤。所以,我們不推薦在 Windows 8 (區別于 windows 8.1) 中繼續下面的操作。當然,您也可以選擇繼續安裝。
### §1. Scoop ( windows包管理器 )
1. 安裝前請檢查環境是否到位:
* 系統: Windows 7+ / Windows Server 2003+
* PowerShell v3+ (若您的 PowerShell 版本低于低版本, 請[點擊這里](https://www.microsoft.com/zh-CN/download/details.aspx?id=40855)進行更新)
>[warning] 盡管 Scoop 支持 Windows Server 2003 & 2008 ,但這些系統不再安全了。為了您數據的安全,請將您的 Windows 服務器升級至 2012 或更高。
2. 先熟悉一下大致流程
* 打開一個 具有管理員權限的 Powershell 窗口(administrative shell)。

> 可以使用 `Ctrl + Shift +Esc` 喚起任務管理器。 然后新建任務時勾選 **以系統管理權限創建此任務** (可能只有 Windows 10 或者 Windows Server 2016 支持此方法)
* 添加腳本執行權限
```powershell
$ Set-ExecutionPolicy RemoteSigned -scope CurrentUser
```

* 執行安裝腳本
```powershell
$ iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
```

>[info] Scoop 支持無管理員權限下安裝軟件, 但是我們依舊推薦以管理員權限執行操作
* 先把 Git 以及 OpenSSH 安裝下
```
$ scoop install git
$ scoop install openssh
```

* 擴展一下, 添加倉庫擴展
```
$ scoop bucket add extras
$ scoop bucket add versions
```

### §2. 安裝 必要的工具 & 數據庫 & Node.js LTS
```
#使用 具有Admin權限的Shell
scoop install imagemagick github python27 yarn nodejs-lts
scoop install mongodb # 使用 Mongodb 作為 儲存器?
scoop install redis # 使用 Redis 作為 儲存器?
scoop install nginx # 使用 Nginx 作為反向代理軟件?
```
## 二、配置
>[info] 在開始之前: Windows7 在使用 Scoop 安裝完依賴后,可嘗試使用 PowerShell 完成下面的操作。
### §1.Node.js
* 輸入下面的指令以確認安裝:
```
$ node -v
$ npm -v
$ yarn -v
```

> 因為我使用的是 `nodejs` 包, 所以安裝的是最新 Stable 版本。 正常情況下, 您的 nodejs 版本應為 `v8.x`
### §2.Databases
#### MongoDB (推薦)
MongoDB 是一個比較優秀的 NoSQL 數據庫。相比 Redis ,它更適用大型高負載的社區使用。
1. 檢測是否成功生效
輸入下面的指令:
```
$ mongo --version
```
不出意外,你得到的結果應該和下圖類似:

3. 新建下面的兩個文件夾 (`D:\Mongodb` 以及 `D:\Mongodb\data`)

4. 在 PowerShell 中 輸入:
```
$ mongod --dbpath 'D:\Mongodb\data' --logpath 'D:\Mongodb\Mongodb.log'
```
>[info] 因為路徑中出現空格,所有我們給`dbpath`和`logpath`指定路徑的時候需要加一個引號來避免字符串截斷的問題。

5. 為 NodeBB 安裝 配置數據庫(**詳細 可參考 配置MongoDB 章節**)


NaNundefined新開一個窗口, 輸入
```
$ mongo
```

* 創建 Admin 賬戶
```
> use admin
> db.createUser( { user: "替換成你想要的Admin帳戶名", pwd: "替換成你的Admin賬戶的密碼", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
```
* 創建 NodeBB 賬戶
```
> use nodebb
> db.createUser( { user: "nodebb", pwd: "替換成你的NodeBB賬戶的密碼", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
```
如果要在NodeBB的管理控制面板(高級→數據庫)中查看數據庫統計信息,請鍵入以下命令:
```
> db.grantRolesToUser("nodebb",[{ role: "clusterMonitor", db: "admin" }])
```
* 退出數據庫
```
> exit
```
6. 注冊為服務
* 切換到之前開啟 `mongod` 的窗口, 然后輸入 `Ctrl + C` 終止進程
* 在之前的指令后面加上 `--auth --install` 注冊為服務

7. 啟動服務
* 使用 `Win + R` 輸入 `service.msc` 打開服務管理器

* 找到 Mongodb, 啟動服務

驗證: 是否能成功登錄 (請參考 配置MongoDB 章)
-----------
#### Redis
>[danger] 目前 Microsoft 不再為 Redis 提供 Windows 版本的維護。 所以不建議使用 **Redis** 到生產環境。 如果您采用此方案, 可能需要自行解決部分問題。
>您可以 **[點擊這里](https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msi)** 獲取 MSI 安裝包直接安裝 (推薦)
* 創建兩個目錄 (`D:\Redis` 以及 `D:\Redis\data`)

* 復制配置文件到 `D:\Redis`
> 通常您的配置文件在 `C:\Users\您當前Windows登錄的賬戶\scoop\apps\redis\current`
在 PowerShell 中輸入:
```
$ cp C:\Users\替換成您當前登錄的用戶名\scoop\apps\redis\current\redis.windows-service.conf D:\Redis
```

* 使用 Notepad ++ 修改配置, 加入下面的配置項
>[success] 嗯, 我**沒有安裝**怎么辦? 輸入`scoop install notepadplusplus`安裝它
```
requirepass 替換為您的密碼
rename-command FLUSHALL ""
```

* 我們還需要修改一下日記位置以及數據庫位置
找到 `logfile`, 修改為: `D:\Redis\redis.log`
找到 `dir`, 修改為: `D:\Redis\data`


* 注冊為服務
在 PowerShell 中輸入:
```
$ redis-server --service-install D:\Redis\redis.windows-service.conf --loglevel verbose
```

> 可能會卡著無響應, 稍等片刻就好。
* 配置權限
>[info] 由于 Redis 默認以 Network Service 用戶注冊服務, 所以在訪問非程序運行的目錄時會提示無權限錯誤
老規矩, 我們使用 `Win + R` 輸入 `services.msc` 啟動服務管理器。

1. 找到 `Redis`, 右鍵點擊它, 選擇 **屬性**。
2. 選擇 **本地系統賬戶**, **確認** 保存
* 啟動服務

嗯, 這是一個成功啟動的示例。

### §3. NodeBB
1. 利用 Powershell 到一個你喜歡的位置,然后克隆nodebb庫,如
```
cd D:\
git clone -b v1.13.x https://github.com/NodeBB/NodeBB.git nodebb
```
>[info] 現在,你可以使用國內的鏡像倉庫(`https://gitee.com/qiai365/NodeBB.git`)來提高連接速度。

3. 配置 NodeBB
```
./nodebb setup
```




4. 啟動 NodeBB
```
./nodebb start
#CMD 使用: nodebb start
```

Enjoy it!
### §4. Nginx (反代)
1. 配置 Nginx
首先確認你的 Nginx 版本:
```
nginx -v
```
>[info]截止 2018.08.03 從 Scoop 下載的 Nginx 版本為:`1.15.2`
然后我們進入目錄,編輯配置,把下面那段配置復制到 http 節下(需要更多配置? 請參考 配置 Nginx 篇):
```
server {
listen 80;
server_name 改成你要的域名;
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";
}
}
```


2. 把 Nginx 注冊成系統服務
訪問 `https://github.com/kohsuke/winsw/releases` 下載 Windows service wrapper.
>[info] 64位系統下載 `WinSW.NET4.exe` 32位系統下載 `WinSW.NET2.exe`

然后,把 `WinSW.NET*.exe` 重命名為 `mynginx.exe` 后,移到和 `nginx.exe` 同級的目錄

新建一個文本文檔,改名為 `mynginx.xml`,編輯它,加入下面的內容(記得替換對應的目錄):
```
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<logpath>C:\Users\a6320\scoop\apps\nginx\current</logpath>
<logmode>roll</logmode>
<depend></depend>
<executable>C:\Users\a6320\scoop\apps\nginx\current\nginx.exe</executable>
<stopexecutable>C:\Users\a6320\scoop\apps\nginx\current\nginx.exe -s stop</stopexecutable>
</service>
```
cmd(具有管理員權限) 轉移到 nginx 目錄,然后輸入 `mynginx.exe install` 安裝它。

3. 啟動 Nginx

4. 把域名解析至服務器,然后即可使用URL訪問你的 NodeBB 了。
-----------------------
>[info] 編寫: a632079
維護: 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)使用說明