家庭云的创建历史。 第 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


[ 本文 专门为该网站编写的 habr.com 作者 亚历山大.
来源链接是可选的,但强烈建议提及! ]

我们检查 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] 第一个版本。

来源: habr.com