>[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)。
![](https://box.kancloud.cn/f845c7adc5f1aa308c16ee67c7ed1c93_859x599.png)
> 可以使用 `Ctrl + Shift +Esc` 唤起任务管理器。 然后新建任务时勾选 **以系统管理权限创建此任务** (可能只有 Windows 10 或者 Windows Server 2016 支持此方法)
* 添加脚本执行权限
```powershell
$ Set-ExecutionPolicy RemoteSigned -scope CurrentUser
```
![](https://box.kancloud.cn/250bf7ca0e9d5a24e983c24c6a2ad065_859x599.png)
* 执行安装脚本
```powershell
$ iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
```
![](https://box.kancloud.cn/0ca449c2227e667c6557dd753471faa9_1102x798.png)
>[info] Scoop 支持无管理员权限下安装软件, 但是我们依旧推荐以管理员权限执行操作
* 先把 Git 以及 OpenSSH 安装下
```
$ scoop install git
$ scoop install openssh
```
![](https://box.kancloud.cn/7b936d74ca9d7dbc45b510226744c1f2_1105x802.png)
* 扩展一下, 添加仓库扩展
```
$ scoop bucket add extras
$ scoop bucket add versions
```
![](https://box.kancloud.cn/1c8560c1b4dee744449a04cd696860ce_496x142.png)
### §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
```
![](https://box.kancloud.cn/f7a9aa5f38cdb68bdc9d7b281c9bb24e_859x599.png)
> 因为我使用的是 `nodejs` 包, 所以安装的是最新 Stable 版本。 正常情况下, 您的 nodejs 版本应为 `v8.x`
### §2.Databases
#### MongoDB (推荐)
MongoDB 是一个比较优秀的 NoSQL 数据库。相比 Redis ,它更适用大型高负载的社区使用。
1. 检测是否成功生效
输入下面的指令:
```
$ mongo --version
```
不出意外,你得到的结果应该和下图类似:
![](https://box.kancloud.cn/98551fd28d6ccb7ff6ba144020e29010_859x599.png)
3. 新建下面的两个文件夹 (`D:\Mongodb` 以及 `D:\Mongodb\data`)
![](https://box.kancloud.cn/839e8250e934f703432b09c68523ab5f_798x550.png)
4. 在 PowerShell 中 输入:
```
$ mongod --dbpath 'D:\Mongodb\data' --logpath 'D:\Mongodb\Mongodb.log'
```
>[info] 因为路径中出现空格,所有我们给`dbpath`和`logpath`指定路径的时候需要加一个引号来避免字符串截断的问题。
![](https://box.kancloud.cn/7f861e846fc680ae9ebf1f29ad905a28_837x79.png)
5. 为 NodeBB 安装 配置数据库(**详细 可参考 配置MongoDB 章节**)
![](https://box.kancloud.cn/d9e633eb10379c9a4da8ae0eb3125009_983x671.png)
![](https://box.kancloud.cn/c8740857255dcfea74c54b63a876849b_983x671.png)
NaNundefined新开一个窗口, 输入
```
$ mongo
```
![](https://box.kancloud.cn/c1105f2627bd346084a0fbb2787f51c1_983x671.png)
* 创建 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` 注册为服务
![](https://box.kancloud.cn/a112c47b7d820a4013eda8dc3e03d7f5_859x599.png)
7. 启动服务
* 使用 `Win + R` 输入 `service.msc` 打开服务管理器
![](https://box.kancloud.cn/7a3b1970742e9eca2a4addcf73160184_513x272.png)
* 找到 Mongodb, 启动服务
![](https://box.kancloud.cn/c031a45a03612f1dd02d6fc8a9d4f035_1007x741.png)
验证: 是否能成功登录 (请参考 配置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`)
![](https://box.kancloud.cn/ddf9a456910a06eaf72e828bc6ad78ed_1278x670.png)
* 复制配置文件到 `D:\Redis`
> 通常您的配置文件在 `C:\Users\您当前Windows登录的账户\scoop\apps\redis\current`
在 PowerShell 中输入:
```
$ cp C:\Users\替换成您当前登录的用户名\scoop\apps\redis\current\redis.windows-service.conf D:\Redis
```
![](https://box.kancloud.cn/fe32596ba1ec08b66d38ed33f5fc9e29_983x599.png)
* 使用 Notepad ++ 修改配置, 加入下面的配置项
>[success] 嗯, 我**没有安装**怎么办? 输入`scoop install notepadplusplus`安装它
```
requirepass 替换为您的密码
rename-command FLUSHALL ""
```
![](https://box.kancloud.cn/adfdb278dcd96b454aabb744444c3392_1080x788.png)
* 我们还需要修改一下日记位置以及数据库位置
找到 `logfile`, 修改为: `D:\Redis\redis.log`
找到 `dir`, 修改为: `D:\Redis\data`
![](https://box.kancloud.cn/f395392ba870de35ba03b30e7201ff47_926x65.png)
![](https://box.kancloud.cn/be3df5c17b180c61bae0482c6066ace8_1027x200.png)
* 注册为服务
在 PowerShell 中输入:
```
$ redis-server --service-install D:\Redis\redis.windows-service.conf --loglevel verbose
```
![](https://box.kancloud.cn/fd2cce6f2031d2493852364801c5820f_983x599.png)
> 可能会卡着无响应, 稍等片刻就好。
* 配置权限
>[info] 由于 Redis 默认以 Network Service 用户注册服务, 所以在访问非程序运行的目录时会提示无权限错误
老规矩, 我们使用 `Win + R` 输入 `services.msc` 启动服务管理器。
![](https://box.kancloud.cn/4f396d3409033fdb49213947154d259e_1165x753.png)
1. 找到 `Redis`, 右键点击它, 选择 **属性**。
2. 选择 **本地系统账户**, **确认** 保存
* 启动服务
![](https://box.kancloud.cn/9c363bb5660e1d73aecab8db5feb34d6_1007x741.png)
嗯, 这是一个成功启动的示例。
![](https://box.kancloud.cn/669b6603e93bdefe70917e7e0b2ddd86_269x151.png)
### §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`)来提高连接速度。
![](https://box.kancloud.cn/a55397e93ef555cef78cc6921853fb16_983x599.png)
3. 配置 NodeBB
```
./nodebb setup
```
![](https://box.kancloud.cn/4bd9f18b8b68205de2b0b35196cfea12_983x599.png)
![](https://box.kancloud.cn/cf4ceb263d1f8ecb8b84137124eb153f_983x599.png)
![](https://box.kancloud.cn/a34517e2b7652aa847ec94dbd8915bf5_983x599.png)
![](https://box.kancloud.cn/120249ff48c6f7c82ef59ad1a0418a22_983x599.png)
4. 启动 NodeBB
```
./nodebb start
#CMD 使用: nodebb start
```
![](https://box.kancloud.cn/a3fd1fc83986316a8d48b6579086a25b_1920x1030.png)
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";
}
}
```
![](https://box.kancloud.cn/2c0dd96ca729399cbe38e0170e84bbc2_1278x670.png)
![](https://box.kancloud.cn/fe9b639ed5434b94882bba02127aaf89_1495x677.png)
2. 把 Nginx 注册成系统服务
访问 `https://github.com/kohsuke/winsw/releases` 下载 Windows service wrapper.
>[info] 64位系统下载 `WinSW.NET4.exe` 32位系统下载 `WinSW.NET2.exe`
![](https://box.kancloud.cn/90e5c94a8f69df422b8641f3c9d3538e_1832x719.png)
然后,把 `WinSW.NET*.exe` 重命名为 `mynginx.exe` 后,移到和 `nginx.exe` 同级的目录
![](https://box.kancloud.cn/799a5e30be7ba53a5bd146e550d229a9_1783x690.png)
新建一个文本文档,改名为 `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` 安装它。
![](https://box.kancloud.cn/f9ae6dd6b6bd0c3902e1bb5c7cce22f7_1636x747.png)
3. 启动 Nginx
![](https://box.kancloud.cn/fbe6911cfd35daa37239ed585e881fcb_820x600.png)
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)使用说明