nextcloud-snap转成from-source的nextcloud

于 2019-04-18 发布

前提

一台装了nexcloud-snap的服务器A;一台有足够空间装下前者保存的所有文档的服务器B。

导出备份

导出数据库

在A上执行

1
nextcloud.mysqldump > my-old-nextcloud.sql

导出数据库。然后scp把这个文件发到B。

备份文件

nextcloud-snap的文件在

1
/var/snap/nextcloud/common/nextcloud/data/

里,所以用scp把这个文件夹传输到B。scp的语法:

1
scp -r local_folder remote_username@remote_ip:remote_folder  

装nextcloud

环境准备

重装A的系统,用lnmp一键包装lamp,数据库用MariaDB,PHP选7以上。然后lnmp vhost add添加原来的域名,但是不新建数据库。

接下来创建nextcloud用的数据库:

1
2
3
4
5
6
mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

然后从B把数据库备份scp回来,并且导入:

1
mysql -u root -p nextcloud < my-old-nextcloud.sql

部署nextcloud

nextcloud的最新release在这里看,一般来说下载链接应该是latest.zip。喜欢在哪个目录保存这个包没所谓,wget下来:

1
wget https://download.nextcloud.com/server/releases/latest.zip

unzip之后把nextcloud目录里的所有东西搬到_/home/wwwroot/域名_里面,记得把隐藏文件比如.htaccess带上。然后chown改一下wwwroot的所有者信息。

恢复备份

从B那里把备份的文件夹scp到网站域名下面,和nextcloud其他的文件同级,然后chown恢复一下所有者信息。

然后就可以输入网站域名打开了。一上来可能会让你新建一个管理员帐号,同时下面可以选用什么数据库,记得选MariaDB,输入对应的帐号密码和nextcloud数据库名字。管理员帐号的名字不能和迁移之前的那个一样。

因为之前导入了数据库的备份,所以可能会什么都输好了但是爆炸了,这样的话就要重新设置一次nextclouduser的密码了:

1
2
3
4
5
6
select host,user,password from mysql.user where user='nextclouduser'

set password for 'nextclouduser'@'localhost'=password('密码');

flush privileges;
exit;

就没问题了。

后遗症

  • 之前登录的所有客户端都要重新登录
  • nextcloud-snap上的app数据不会丢失但是需要从官方库重新安装一次
  • iOS、Android的客户端会疯狂尝试登录,然后被服务器屏蔽IP 30秒,所以先退出客户端的登录,然后等半分钟再重新授权就好了。

目录