我的nextcloud原来是部署在物理机上的,并且是通过宝塔直接安装的,那么他的很多依赖软件的安装就不那么好管控,比如nextcloud本身依赖的软件还有:mysql、redis、nginx等,它们的文件路径都不好找,并且宝塔部署的nextcloud现在使用不了了,问题排查过程十分复杂,所以我决定不修复了,直接将nextcloud进行迁移,使用容器的方式重新部署安装,并将原来的数据恢复过来。
经过之前gitlab的迁移,我发现服务的迁移过程大致可以分为一下几个步骤:

  1. 备份原有服务的数据(这个数据包括他的一些服务数据以及配置文件)
  2. 在新的服务器上起新的服务(起新服务的时候需要考虑版本、依赖、配置文件等等是否相同)
  3. 恢复数据(既要保证服务的可用性,还要保障原有数据不能丢失)

部署迁移过程

新起的容器都放在172.16.10.130这台服务器上

1.在服务器上起一个nextcloud的容器

我是通过docker-compose的方式启动一个新的nextcloud的容器的,yml文件如下

vim docker-compose.yaml
cat docker-compose.yaml
version: '3'
services:nextcloud:image: nextcloudcontainer_name: "nextcloud"restart: alwaysenvironment:- VERDACCIO_PORT=80ports:- "8080:80"volumes:- "/home/docker/nextcloud/nextcloud:/var/www/html/"docker-compose up -d

2.在服务器上起一个mysql的容器

在服务器上起一个mysql的容器,并且通过mysqldump命令将原来物理机上安装的mysql数据备份到容器里
起mysql的容器,由于原来物理机上使用的mysql是mariadb10.4的版本,所以新的容器上我们使用相同的版本

vim docker-compose.yaml
cat docker-compose.yaml
version: '3'
services:mysql:image: mariadb:10.4container_name: "mysql"restart: "always"environment:- VERDACCIO_PORT=3306- MYSQL_ROOT_PASSWORD=123456ports:- "3306:3306"docker-compose up -d

在原来物理机上打包原始nextcloud的用户信息数据(存放在mysql表里)

# nextcloud的数据存放在原来物理机上mysql的cloud_easy数据库中,将它打包放到一个文件夹中
sudo mysqldump -ucloud_easy -p123456 -h127.0.0.1 --databases cloud_easy >/home/xieshan/nextcloud.sql
# 将打包好的文件复制到要起容器所在的服务器上
sudo scp nextcloud.sql docker@172.16.10.130:/home/docker/mysql

在新起的mysql容器上恢复mysqldump打包的数据

# 执行恢复数据之前,需要先吧mysqldump的备份包复制到mysql容器中,并且到mysql数据库中去创建原来物理机上相应的用户跟相应的表
docker cp nextcloud.sql mysql:/tmp    #将nextcloud.sql复制到容器中的/tmp目录下
docker exec -it mysql /bin/bash    #进入到mysql容器内部
mysql -uroot -p123456    #进入到mysql数据库内部
MariaDB [(none)]> create user 'cloud_easy'@'localhost' identified by '123456';    #创建用户
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> create database cloud_easy;    #创建数据库
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> grant all on cloud_easy.* to 'cloud_easy'@'%' identified by '123456' with grant option;        #授权
Query OK, 0 rows affected (0.003 sec)        FLUSH PRIVILEGES;
MariaDB [(none)]> exit    #退出数据库,回到mysql容器内部
Byecd /tmp
mysql -ucloud_easy -p123456 cloud_easy < nextcloud.sql    #恢复数据
exit    #退出容器,回到130服务器上

在拷贝data数据之前,先去到web界面上访问172.16.10.130:8080,然后配置一个root用户,然后配置登录进去就OK了

3.将原来物理机上的存储文件拷贝到新的容器里

mysql是一个关系型数据库,里面没有存到具体的文件,而是一个键值映射,原来物理机上真正存放具体文件的目录是/data/www/cloud.easycomputation.com/data,将这个文件夹拷贝到130上nextcloud容器的/var/www/html/data下面
原来物理机上

sudo scp -r ./data root@172.16.10.130:/home/docker/nextcloud/nextcloud/

然后迁移就差不多完成了,去到web界面上访问192.168.0.130:8080,配置登录进去就算成功了

4.启动一个redis缓存容器

由于nextcloud使用起来很慢,经常卡顿,所以决定增加一个redis缓存,同样使用docker容器来部署Redis,docker部署的Redis本身是没有redis.conf文件的,所以需要自己在网上找一个redis的配置文件,然后映射进去(记得配置log的文件地址)

vim docker-compose.yaml
cat docker-comppose.yaml
version: '3'
services:redis:image: rediscontainer_name: "redis"restart: "always"environment:- VERDACCIO_PORT=6379ports:- "6379:6379"volumes:- ./redis.conf:/etc/redis.conf- ./redis.log:/var/log/redis.log- ./data:/datadocker-compose up -d

