Discourse 如何使用命令列方式進行恢復

2021-10-10 01:35:50 字數 2230 閱讀 8245

本文主要用於說明如何從命令列工具的方式中恢復 discourse,以及我們在備份和恢復的過程中遇到的坑和解決辦法。

恢復前需要的準備工作

因為 discourse 必須使用網域名稱公共網路訪問才能完整安裝。如果你的站點比較大的話,你需要考慮這個問題。你需要考慮修改 dns 的配置,讓你的 discourse 能夠通過公共網路訪問,或者你的網域名稱將會在訪問的時候出現你 discourse 正在安裝的提示。

這部分的操作按照完整的 discourse 安裝方式進行就可以了,你不需要進行任何操作,你也不需要在安裝成功後註冊管理員賬號。

請注意安裝次數,如果你是使用 let』s encrypt 的簽名的話,你的 ca 簽名是有次數限制的。最多可以重新安裝 5 次,否則你需要再等 5 天。

除非使用自己的簽名。

discourse 可以使用混合附件儲存方式。這個方式的定義是部分附件儲存在本地,部分附件儲存在雲上,最常用的服務就是 aws 的 s3 服務。

因為這種方式,會導致在恢復的時候,可能出現資料錯誤,絕大部分情況就是因為有部分附件在本地,有部分附件在 s3 ,但是你的 discourse 已經全部使用 s3 了,這會導致在恢復的時候提示 s3 校驗失敗的情況。

在進行備份恢復之前,你需要將你的 discourse 再備份一次。通常可以直接點後台的備份按鈕。

如果你是混合儲存檔案的話,在這裡不要備份附件否則你沒有辦法恢復你的備份檔案。

ssh 到你需要恢復的伺服器上,如果你的伺服器上沒有下面的目錄的話,你需要使用下面的命令建立乙個:

mkdir -p /var/discourse/shared/standalone/backups/default

scp /path/to/backup/backup.tar.gz [email protected]:/var/discourse/shared/standalone/backups/default

引數說明:

你也可以使用 ftp 將備份上傳到指定的目錄。

我們最終的目的就是需要將你的備份檔案儲存到路徑/var/discourse/shared/standalone/backups/default中。

依次執行下面的命令,首先你需要進入你新伺服器的 discourse 安裝目錄中:

cd /var/discourse
然後通過下面的命令,進入到 discourse 已經執行的容器,下面的操作其實是針對 discourse 容器的操作。

針對 discourse 的例項,你需要啟用恢復功能,因為這個功能在安裝後的預設情況下是禁用的。

discourse enable_restore
恢復備份檔案,直接執行下面的命令進行恢復就行。在這裡只需要指定檔名就行,你不需要指定特定的路徑,因為在 discourse 容器中,缺省會到上面你儲存的檔案路徑中去找你的備份。

discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz
需要注意的是,上面的引數是示例引數,你需要根據你具體的情況替換掉備份檔案的名字。

如果你在這裡資料恢復成功的話,你將會在介面的下面看到 [success] 的提示。否則將會提示失敗,在失敗的上面將會提示你失敗的原因,你可以根據失敗的原因重新調整引數後再重試,很多時候主要是附件的原因。

退出 discourse 的容器,你可以使用命令 exit,然後你會介面中看到 bye 的容器退出提示。

然後在作業系統中的 discourse 目錄中,執行下面的命令,對 discourse 進行重構。

cd /var/discourse
下面是我們在備份恢復的時候踩過的坑和發現的問題:

在備份的時候,因為混合模式沒有辦法恢復資料。

需要修改備份方式不備份附件,只備份資料庫。

檔案許可權問題。

需要使用 sudo 方式,讓安裝程式自行確定檔案和資料夾的許可權,避免許可權不足。

備份恢復後無法傳送郵件。

開放防火牆埠,同時需要將內部配置中的允許傳送郵件的網域名稱設定乙個,然後再撤銷。

新例項安裝過多,導致無法 ca 簽名。

注意恢復次數和必要的時候使用自己的網域名稱簽名。

Discourse 如何限制註冊使用者的密碼長度

在預設的情況下 discourse 限制使用者輸入密碼的長度要超過 10 個字元。這個實在是太長了,使用者互動性不好。如何修改這個密碼長度到 6 位?你可以登入後台的管理員介面,然後搜尋關鍵字 password 你可以看到上面有 2 個選項,乙個是登入使用者的密碼,乙個是管理員的密碼。在預設情況下,...

android 如何使用命令設定heapsize

android中在涉及到需要分配大量記憶體的地方比如說影象處理,當dalvik對記憶體分配的過小會出現out of memory錯誤。可以通過重新設定dalvik堆記憶體大小以及增長限制來解決這個問題。android命令列提供setprop和getprop這兩個命令來設定android系統的一些屬性...

如何使用Git常用命令

常用命令 1.把專案從git遠端庫上轉殖到本地 git clone 遠端庫名 把本地庫中的專案上傳到git遠端庫 可以看我之前寫的一篇部落格哦 提交到本地庫並更新到遠端庫 步驟 先新增所有檔案 git add 再提交所有檔案到本地 git commit m 描述資訊 然後把本地庫更新到遠端 git ...