三个在线编辑OFFICE解决方案

发布于:2023-04-27 ⋅ 阅读:(759) ⋅ 点赞:(0)

目录

前言

方案一

方案二

方案三


前言

后台管理系统或许有需要能在线编辑word的需求,避免了先将word下载下来编辑好了再上传的麻烦,可以说是高效办公的一种,下面两种方案是本人实践过能免费使用的方案了,如果你有更好的方案推荐欢迎评论!!!


方案一

  • OnlyOffice 

 onlyoffice应该是许多博主推荐的一套方案了,真的很方便,一个docker即可搞定,当然免费相应的会有20个连接数限制,通过实践下来这20个连接数限制指的是编辑连接数,也就是说能编辑office的连接只有20个,但查看office连接无限制,针对这个你可以做一些别的处理,比如默认走的是查看,避免想查看的用户走的是编辑而导致连接的占用!

那么我们如何解决20个连接数的限制呢? 

  • 5.4.2.46版本是最后一个支持通过修改配置文件解除连接数限制的版本,具体教程我就不贴出来了
  • 除了以上方式还有可以通过增加docker容器增加连接数该方式本人实践过了,如果说搭建一个容器有20个连接数限制,那么可以使用多个容器来增加编辑连接数,就是稍微麻烦点,不过好处是没有版本限制,使用了这个方式的话就需要自行实现管理这些连接的功能了,类似线程池这些。
  • 编译修改后的docker镜像 
    • Docker【支持移动端、6.x】
    • Docker【已添加中文字体、6.x】
    • Docker【7.x】

方案二

  • LibreOffice 

相比onlyoffice没有连接数限制,文件可以做到秒开, 但LibreOffice本身不支持在线编辑,想使用在线编辑的话需要使用基于LibreOffice的CollaboraOnline,官方提供了docker安装教程,详情请看文档说明

CollaboraOnline文档: CODE Docker image — SDK https://sdk.collaboraonline.com/ documentation

当然你也可以选择自己编译,编译的教程可参考:

Linux下编译LibreOffice在线编辑_轻舟Canoe的博客-CSDN博客

方案三

  • office online server + wopi协议 

该方案是微软提供的,所以Linux服务器就不行了,如果你是Windows server的操作系统那么你可以尝试下。方案需要部署office online server服务,链接看下方。部署好office服务后需要自行实现wopi协议,参考链接我也放下方了。 

 office online server部署:

部署 Office Online Server - Office Online Server | Microsoft Learn

wopi协议原理:

精读《WOPI协议》 - 掘金

 实现了wopi协议的开源库:

GitHub - ethendev/wopihost: office online preview and editor

在部署office online server服务的过程中想必你会了解到需要两台机器,一台是域控,一台就是部署office服务的【注意不要在该机器上有占用了80、443、809这几个端口号的服务】 。经过我的实践下来,只有在开启office服务的时候才需要域控,当office服务正常开启后把域控给关掉也没关系,office还是能正常使用,想必大部分人的情况都是只有一台服务器可用,

而且一般都是有别的web服务在开着占用了上述的端口,我是通过虚拟机来解决的,开了两台虚拟机,一台是域控,一台就是office服务的,当我把office服务开启之后就把那台域控服务关掉,避免了资源的占用又不影响office服务后续的使用。接下来有一个问题需要解决,那就是外网如何才能访问到虚拟机里的office服务,首先需要做的是把开着office服务的虚拟机端口号映射到实体机的端口号,比如虚拟机里的office服务用的是80端口,那么你就把这个80端口映射到实体机的任意一个端口上即可,比如我映射到9999端口,到这一步你可能认为外网就可以通过这个端口号访问到office服务了,但我试过了不行。我把端口映射到80端口后就成功访问了,如果你开了https那就是只能用443端口才能成功访问。通常为了解决跨域的问题都是使用Nginx的反向代理,所以把office服务映射到80端口上虽然能正常访问,但因为环境因素不得不将office的端口映射到别的端口上,接着我借助了反向代理,反复测试,功夫不负有心人,成功的访问到了office服务。配置看下方,因为访问word、excel、ppt的后缀不一样,所以是三个配置。

location /wv {
    proxy_pass http://127.0.0.1:9999;
}

location /o {
    proxy_pass http://127.0.0.1:9999;
}

location /p {
    proxy_pass http://127.0.0.1:9999;
}

实践才是检验真理的标准~ 

 👍点赞,你的认可是我创作的动力 !
🌟收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富! 

本文含有隐藏内容,请 开通VIP 后查看