手动更新
备份
更新
Trouble Shooting
更新器(updater)更新更新")

本文记录了我从放弃网页更新器转而手动更新历程中的各种坎.主要叙述手动更新过程,因为从来没有顺利的完成过一次更新期更新,服务器是国内的腾讯云,种种错误可能与网络不通有关.

手动更新

备份

手动更新我参考了官方文档Steven's Blog
1.必须阶梯升级
如果想升级至最新版本,必须阶梯升级,先从9.0升级到10.0,然后11.0,最后12.0,否则会出错。
2.备份
官方文档中要先开启maintenance模式,然后备份,我在关闭调试模式的状态下直接备份了Nextcloud data目录,config.php文件,apps目录,在后来的升级过程中没发现有问题.
官方备份文档
开启maintenance mode

$ sudo -u www-data php occ maintenance:mode --on

或编辑config/config.php"maintenance" => false改为"maintenance" => true
别忘了结束后将其改回.
备份文件夹
将Nextcloud数据库,data目录,config.php文件,apps目录直接备份,甚至可以备份整个网站目录到另外一个地方,除了cp你可以使用这个命令

rsync -avx nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/

备份数据库(搬家备份用升级不用)
注意恢复数据库之前要保证删掉所有的表,最简单的方法就是

#重建数据库(MySQL)
mysql -h [server] -u [username] -p[password] -e "DROP DATABASE nextcloud"
mysql -h [server] -u [username] -p[password] -e "CREATE DATABASE nextcloud"
#如果用UTF8
mysql -h [server] -u [username] -p[password] -e "DROP DATABASE nextcloud"
mysql -h [server] -u [username] -p[password] -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
#PostgreSQL
PGPASSWORD="password" psql -h [server] -U [username] -d nextcloud -c "DROP DATABASE \"nextcloud\";"
PGPASSWORD="password" psql -h [server] -U [username] -d nextcloud -c "CREATE DATABASE \"nextcloud\";"

导出数据库
MySQL/MariaDB

mysqldump --single-transaction -h [server] -u [username] -p[password] [db_name] > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
#还原
mysql -h [server] -u [username] -p[password] [db_name] < nextcloud-sqlbkp.bak

SQLite

sqlite3 data/owncloud.db .dump > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
#还原
rm data/owncloud.db
sqlite3 data/owncloud.db < nextcloud-sqlbkp.bak

PostgreSQL

PGPASSWORD="password" pg_dump [db_name] -h [server] -U [username] -f nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
#还原
PGPASSWORD="password" pg_restore -c -d nextcloud -h [server] -U [username]
nextcloud-sqlbkp.bak

更新

https://nextcloud.com/install/下载最新的服务器ZIP文件,国内被墙的话就电脑下好ftp传回服务器,把zip放在wwwroot下
关闭服务器lnmp stop
将网站目录改名为xxx-oldmove joooe.xyz nc-old
将zip解压unzip next cloud-[version].zip
将解压后的新文件夹名改为原网站文件夹名move nextcloud-[version] joooe.xyz
将原网站文件夹中的数据迁移到新网站目录cp 原文件 目标地址注意apps和data是文件夹用cp -r参数
对应之前官方的命令还原是

rsync -Aax nextcloud-dirbkp/ nextcloud/

完成后官方文档的步骤给新目录授权,而另一个bloger的说法是要完成更新才能授权否侧会出错,我选择先更新由于之前给wwwroot授权过所以没验证bloger的说法是否正确
官方文档的建议授权

chown -R www-data:www-data nextcloud
find nextcloud/ -type d -exec chmod 750 {} \;
find nextcloud/ -type f -exec chmod 640 {} \;

这时启动服务器lnmp start,打开网站即可看到下图,点击即可开始更新,更新会持续一段时间
up1up2
或进入网站目录使用occ命令更新cd joooe.xyz`sudo -u www-data php occ upgrade`
注意给网站目录授权chown -R www joooe.xyz
至此手动更新完成,全部功能正常,进入设置查看版本号已确定更新正确

Trouble Shooting

如果更新后文件消失,重新扫描

sudo -u www-data php console.php files:scan --all

如果更新器更新卡住,这是进程超时导致的,用以下命令停止更新进程

sudo -u www-data php occ maintenance:mode --off

然后手动更新

sudo -u www-data php occ upgrade

如果这样并没有正常运行尝试修复命令

sudo -u www-data php occ maintenance:repair

更新器(updater)更新

前提,只是记录一些网页端更新器更新时遇到的问题,没成功更新过.
正常理想状态下的更新是进入更新器后自动走完全部程序,但是我卡在了Verifying的位置,退出重进就会只显示Step 4 is currently in process. Please reload this page later,删除data/updater-xxxx/.step文件就会恢复更新器可以重试,但是多半还会卡在原来的位置,手动下载新版zip放在/data/updater-xxx/downloads/里然后编辑.step文件将原来的state”:”start”,”step”:5改为state”:”stop”,”step”:6然后就会默认完成了下载,继续走进程.

THE END
最后修改:2020 年 01 月 17 日 22 : 42
本文链接:https://www.j000e.com/Nextcloud/nextcloudupdate.html
版权声明:本文『Nextcloud更新方法及问题记录』为『Joe』原创。著作权归作者所有。
转载说明:Nextcloud更新方法及问题记录 || Joe's Blog』转载许可类型见文末右下角标识。允许规范转载时,转载文章需注明原文出处及地址。
Last modification:January 17, 2020