手动更新
备份
更新
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
,打开网站即可看到下图,点击即可开始更新,更新会持续一段时间
或进入网站目录使用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
然后就会默认完成了下载,继续走进程.
-
版权声明:本文为原创文章,版权归Joe所有,转载请注明出处.
本文链接:https://www.j000e.com/linux/nextcloudupdate.html
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。