背 景
为满足同事之间及给客户分享文件的目标,使用CentOS7.9搭建了一套owncloud平台,基于LNMP架构,MySQL、PHP都是源码编译安装,nginx发布,并支持https协议;
最近公司强抓网络安全、信息安全,经安全扫描,扫描到该平台存在很多安全漏洞;
包含PHP的安全漏洞、owncloud本身对用户密码、错误登录次数、密码复杂度,没有要求;
基于以上,升级PHP的麻烦,owncloud用户账号安全漏洞,想到将owncloud平台迁移至nextcloud;
为了简化安装部署的过程,这里选择适用docker部署方式,选择最新版本的nextcloud镜像,其内部封装了最新版本的php,这样就不用再手动部署php;
owncloud_v10.6.0------>nextcloud_v24.0.2
数据库继续使用CentOS主机上的MySQL;
一、创建nextcloud数据库及nextcloud用户,授权
#create database nextcloud default character set utf8mb4 collate utf8mb4_unicode_ci;
#CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'NextCloudPassword';
#GRANT ALL ON nextcloud.* TO 'nextcloud'@'%';
二、拉取nextcloud的docker镜像,创建nextcloud容器
#docker search nextcloud
#docker pull nextcloud
#mkdir -pv /data/nextCloud/data
#docker run --name nextCloud \
-p 8081:80 \
-v /data/nextCloud/data:/var/www/html/data \
--restart unless-stopped \
-d nextcloud:latest \
三、owncloud上的数据迁移至nextcloud
我也尝试过从owncloud数据库备份,恢复到nextcloud数据库上,升级失败;
经过分析nextcloud和owncloud数据库,表的数量都差很多,数据结构有很大差异,所以这种方式无法实现自动升级;
只能一个用户一个用户的数据进行迁移;
步骤:
a、先在nextcloud创建owncloud已有的用户(如果知道所有用户的密码,保持密码不变可实现客户无感知升级);
b、将owncloud的各个用户的数据目录下的文件cp到nextcloud对应的用户数据目录下;
/data/owncloud/data/user1/files -----> /data/nextcloud/data/user1/files/
/data/owncloud/data/user2/files -----> /data/nextcloud/data/user2/files/
/data/owncloud/data/user3/files -----> /data/nextcloud/data/user3/files/
c、重新扫描nextcloud的文件:
所有用户的数据cp完后;
#docker exec -u www-data nextCloud php occ files:scan --all
扫描后,就可以登录nextcloud检查验证数据的完整性了。
扫一扫关注作者公众号