当前位置:   article > 正文

Nextcloud的部署迁移过程_nextcloud迁移

nextcloud迁移

我的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: nextcloud
    container_name: "nextcloud"
    restart: always
    environment:
      - VERDACCIO_PORT=80
    ports:
      - "8080:80"
    volumes:
      - "/home/docker/nextcloud/nextcloud:/var/www/html/"
      
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

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

vim docker-compose.yaml
cat docker-compose.yaml
version: '3'
services:
  mysql:
    image: mariadb:10.4
    container_name: "mysql"
    restart: "always"
    environment:
      - VERDACCIO_PORT=3306
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - "3306:3306"
      
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在原来物理机上打包原始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
  • 1
  • 2
  • 3
  • 4

在新起的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容器内部
Bye

cd /tmp
mysql -ucloud_easy -p123456 cloud_easy < nextcloud.sql    #恢复数据
exit    #退出容器,回到130服务器上
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

在拷贝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/
  • 1

然后迁移就差不多完成了,去到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: redis
    container_name: "redis"
    restart: "always"
    environment:
      - VERDACCIO_PORT=6379
    ports:
      - "6379:6379"
    volumes:
      - ./redis.conf:/etc/redis.conf
      - ./redis.log:/var/log/redis.log
      - ./data:/data
    
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

启动了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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/216410
推荐阅读
相关标签
  

闽ICP备14008679号