如果使用 pacman -Syu 升级所有包后由于Nextcloud版本过低而出现 This version of Nextcloud is not compatible with PHP 7.2或者由于在线升级错误而出现Nextcloud无法打开使用,可以根据以下操作手动升级Nextcloud版本。

  • 备份Nextcloud数据库

  通过如下命令查询Nextcloud数据库名

mysql -u root -p -e "show databases"

  输入MariaDB/MySQL root 用户密码后可以查看所有数据库名如下

+--------------------------------------+
| Database |
+--------------------------------------+
| information_schema |
| mysql |
| nextcloud |
| performance_schema |
+--------------------------------------+

  可以看到有Nextcloud,使用 mysqldump 备份数据库,如果有自定义名称,将名称替换为自定的。

mysqldump -u root -p nextcloud > /usr/share/nginx/nextcloud.sql
  • 备份Nextcloud data和config.php

  将Nextcloud备份为Nextcloud_bak,如果默认没有修改data存储位置,即可备份全部

# Backup old nextcloud version.
cd /usr/share/nginx
mv nexcloud nexcloud_bak

  config.php 位于nextcloud/config目录下

  • 下载最新版本Nextcloud

  如果安装有wget可以通过下命令进行下载,下载缓慢时可以通过其它浏览器下载好后复制到服务器/usr/share/nginx下面

wget https://download.nextcloud.com/server/releases/nextcloud-15.0.7.zip
unzip nextcloud-15.0.7.zip

  下载后可以到如下地址下载对应MD5和GPG核对下载的文件

核对地址 https://nextcloud.com/install/#instructions-server

 

  • Nextcloud恢复备份数据

  通过如下命令恢复Data及config.php,或直接将Data目录放入其它地方后直接修改config.php的Data引用位置,以方便后续数据太多时升级。

# /usr/share/nginx
cp -rf nextcloud_bak/data nextcloud
cp -rf nextcloud_bak/config/config.php nextcloud/config/

  赋予http用户文件夹用权限

chown -R http:http nextcloud
find nextcloud/ -type d -exec chmod 750 {} \;
find nextcloud/ -type f -exec chmod 640 {} \;
  • PHP配置修改和OCC安装更新

  修改之前恢复的文件config.php里面关于Nextcloud的版本为当前下载的版本,不然更新时会提示如下错误 Exception: Updates between multiple major versions and downgrades are unsupported 修改/etc/php目录下的php.ini里如下配置,根据自己需要修改,Memory低于512M时,更新会提示The PHP memory limit is below the recommended value of 512MB

Memory Limit: 512 MB
Max Execution Time: 3600
Upload max size: 1 GB

  此时打开Nextcloud的地址就会显示更新版本,提示会有更新较大,需要花费一些时间,建议使用OCC进行升级。以命令进行升级和关闭升级后维护模式

sudo -u http php occ upgrade
sudo -u http php occ maintenance:mode --off

  此时就可以正常访问更新的Nextcloud. 关于数据库文件的恢复,如果之前没有删除或修改之前数据库,confg.php里面没有修改就可以直接使用之前版本设置的用户。如果有修改或删除还请参考如下恢复数据库 

Nextcloud官网恢复指引 https://docs.nextcloud.com/server/15/admin_manual/maintenance/restore.html

Nextcloud官网 Upgrade manually 指引 https://docs.nextcloud.com/server/15/admin_manual/maintenance/manual_upgrade.html