家庭雲端的創建歷史。 第 5 部分:2019 年更新 – PHP 7.2、MariaDB 10.4 和 Nextcloud 17

兩年前,我發表了一系列關於創建基於Debian 8 的Web 伺服器並在其上運行Nextcloud 11 服務的文章。幾個月後,出現了一個補充內容,其中包含有關在Debian 上安裝Nextcloud 13 的“差異」訊息9. 2018年底,我只是更新了Debian和Nextcloud,並沒有遇到任何不尋常或有趣的問題。 2019年底的更新已經比較有趣了,值得寫一寫。

家庭雲端的創建歷史。 第 5 部分:2019 年更新 – PHP 7.2、MariaDB 10.4 和 Nextcloud 17

本文主要對那些根據前四篇文章的說明在 Debian 13 上「組裝」Nextcloud 9 的人有用(我向我的十幾個關於 Nextcloud 主題的訂閱者問好,特別是那些這是他們第一次接觸Linux世界)。 對於那些計劃從頭開始創建服務的人,我建議您以本系列的前四篇文章為基礎,並針對當前版本的 Debian 10 和 Nextcloud 17 進行調整。對於經驗豐富的 Linux 用戶,閱讀本文可能需要一些時間介於「瑣碎無用」和「還不錯,一站式備忘單」之間。

目錄

第 1 部分:設定日常使用的 Debian 環境
第 2 部分:建立伺服器 - 在 Debian 上設定 LAMP
第 3 部分:建立個人雲端 - 安裝和設定 Nextcloud
第 4 部分:2018 年更新 – Debian 9 和 Nextcloud 13
第 5 部分:2019 年更新 – PHP 7.2、MariaDB 10.4 和 Nextcloud 17

快速章節導航

前言
Debian 更新
將 PHP 更新到版本 7.2
將 MariaDB 升級至版本 10.4
將 Nextcloud 更新至版本 17
後記

前言

最初,我想在 Debian 10 上安裝和設定 Nginx,在其上安裝目前的 Nextcloud 17 可以沒有任何問題。但我沒有時間做這一切,所以這篇文章是一組更新說明Nextcloud從13到現在的版本17已經初步準備好了Web伺服器。

首先,我們需要解釋為什麼 Web 伺服器端需要徹底的改變。 我們的伺服器是基於目前且受支援的 Debian 9。您只需更新作業系統,Web 伺服器的所有元件都將至少收到安全性更新。 如果我們繼續使用 Nextcloud 13 或僅更新到版本 14,一切都會很棒。但是 Nextcloud 13 不再受支持,並且對第 14 版本的支援即將停止。 從版本 15 開始,Nexctcloud 將提供將資料庫轉換為 big int 以支援四位元組編碼,而對於 MariaDB 10.1,這將是一個很大的問題。 Nexctcloud 17 需要 PHP 7.1-7.3,而 Debian 9 在其本機儲存庫中僅包含版本 7.0。 就可靠性和可預測性而言,升級到倒數第二個版本的Nextcloud 會更正確,但幾年後我對這項服務的可靠性變得如此有信心,以至於我想升級到最新版本並更新為未來預留的網路伺服器。 因此,要更新至 Nexctcloud 17,最好將 MariaDB 更新至目前穩定版本 10.4,將 PHP 更新至 7.2。 確切地說是 7.2,而不是目前的 7.4。 事實上,Nextcloud 13 需要 PHP 5.6、7.0 - 7.2,Nexctcloud 17 需要 PHP 7.1 - 7.3。 使用 PHP 7.2 可以方便地減少更新工作。 無需更新您的 Apache 伺服器 - 只需安裝 Debian 支援團隊分發的安全性更新即可。 但對於 MariaDB 和 PHP 更新,您將必須連接外部儲存庫。

當我剛剛熟悉 Nextcloud 時,我「手動」更新了它:使用控制台中的特殊命令,將網站切換到維護模式,手動下載並解壓縮包含新版本網站的存檔,文件已更新並開始更新程式。 這樣的更新通常會帶來預期的結果,儘管我並不懶於製作網站、資料庫和使用者資料的備份副本。 但自動更新有時會帶來各種意外。 但那是很久以前的事了,此後引擎的穩定性大大提高,這次我專門透過Web介面進行更新。 確實,我仍然無法擺脫命令列。 在每個新版本的迭代更新過程中,控制面板中會出現各種警告和通知,需要透過在命令列上有意義地執行命令來「刪除」這些警告和通知。 您不必這樣做 - 該服務仍然可以工作。 雖然這種做法從根本上來說是錯誤的,但 Nextcloud 在這種模式下為我工作了 3 個月,然後我才有目的地處理出現的問題。

德班更新

停止網路伺服器:

# service apache2 stop


我們更新:

# apt-get update
# apt-get dist-upgrade


更新後,您可以檢查作業系統版本並進行測試重啟,以確保更新後一切正常啟動:

# cat /etc/debian_version
# reboot


將 PHP 更新到版本 7.2

停止網路伺服器:

# service apache2 stop


新增憑證和 PPA 金鑰、PHP 儲存庫:

# apt install ca-certificates apt-transport-https
# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list


當刪除舊版的 PHP 7.0 時,phpmyadmin 也會被刪除,因為我們會使用 autoremove 來清除已刪除套件的「痕跡」。 這不會造成任何特別的困難,因為沒有對 phpmyadmin 進行特殊設置,再次安裝不會有任何問題。

# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin


安裝 Nextcloud 17 所需的模組:

# apt-get install php7.2-mysql php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip php7.2-intl
# apt-get install php-memcached php-apcu php-redis php-imagick


[ 本文 專為該網站所寫的 www.habr.com 作者 亞歷山大S.
來源連結是可選的,但強烈建議提及! ]

我們檢查 PHP 版本,啟動 Web 伺服器並檢查 Nextcloud 的功能:

# php -v
# service apache2 start


將 MariaDB 升級至版本 10.4

專案網站上有 有趣的頁面,您需要在其中指明您的作業系統、其版本並選擇資料庫版本。 選擇後,將產生新增儲存庫的程式碼。

停止網路伺服器:

# service apache2 stop


新增儲存庫並更新套件:

# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.iweb.com/repo/10.4/debian stretch main'
# apt-get update


安裝 MariaDB 時,套件管理器將正確刪除先前的版本並安裝新版本,同時保留所有資料庫。 不過,當然建議對 Nextcloud 資料庫進行備份。

安裝 MariaDB 並開始更新程序:

# apt-get install mariadb-server
# mysql_upgrade u root -p


輸入密碼後,MariaDB將會更新,您可以按照以下方式進行配置 第二部分的說明:

# mysql_secure_installation


我們啟動 Web 伺服器並檢查 Nextcloud 的功能:

# service apache2 start


將 Nextcloud 更新至版本 17

要開始更新,您需要使用管理帳戶登入服務,進入設定並在管理部分開啟「常規設定」。 Nextcloud 顯示已安裝的版本和可更新的版本,可以透過按一下「開啟更新視窗」按鈕啟動。 啟動後,Nextcloud 會進行備份、下載並驗證更新檔案的完整性、開啟維護模式並更新檔案。 接下來的問題是「保持維護模式處於活動狀態」嗎? 這裡你需要小心。 積極的回應將使網站處於維護模式 - 假設管理員知道下一步該做什麼並將手動執行。 否則,Nextcloud 將自行完成所有操作,因此按一下「否」按鈕繼續。

更新是迭代執行的。 首先,Nextcloud 13.x 將更新到 14.x 分支的最新版本。 之後,您將需要再次轉到管理中心並開始更新,現在從 14.x 到 15.x。 依此類推,直到達到最後一個可能的當前版本。 每次更新後,在管理部分的「常規設定」頁面上,都會顯示遇到的建議和問題清單以及解決建議。 下面我們就來談談每次更新後需要做什麼。

直到更新

在最新版本的 Nextcloud 上,建議啟用 PHP OPcache 以提高效能。 奇怪的是,幾年前我不知何故錯過了這一點,因為 OPcache 出現在 PHP 5 中。在 /etc/php/7.2/apache2/php.ini 中,您需要取消註釋並編輯以下參數:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
pcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1


更新 13.x -> 14.x

恢復表索引:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


更新 14.x -> 15.x

我們準備nextcloud資料庫以啟用四位元組編碼:

# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit


在 Nextcloud 中啟用對四位元組編碼的支援:

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"


轉換表:

# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair


恢復遺失的表索引:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


將表格索引轉換為 bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


更新 15.x -> 16.x

恢復遺失的表索引:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


將表格索引轉換為 bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


更新 16.x -> 17.x

無需採取任何額外措施。

後記

按照這些說明,更新了具有 Nextcloud 13 的虛擬機器。使用虛擬機器可以讓您不必備份 Nextcloud 檔案及其資料庫,因為如果出現問題,您可以簡單地返回先前儲存的虛擬機器檔案並重新開始再次。 但是,這不適用於包含使用者資料的資料夾,我還建議使用 Nextcloud 與虛擬機器一起備份。 就我而言,“雲端”用作具有自動版本控制的遠端資料夾,並且同步方向“僅在那裡”,丟失這些資料對我來說並不重要 - 我只需要再次進行幾個小時的同步。 儘管我無視終生的「以防萬一」規則,但更新沒有任何問題,所有客戶都開始使用 Nextcloud 17 沒有任何問題。我印象深刻,Frank Karlitshek - 你和你的團隊做得很好工作!

更新後,我決定清除用戶數據,從統計來看,大約佔用了XNUMXTB。 我沒有那麼多操作資料——大部分卷都被版本文件和刪除的文件佔用了。 我遇到的問題是,對於一個用戶來說,刪除的資料太多(這甚至不是數量的問題,而是數量的問題 - 很多小檔案),以至於 Nextcloud 無法在 Web 介面中顯示它。 在研究了管理手冊後,我透過命令列找到了解決方案。 也許這對某人有用。

清除已刪除的使用者檔案:

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user


清除使用者版本檔案:

# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup user

返回 到開頭、到目錄.

家庭雲端的創建歷史。 第 5 部分:2019 年更新 – PHP 7.2、MariaDB 10.4 和 Nextcloud 17
文字版本:1.1.1。
首次發布日期:15.01.2020 年 XNUMX 月 XNUMX 日。
最後編輯日期:15.01.2020 年 XNUMX 月 XNUMX 日。

更新日誌1.1.1 [15-01-2020] 修正錯字。

1.1.0 [15-01-2020] 修復了 nexcloud 資料庫準備代碼以啟用四位元組編碼。

1.0.0 [15-01-2020] 第一版。

來源: www.habr.com