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

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

在原来物理机上打包原始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 [email protected]:/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容器内部
Bye

cd /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 [email protected]:/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: 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

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

扫描二维码关注公众号,回复: 15261868 查看本文章
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

猜你喜欢

转载自blog.csdn.net/weixin_43880061/article/details/128774863