最近升級了伺服器所以也打算來更新一下我年久失修的 Nextcloud ,他的版本還停留在 24.0.1.1 ,
由於我的 Nextcloud 是使用 TrueNAS 的 Jail 來架設的,所以本篇主要以 TrueNAS 的 Jail 遷移為主。
本次的環境使用 DELL R720XD 運行 TrueNAS CORE 13.0-U5.3
前置作業
開始進行前記得先幫資料拍張快照,避免造成不可逆的損失。
使用 TrueNAS 的插件添加新的 Nextcloud,因為本次升級的版本為 27.0.2.1 所以我把名稱設為 nextcloud27
安裝完成後記下以下內容,如果忘了也可以到插件那邊找。
給新的 Nextcloud 資料添加掛載點,與舊的相同路徑。
拉取設定檔
接下來把舊的 Nextcloud 資料拉出來,使用 SSH 進入 TrueNAS ,
用 iocage list
列出當前的所有 Jail ,使用 iocage exec <舊的 nextcloud ip> tcsh
進入 Jail。
進入 Nextcloud 主目錄
1 | cd /usr/local/www/nextcloud |
備份 config.php
打印出 config/config.php
設定檔,把上面的資料複製出來。
1 | cat config/config.php |
1 |
|
在新的 config.php 設置中 passwordsalt
, secret
需與舊的完全相同
passwordsalt
: 用來增加密碼安全性的隨機字串。用來對使用者密碼進行哈希處理,以增加密碼的安全性,即使相同的密碼在不同的帳戶中也會有不同的哈希值。secret
: 用來增加安全性的隨機字串。它在多個方面被使用,例如用於生成驗證令牌、會話驗證、加密等等。
如果 passwordsalt
或 secret
值變更,使用者的密碼和會話驗證可能會失效,會導致無法正常登入 Nextcloud。
datadirectory
則為掛載的外部資料集位置。
導出資料庫
使用以下命令把 Nextcloud 的資料庫轉移出來,並使用 scp 之類的把導出的資料轉移出去。
(密碼可以在 TrueNAS 的插件那邊找到)
1 | mysqldump -u dbadmin -p nextcloud > nextcloud_backup.sql |
完成以上步驟後接下來就可以開始配置新的 Nextcloud 了。
開始配置
使用 iocage exec <新的 nextcloud ip> tcsh
進入 Jail。
進入 Nextcloud 主目錄
1 | cd /usr/local/www/nextcloud |
配置 config.php
把剛剛備份的 config.php
配置使用 vi 或 vim 進行填寫,
必須一樣的參數為 passwordsalt
, secret
,其他的則依照狀況進行修改。
(如果 vim 沒安裝則需使用 pkg install vim
進行安裝)
1 | vim config/config.php |
導入資料庫
把剛剛備份出來的 nextcloud_backup.sql
用 scp 之類的工具把他傳進來,
並使用以下命令進行導入。
1 | mysql -u dbadmin -p nextcloud < nextcloud_backup.sql |
導入完成後使用 occ 命令進行更新。
1 | occ upgrade |
如果升級時出現類似下列內容的資料庫錯誤
則須進入資料庫中將該 table 刪除。
1 | mysql -u dbadmin -p nextcloud |
使用此 SQL 指令刪除 nextcloud.oc_login_ips_aggregated table。
1 | DROP TABLE nextcloud.oc_login_ips_aggreated; |
完成後再次執行 occ upgrade
進行更新,如果有出現其他 table 有同樣問題則重複上述步驟即可。
升級完成後再使用此 occ 命令檢查資料庫是否有缺少 indexes ,如果有則會自動添加。
1 | occ db:add-missing-indices |
上述步驟完成後輸入 Nextcloud 的 IP 打開網頁就能看到升級成功了。
其他優化配置
PHP-FPM 最佳化效能
修改 /usr/local/etc/php-fpm.d/nextcloud.conf
1 | [nextcloud] |
pm.max_children
, pm.min_spare_servers
, pm.max_spare_servers
則依照自己的 Server 效能下去調整
PHP-FPM Process Calculator: https://spot13.com/pmcalculator/
詳細內容可參考此篇文章
https://blog.gtwang.org/linux/nginx-php-fpm-configuration-optimization/
其他設置可參考以下文章