创建家庭云的历史。 第5部分。更新2019-PHP 7.2,MariaDB 10.4和Nextcloud 17

两年前,我发表了有关创建基于Debian 8的Web服务器并在其上启动Nextcloud 11服务的主题的系列文章。更新了Debian和Nextcloud,没有遇到任何异常或有趣的问题。 2019年底的更新已经更加有趣并且值得一读。



根据最近四篇文章的说明,本文对那些在Debian 9上“收集” Nextcloud 13的人(对于在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升级到当前版本准备Web服务器。

首先,您需要解释为什么在Web服务器端需要进行彻底的更改。 我们的服务器基于当前受支持的Debian9。您只需更新操作系统,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会更正确,但是几年来我对这项服务的可靠性非常确定,因此我想升级到最新版本并为将来的储备更新Web服务器。 因此,要升级到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个月。



Debain更新


停止Web服务器:

# service apache2 stop 

并更新:

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

更新后,您可以检查操作系统版本并进行检查重启,以确保更新后一切正常启动:

 # cat /etc/debian_version # reboot 



PHP更新到7.2版


停止Web服务器:

 # 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,由于我们将使用autoremove清除已删除软件包中的“痕迹”,因此phpmyadmin也将被删除。 这不会造成太大的困难,因为没有为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 

[ 本文是AlexanderS专为habr.com编写的。
链接到源是可选的,但是非常希望获得它的引用! ]

我们检查PHP的版本,启动Web服务器并检查Nextcloud的可操作性:

 # php -v # service apache2 start 



将MariaDB更新到版本10.4


项目网站上有一个有趣的页面 ,您需要在该页面上指示您的操作系统,其发行版本并选择数据库版本。 选择后,将生成代码以添加存储库。

停止Web服务器:

 # 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赚钱了,没有任何问题。

更新之后,我决定清理用户数据,根据统计数据,该数据占用了2 TB。 我没有太多的操作数据-版本中的大部分已被版本文件和已删除的文件占用。 我遇到的问题是,一个用户删除的数据太多(甚至不是数量,而是数量-很多小文件),导致Nextcloud无法在网络界面中显示它们。 在学习了管理指南之后,我通过命令行找到了解决方案。 也许这对某人会派上用场。

要清除用户user的已删除文件:

 # 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。
首次发布日期:2020年1月15日。
上次编辑时间:2020年1月15日。

更新日志
1.1.1 [15-01-2020]
错字校正。

1.1.0 [15-01-2020]
修复了准备nexcloud数据库以启用四字节编码的代码。

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

Source: https://habr.com/ru/post/zh-CN483842/


All Articles