>[danger] **棄用提醒:**
> *由于看云對于免費用戶的限制愈發嚴苛,本文檔已經遷移至語雀。本文檔將不做維護。*
> **語雀地址**:[https://www.yuque.com/a632079/nodebb](https://www.yuque.com/a632079/nodebb)
*****
# 更新 NodeBB
[TOC]
NodeBB 定期在 [發布版本頁面](https://github.com/NodeBB/NodeBB/releases) 中發布新版。 這些發布版包含高質量的代碼,可用于生產環境部署。
你可以使用 git 安裝指定版本的 NodeBB,以及周期性升級到新發布版。
如需獲得最新的修訂和特性,你也可以使用 `git clone` 直接從代碼庫(`master` 分支) 克隆代碼,不過這樣不能保證程序的穩定性。核心開發者會在工作環境上,驗證每次代碼提交,雖然個別特性還沒 100% 完成。
**一如既往**, NodeBB 團隊不會為,可能由于升級引起的,任何意外、數據丟失、數據損壞、或者任何壞的情況負責。所以在升級之前,請**不要忘記備份**!
>[warning] 補充: 使用 zip 包安裝的 NodeBB 的更新方法(更新路徑依舊參考 Git 方法安裝的NodeBB)。
> **雖然 Github 確實鏈接緩慢,但我們依舊不建議使用 ZIP 包安裝NodebB**
> 1. 備份 數據庫 ,config.json 和 public 目錄
> 2. 下載新版本的 zip 包,解壓縮
> 3. 將 Public 目錄替換到新的目錄中 , 把第一步備份的文件一次替換進去( 除了 config.json 選擇替換,其他都 否)
> 4. 執行 ./nodebb upgrade
> 享受新版本吧!
## 升級路徑
NodeBB 的升級路徑設計為,在不同版本之間升級是直接的。NodeBB 會提供高版本分支和低版本分支直接的升級兼容 (通過 --upgrade 標記)。例如, 如果 `v0.2.2` 是 `v0.2.x` 分支的最新版本,你可以無痛切換到 `v.0.3.x` 分支。而從 `v0.2.0` 升級到 `v0.3.x` 是不支持的,同時 NodeBB 會在你嘗試升級時,警告升級不正確。
### 在補丁版本間升級
*例如:從 `v0.1.0 `升級到 `v0.1.1`*
補丁版本包含錯誤修正和其他小的改動。需要升級到你所在小版本序列中的最新補丁版本。
執行“升級步驟”一節的第1步到第3步。
### 在小版本之間升級
*例如:從 v0.1.3 升級到 v0.2.0*
小版本包含一些新的特性和重要的改動,但會保持向后兼容。 其中可能涉及到依賴軟件包的升級,而且其他特性有可能廢棄(但是還是支持的,只會通過日志中提醒)
執行“升級步驟”一節的第1步到第4步。
## 升級步驟
>[info] 在小版本中升級后 (例如 `v0.0.4` 到 `v0.0.5`), 也有可能需要執行下面的升級步驟,以確保數據結構能正確的升級:
### 1. 關閉論壇
> 雖然可以在 NodeBB 運行時進行升級,但是很明顯不推薦這種做法,尤其是對活躍的論壇而言。
```
$ cd /path/to/nodebb
$ ./nodebb stop
```
### 2. 備份數據
>[warning]**<font style="font-size:48px;">注意:</font>**
此節并不完整,請小心并正確地備份你的文件!
#### 備份 Redis
與所有的升級一樣,第一步是 **備份你的數據**。沒人喜歡數據庫損壞/錯誤。
Redis 中,所有的數據庫數據都在` .rdb `文件中。在通常安裝的 Redis 上,主數據庫在 `/var/lib/redis/dump.rdb`。
把文件保存到安全的地方。
#### 備份 MongoDB
執行備份 MongoDB,只需要運行
```
$ mongodump
```
此命令會創建一個目錄結構的備份,而且可以通過 `mongorestore` 命令恢復備份。
推薦備份前,先關閉數據庫。在 Debian / Ubuntu, 執行命令: `sudo service mongod stop`
#### ~~備份 LevelDB~~
~~因為 LevelDB 是一些數據文件的簡單集合,只需要把數據庫復制到安全的位置,例如:~~
```
cp -r /path/to/db /path/to/backups
```
~~把文件存儲到安全的地方。~~
>[danger] 目前 NodeBB 已不再支持 LevelDB ,故刪除以上內容
#### 頭像
已上傳的圖片 (頭像) 保存在 `./public/uploads`。請備份目錄:
```
cd /path/to/nodebb/public
tar -czf ~/nodebb_assets.tar.gz ./uploads
```
### 3. 獲取最新代碼
進入 NodeBB 目錄:
```
$ cd /path/to/nodebb。
```
如果你從低版本分支升級到高版本分支,必須要切換分支。*確認你當前的分支已經更新到最新!*
例如,如果從 `v0.3.2` 升級到 `v0.4.3`:
```
$ git fetch # 從 NodeBB 代碼庫獲取最新的代碼
$ git checkout v0.4.x # 根據需要的版本輸入 v0.4.2 或者 v0.4.3 等,而不是 "v0.4.x"!
$ git merge origin/v0.4.x
```
如果不是在分支之間升級(如 `v1.5.0`到`v1.5.1`),只需要執行下面的命令:
```
$ git fetch
$ git reset --hard origin/v1.5.x # 修改 v1.5.x 為您當前所在的分支名!
```
從代碼庫獲取最新(最高)版本的 NodeBB。
或者,從 [發布頁面](https://github.com/NodeBB/NodeBB/releases) 下載 NodeBB 的最新版本,解壓并覆蓋原有文件。**不推薦此方法**。
### 4. 運行 NodeBB 升級腳本
腳本會安裝缺失的依賴軟件包,升級任何插件或主題 (如果存在新版),視情況遷移數據庫。
```
$ ./nodebb upgrade
```
**注意:**`./nodebb upgrade` 只在 v0.3.0 后可用。如果你運行的是更早的版本,可運行下面的命令:
```
npm install
ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
node app --upgrade
```
### 5. 啟動 NodeBB、測試!
你現在可以運行最新版本的 NodeBB 了。
## 升級示例
這里我們以 通過 `./nodebb` 啟動的 NodeBB 從 v1.10.x 更新至 v1.11.x 為例. (不包含備份示例)
```
$ cd /home/nodebb # 切換到 NodeBB 目錄
$ ./nodebb stop # 終止 NodeBB 程序
$ git fetch # 取回最新 commit
$ git checkout v1.11.x # 切換版本支(v1.10.x -> v1.11.x 需要, 補丁版本更新請跳過此步)
$ git reset --hard origin/v1.11.x # 重置到最新 commit
$ ./nodebb upgrade # 執行 NodeBB 升級腳本(更新數據庫結構, 更新依賴, 重新編譯文件, 記住: **不包含更新主程序)
$ ./nodebb start # 啟動 NodeBB
```
>[info] 編寫: NodeBB Development Team
維護: a632079
審核: PA Team
最后更新: 2018.12.02
- 序
- 贊助
- 導言
- 安裝
- 通過操作系統
- 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)使用說明