启动了redis之后再使redis和nextcloud联动起来,需要修改nextcloud的配置文件config.php

vim config.php'memcache.local' => '\\OC\\Memcache\\APCu',        #找到文件中的这一行,然后增加下面几行'memcache.locking' => '\OC\Memcache\Redis','redis' => array('host' => '172.16.10.130','port' => 6379,),docker restart nextcloud    #重启nextcloud

Nextcloud的部署迁移过程相关推荐

  1. Docker+Nextcloud快速部署个人网盘

    各位大佬好,,,萌新顾北清又回来更新了,今天要快速部署一个人网盘. 有多快呢,,,5分钟吧,因为我们使用Docker部署. Docker基础可以看看我之前的博文.(点这里点这里) 那么,,,开始吧. ...

  2. nextcloud php 部署,CentOS7环境部署Nextcloud

    CentOS7环境部署NextCloud 13 介绍:Nextcloud是一款免费开源的私有网盘软件,支持存储文件,在线预览视频.图片,支持多用户(Seafile免费版只支持到3用户),支持移动端使用 ...

  3. Linux学习——废旧电脑再利用Ubuntu部署私有云Nextcloud

    Linux学习--废旧电脑再利用Ubuntu部署私有云Nextcloud 一.引言 最近在网络上学到如何在电脑Ubuntu系统上部署私有云Nextcloud,部署完发现相当实用,可以当作自己的私有网盘 ...

  4. 树莓派是网盘?nextcloud在树莓派上的应用

    不出意外这就是 2020 年的最后一篇博客,写个好玩的东西跟大家分享一下.话接上文,我在双十二期间买了一个树莓派4 4G 内存版,还给它配了个 64G 小固态.但好几天没想好怎么用它,在使用 oneD ...

  5. Debian - 搭建NextCloud私人云盘

    nextcloud简介 nextcloud前身是大名鼎鼎的owncloud,两者均是开源的网络硬盘系统.nextcloud不仅可以搭建私有云存储和同步数据,也提供联系人.日程管理功能,web端还提供私 ...

  6. 部署next cloud

    文章目录 一.文件编写 二.nextcloud配置 三.部署出现的几个问题 一.文件编写 deployment apiVersion: apps/v1 kind: Deployment metadat ...

  7. CentOS 7 搭建Nextcloud私有网盘

    安装前准备 安装编辑等插件 yum install -y nano wget 关闭selinux nano /etc/sysconfig/selinux 重启服务器 LAMP安装 安装http服务并启 ...

  8. 家庭私有云盘系列教程-安装使用NextCloud个人云存储系统

    2019独角兽企业重金招聘Python工程师标准>>> 方案前文:建立一个家庭私有云盘方案系列教程+N2n+Nextcloud 前一篇:家庭私有云盘系列教程-建立公网服务器实现外网访 ...

  9. nextclou安装配置和优化

    nextcloud的手动安装 1.安装环境 1.1.安装Apache2 1.2.安装PHP7.4 1.3.安装MySQL8.0 1.4.安装各种配套模块 2.nextcloud的部署 2.1.next ...

最新文章

  1. 人类或起源于古菌?真假?
  2. 解决第一个div浮动,后面div覆盖的问题
  3. 【学习笔记】低代码平台(LCAP:Low-Code Application Platform)
  4. brew install php55redis,Mac下安装LNMP环境
  5. sass导入sass_如何使用Sass Mixins和Loops
  6. 万网域名注册查询接口(API)的说明
  7. aes解密算法 java_AES算法实现Java和JS互通加解密
  8. 招聘:以考试为主,面试为辅
  9. python代码转java工具_Python代码转为java代码?
  10. linux多线程调度设置
  11. IDEA安装Vue插件
  12. JAVA基础,输入/输出(I/O)流
  13. 394高校毕业设计选题
  14. 姚爱红计算机组成原理知识要点,计算机组成原理课程混合教学模式探究
  15. Mac 显示/不显示隐藏文件
  16. 在使用btest中的demo中遇到 multiple definition of 的问题!
  17. 背包问题专栏(01,完全,多重)
  18. 【npm】npm发布测试(beta)版和正式版
  19. 冠捷aoc显示器不满屏显示器上没有AUTO键解决
  20. Mysql第四天笔记03——高级查询

热门文章

  1. 学习EasyExcel实现excel文件的批量上传的笔记
  2. tis红石服务器交通系统,我的世界:TIS兄弟服务器,HIT红石服务器,满是红石高科技建筑...
  3. 论OpenVZ与KVM的区别
  4. 白话Angular词汇
  5. SyncE和1588的关系
  6. python scripts文件夹里面没有pip.exe怎么办?
  7. GBTC牛市中的天使,熊市中恶魔!
  8. LeetCode 314 周赛
  9. 【UiBot实战教程】梦想云ERP系统数据获取和填写(一)
  10. mysql 内存调整_mySQL内存及虚拟内存优化设置