--- date: "2021-09-02T16:00:00+08:00" slug: "upgrade-from-gitea" sidebar_position: 100 --- # 從舊版 Gitea 升級 在升級之前,您需要做如下的準備工作。 ## 為重大變更檢查更新日誌 為了讓 Gitea 變得更好,進行重大變更是不可避免的,尤其是一些里程碑更新的發佈。 在更新前,請 [在 Gitea 部落格上閱讀更新日誌](https://blog.gitea.com/) 並檢查重大變更是否會影響你的 Gitea 實例。 ## 在控制面板中檢查過期的設定項 一些設定項可能會在後續版本中過期,你需要在控制面板中檢查他們。如果不解決過期的設定項, Gitea也許會在升級後無法重啟。你可以訪問 https://docs.gitea.com 獲得要升級的版本 對應的文件來修改你的設定文件。 ## 降級前的備份 Gitea 會保留首二位版本號相同的版本的相容性 (`a.b.x` -> `a.b.y`), 這些版本擁有相同的資料庫結構,可以自由升級或降級。 其他情況 (`a.b.?` -> `a.c.?`)下, 新版 Gitea 可能將會將資料庫升級到與舊版資料庫不同的結構。 舉個例子: | 當前 | 目標 | 結果 | | --- | --- | --- | | 1.4.0 | 1.4.1 | ✅ | | 1.4.1 | 1.4.0 | ⚠️ 不建議,後果自負!儘管資料庫結構可能不會變更,讓它可以正常工作。我們強烈建議降級前進行完全的備份。 | | 1.4.x | 1.5.y | ✅ 資料庫會被自動升級。你可以直接從 1.4.x 升級到最新的 1.5.y。 | | 1.5.y | 1.4.x | ❌ 資料庫已被升級且無法用於舊版本Gitea,使用備份來進行降級。 | **因為你不能基於升級後的資料庫運行舊版 Gitea,所以你應該在資料庫升級前完成資料備份。** 如果你在生產環境下使用 Gitea,你應該在升級前做好備份,哪怕只是小版本的補丁更新。 備份步驟: * 停止 Gitea 實例 * 備份資料庫 * 備份 Gitea 設定文件 * 備份 Gitea 在 `APP_DATA_PATH` 中的資料文件 * 備份 Gitea 的外部儲存 (例如: S3/MinIO 或被使用的其他儲存) 如果你在使用雲服務或擁有快照功能的文件系統, 最好對 Gitea 的資料盤及相關資料儲存進行一次快照。 在所有上述步驟準備妥當之後,要升級 Gitea,只需要下載新版,停止運行舊版,進行資料備份,然後運行新版就好。 每次 Gitea 實例啟動時,它都會檢查是否要進行資料庫遷移。 如果需要進行資料庫遷移,Gitea 會花一些時間完成升級然後繼續服務。 ## 從 Docker 升級 * `docker pull` 拉取 Gitea 的最新發佈版。 * 停止運行中的實例,備份資料。 * 使用 `docker` 或 `docker-compose` 啟動較新的 Gitea Docker 容器. ## 從包升級 * 停止運行中的實例,備份資料。 * 使用你的套件管理器更新 Gitea 到最新版本。 * 啟動 Gitea 實例。 ## 從二進制升級 * 下載最新的 Gitea 二進制文件到臨時文件夾中。 * 停止運行中的實例,備份資料。 * 將舊的 Gitea 二進制文件覆蓋成新的。 * 啟動 Gitea 實例。 在 Linux 系統上自動執行以上步驟的腳本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 來獲取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh). ## 小心你的自訂模板 Gitea 的模板結構與變量可能會隨着各個版本的發佈發生變化,如果你使用了自訂模板, 你得注意你的模板與你使用的 Gitea 版本的相容性。 如果自訂模板與 Gitea 版本不相容,你可能會遇到: `50x` 伺服器錯誤,頁面元素丟失或故障,莫名其妙的頁面佈局,等等… 移除或更新不相容的模板,Gitea Web 纔可以正常工作。