美文网首页
Seafile 的 office 在线预览解决方案

Seafile 的 office 在线预览解决方案

作者: miki2miki | 来源:发表于2022-03-21 10:21 被阅读0次

此方案解决 docker-compose 方式安装的 seafile 9.0 以上的版本 office 在线预览问题

一、docker-compose 安装

参考:seafile docker-compose安装官方地址

二、office 在线预览

由于 seafile 9.0 以上对 office 在线预览采取 docker image 分离的方式,直接安装的 seafile 9.0 及以上版本是无法在线预览 office 相关文档(doc、xls、ppt等文件)。

1.下载并修改docker-compose.yml 文件

下载地址:docker-compose.yml

version: '3.0'
services:
  office-preview:
    image: seafileltd/office-preview:latest
    container_name: seafile-office-preview
    ports:
      - "8089:8089"
    command: bash start.sh
    volumes:
      - /opt/office-preview/shared:/shared  #宿主机路径可以自定义

2.启动 office 容器

docker-compose up -d

启动容器后,需要手动在宿主机添加配置文件 /opt/office-preview/shared/office_convertor_settings.py 这个文件是没有的,需要自己创建。

# -*- coding:utf-8 -*-

#和 seafile 的 seahub_settings.py 里的 SECRET_KEY 保持一致
SECRET_KEY = "o@^yktib39k+oor2_busbcxqaach_$b5zq-)4l6l39v#8ky5ta"  

WORKERS = 10                   # worker 数
OUTPUT_DIR = '/shared/output'  # 输出目录,容器内目录
PORT = 8089                    # 服务端口,容器内端口,非映射到外部的端口

添加配置后,需要重启一下 office 镜像,使 office_convertor_settings.py 配置文件生效。

docker restart  seafile-office-preview

3.修改 Seafile 的 seahub_settings.py 配置文件

进入seafile容器内。

docker exec -it seafile /bin/bash

在 conf/seahub_settings.py 添加下列配置以便调用 Office 预览服务。

OFFICE_CONVERTOR_ROOT = 'http://officepreview容器IP:8089'

4.重启 seafile 容器

docker restart seafile

参考官方解决方案

三.问题注意★★★

官方给的解决方案解决的是 seafile 直接安装的模式,docker-compose 安装的方式要想达到在线预览office需要额外做些处理。

1.seafile 容器与 seafile-office-preview 容器通信问题

官方文档给出的同信配置为:

OFFICE_CONVERTOR_ROOT = 'http://127.0.0.1:8089'

即本地回环地址,配置后只能在 seafile 容器内通信,而不是宿主,无法和 seafile-office-preview 通信。

那么,可以根据seafile 的 docker-compose 方式,使用相同网络配置 seafile-office-preview 的 docker-compose.yml 达到 seafile 与 seafile-office-preview 使用相同的 docker network。

version: '3.0'
services:
  office-preview:
    image: seafileltd/office-preview:latest
    container_name: seafile-office-preview
    ports:
      - "8089:8089"
    command: bash start.sh
    volumes:
      - /opt/office-preview/shared:/shared  ##宿主机路径可以自定义
    networks:           #配置容器的 docker network 
      - networkname     #和 seafile 使用相同的 docker network 名称
    restart: always

networks:
  networkname:
    external: true     #表示已经存在,不需要创建,直接使用已有的 docker network,建议seafile 也使用此方式,可以方便自定义docker网络。

使用该 docker-compose.yml 布置启动容器后,使用 docker inspect docker_network_name 命令查看 seafile-office-preview 容器 网络信息。

ubuntu@test:~$ sudo docker inspect myseafilenet
[
    {
        "Name": "myseafilenet",
.....................................

            "c1c51263eec7b51c53faa7d42f038ba4fe1d1b17e363b8666a040c7fc0998ed7": {
                "Name": "seafile",
                .................................
                "IPv4Address": "192.168.12.5/24",
                .................................
            },
            "4d6472a627f4f8377de0ebd28a4443a73eae6b053b08be2b4ae727520e83a699": {
                "Name": "seafile-office-preview",
                .......................................
                "IPv4Address": "192.168.12.4/24",
                .......................................
            },
...................................
]

查看信息可以看到,seafile 容器的地址为 192.168.12.5 ,seafile-office-preview 容器的地址为 192.168.12.4 。可以修改 seafile 容器下的 seahub_settings.py文件文件转换信息如下:

OFFICE_CONVERTOR_ROOT = 'http://192.168.12.4:8089'

重启 seafile 即可正常预览 office了。

2.配置好 seafile 上传下载地址

在研究 seafile 的 office 在线预览时,仅是布置了 seafile 的 初始环境,导致 office 预览文件转换出错,查看log 发现,office 需要使用 seafile 的上传下载地址。所以需要配置完 seafile 上传下载地址正常后,在配置 seafile-office-preview 相关信息。

相关文章

网友评论

      本文标题:Seafile 的 office 在线预览解决方案

      本文链接:https://www.haomeiwen.com/subject/hlizdrtx.html