在非 docker 部署的环境下,如果通过 Web 端升级频繁出错,那么可以试试通过命令行手动升级。
- 有条件的话尽量先备份,包括数据目录、
config.php
配置文件、数据库等;
- 在 https://download.nextcloud.com/server/releases/ 下载最新的稳定版;
- 停止 Web 服务器,例如 Apache2、Nginx 等;
- 如果使用 cron 做定时任务的话,先暂停:
sudo crontab -u www-data -e
然后注释掉相关行;
- 如果通过挂载方式配置了数据目录,先解除挂载:
sudo umount nextcloud/data
;
- 把原先的 nextcloud 目录重命名为 nextcloud-old;
- 把公共下载的最新安装包解压,这会创建一个新的 nextcloud 目录;
- 把
nextcloud-old
中 config
目录下的所有文件复制到新的 nextcloud 目录中;
- 把旧
nextcloud-old
目录中的 custom-apps
和 themes
目录复制到新的 nextcloud 目录中;
- 创建目录
nextcloud/data
;
- 如果你没有额外指定 data 目录或者挂载 data 目录,那么请把旧 data 中的数据全部复制到新的 nextcloud 目录中;
- 确认所有文件的权限:
sudo chown -R www-data:www-data nextcloud
sudo find nextcloud/ -type d -exec chmod 750 {} \;
sudo find nextcloud/ -type f -exec chmod 640 {} \;
- 如果通过挂载方式配置了数据目录,请重新挂载;
- 在 nextcloud 目录中执行:
sudo -u www-data php occ upgrade
;
- 重启 Web 服务器
- 重新启用步骤 4 中的 cron 任务;
注意事项:
- 由于浏览器和 Web 服务器可能有缓存,下次打开的时候可能缺失 css 文件等,请多刷新几次。