前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nextcloud 源码部署迁移到容器部署

Nextcloud 源码部署迁移到容器部署

作者头像
zhonger
发布2022-10-28 10:57:36
9890
发布2022-10-28 10:57:36
举报
文章被收录于专栏:仲儿的专栏

在以前我们部署 Nextcloud 都是采用 LNMPA 架构和源码来直接部署,到版本升级时一般都需要比较复杂的操作,虽然也还算比较可以接受,但是相比较 Docker 方式而言,这就显得复杂多了,而且还对宿主机的环境还有所要求。因此,今天就来尝试一下从源码部署迁移到容器部署。

备份数据

  源码部署方式需要管理员时常备份的数据主要是 Mysql 数据库、程序配置文件 config.php、存储数据三部分,而迁移到 Docker 部署也是需要这三部分即可。

  对于 Docker 方式部署来说,存储数据文件夹只需要在启动应用时挂载目录到容器应用的对应目录即可,因此无需做任何更改。

  由于配置文件 config/config.php 文件会在 Docker 应用创建是重新生成,只需保证文件中重要部分相同即可。所以只需备份数据库。

备份数据库

从 phpMyadmin 中备份

  这种方式只需要在数据库中选中导出功能,并且将 sql 文件保存到服务器本地目录即可。

从命令行备份

  这种方式需要登录服务器操作(如果开放对外访问,那也可在远程操作)。

代码语言:javascript
复制
# 服务器本地操作
mysqldump -u root -p yun > ~/yun.sql
# 文件导出到本地用户主目录

恢复数据

  默认服务器已安装 docker-ce 和 docker-compose 工具。

启动容器

  首先在 /home/ubuntu/nextcloud 目录下编写如下 docker-compose.yml 文件。

代码语言:javascript
复制
version: '2'

services:
  db:
    image: mariadb
    restart: always
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 7009:80
    links:
      - db
    volumes:
      - ./www:/var/www/html
      - /home/data/:/var/www/html/data
    restart: always

使用 docker-compose up -d 启动应用。由于数据库和应用配置尚未恢复,此时无法在浏览器上通过 http://127.0.0.1:7009 访问。

恢复数据库

代码语言:javascript
复制
# 拷贝数据库备份至容器应用中
docker cp /home/ubuntu/yun.sql nextcloud_db_1:/opt/yun.sql

# 导入数据库
mysql -u root -p
# 输入密码 nextcloud

mysql> use nextcloud;
mysql> source /opt/yun.sql

# 导入需要一段时间,稍加等待一下即可

恢复应用配置

  数据库恢复完成之后,由于应用配置尚未配置,此时访问会要求应用重新安装一次,其实已经没有再次安装的必要了。

  通过拷贝旧配置中的内容即可初始化容器应用,主要内容如下所示:

代码语言:javascript
复制
  'passwordsalt' => '一大串文本',
  'secret' => '一大串文本',
  'datadirectory' => '/var/www/html/data',
  'overwrite.cli.url' => 'http://127.0.0.1:7009',
  'dbtype' => 'mysql',
  'version' => '13.0.3.2',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'nextcloud',
  'installed' => true,
  'theme' => '',
  'loglevel' => 0,
  'maintenance' => false,

  其中主要包含数据库配置应用是否安装标志位关闭维护模式等。

  这一步完成之后,浏览器中可以正常访问到应用界面。

  不过,如果源码部署的应用版本与 Docker 镜像的应用版本不符时(通常是落后),还需要执行以下命令先升级某些插件之后才能正常访问:

代码语言:javascript
复制
docker exec -u www-data -ti nextcloud_app_1 php occ upgrade

  当升级插件完成后,就可以正常使用 Docker 部署的 Nextcloud 了。

版权声明:如无特别声明,本文版权归 仲儿的自留地 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Nextcloud 源码部署迁移到容器部署 》

本文链接:https://cloud.tencent.com/developer/article/2142944

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 备份数据
    • 备份数据库
      • 从 phpMyadmin 中备份
      • 从命令行备份
  • 恢复数据
    • 启动容器
      • 恢复数据库
        • 恢复应用配置
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档