前言碎语
首先非常感谢社区同仁对kkfileview项目的关注,kkfileview开源一年多以来,收获了两千六百多个赞以及获得码云最有价值项目GVP,这离不开大家的贡献和关注。同时,kkfileview的设计模式,也被其他的类似项目所抄袭,这也从侧面说明了kkfileview存在的价值。但是开源容易,维护不易,在维护kk开源社区过程中也遇到了某些低素质人的恶语相向。但是我们并没有放弃,一直坚持做开源,从kkfileview之后也陆续开源了几个优秀的项目。由于公司事务原因,后面对kkfileview的问题关注的比较少,因为kkfileview的跨语言跨平台特性,使用人群比较广泛,以至于很多人在搭建环境过程中遇到了各种问题没有得到很好的解决,深感抱歉,这也直接导致kkfileview流失了一大部分的用户。正值年假将近腾出了点时间,正好可以好好捋一捋kkfileview的系列问题。
进入正题
问题一、kkfileview项目怎么部署?
kkfileview使用java语言,底层基于spring boot框架开发,spring boot是一个为微服务而生的底层框架,项目打成jar包后自带了web 容器,服务器部署时不需要额外的tomcat容器,只需要将jar包丢到某个目录,然后执行一下脚本即可
nohup java -Dspring.profiles.active=uat -jar /home/it/file-preview/jodconverter-web-1.5.8.RELEASE.jar > /home/it/file-preview/log/app.log &
其中spring.profiles.active代表配置文件是uat的。
问题二、kkfileview依赖的外部组件主要作用是什么?
kkfileview主要依赖openoffice或者liberoffice、以及redis。openoffice主要用来转换word系列的办公文档,使其能够被浏览器直接或间接渲染,如doc、ppt会转换成pdf;excel会被转换成html。redis这里有两个作用,一是用来存储已转换过文件的文件名,用来避免重复转换提供效率。二是用来充当分布式队列,解决并发预览和有些大的文件可以提前入队转换的问题。
问题三、文件预览乱码了有哪些原因呢?
很多人反馈,我在本地运行很好,部署到服务器上后就乱码了。其实文件预览乱码问题很简单,一般有两个原因,一个是编码问题,一个是字体问题。我们先说字体问题。一般的做法是将Windows下的字体拷贝到Linux服务器上,具体操作如下:
将Windows下的C:\Windows\Fonts 目录下的文件完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效。
编码问题的话是个老生常谈的问题。因为其受运行所在主机环境的影响不确定因素比较高,常规做法是,修改配置文件中如下配置,一般都是utf-8或者gbk。还不行,就在启动脚本里设置-Dfile.encoding=UTF-8试试
server.tomcat.uri-encoding = UTF-8
converted.file.charset = GBK
问题四、本地运行起来后报文件找不到异常?
一般遇到这个异常是因为你的文件目录地址配置错误了,如下文件目录配置:
file.dir = /Users/chenkailing/test/
注意目录最后是以/结尾的
问题五、项目启动时,报错Redission is shutdown
出现这个问题一般有两个原因,原因一、redis服务本身有问题、或者redis服务有密码认证,项目没有配置密码,遇到redis带有密码认证的可在配置文件中加入如下配置
spring.redisson.password = xxx
原因二、openoffice进程未关闭。kkfileview在启动时会自动开启openoffice的转换服务进程,所以在启动kkfileview前,需要保证openoffice进程是关闭的
问题六、kkfileview部署成功后怎么接入呢?
kkfileview从设计之初就充分考虑了微服务的使用场景,以http接口提供服务实现了跨语言跨系统跨服务。要使用kkfileview预览,首先这个文件要可访问,然后就访问地址作为参数传入kkfileview接口即可,如下:
https://localhost/onlinePreview?url=http://www.xx.com/meinv.png
url后面的参数就是你要预览的文件地址,当然为了url参数接收的正确性,文件地址需要被编码
问题七、http://file.keking.cn怎么访问不了?
我们的公共体验服务开放了近一年,开放服务能够最快速直观的体验kkfileview的预览功能,这为kkfileview项目带来了不少的用户。但是因为kkfileview和公司内部的业务系统部署在一起后面考虑到直接暴露服务带来的安全问题,所以就关闭了。这里呼吁如果有闲置服务器而且愿意提供帮助的欢迎联系我一起共建kkfileview。
问题八、相同的文件类型有的可以预览有的不可以?
这个是因为文件格式的兼容性问题,从两个类别的文件来聊聊这个问题。
一个是办公文档,微软的office一直在更新,当openoffice的更新没赶上office的功能时就会出现这种预览保报错的问题。最简单的鉴别方法就是直接使用openoffice打开是否有问题,能打开基本就能预览了。
一个压缩文件,压缩包不能预览很纯粹是因为压缩包格式的兼容性问题,压缩包的格式太多了,相同的zip格式压缩包也存在各种不同的压缩格式
问题九、kkfileview怎么集成到java项目?
一般有这个问题的是大概率是还没了解kkfileview的服务模式,kkfileview不需要集成到自己的项目里面,只要独立部署好kkfileview项目本身就可以对外提供文件预览服务了。具体可以参考问题六
文末结语
以上九个问题基本囊括了kkfileview使用过程中方方面面,希望此文能够帮助更多的kkfileview使用者以及将要使用kkfileview的所有同仁。再次感谢大家的关注与支持,同时也呼吁大家一起参与进来共建项目,给我们提更多的建议,让kkfileview走的更远更好。最后打个小广告,我们凯京在开源中国的官博成立了,欢迎关注我们,一起学习一起进步。
作者简介:
陈凯玲,2016年5月加入凯京科技。曾任职高级研发和项目经理,现任凯京科技研发中心架构&运维部负责人。pmp项目管理认证拥有者,阿里云认证最有价值专家MVP。热爱开源,先后开源过多个热门项目。
关于架构&运维部
凯京研发中心架构&运维部的工作主要分两大部分,架构部分主要负责框架中间件的研究,如dubbo、apollo、skywalking、xxljob、分布式事务等、公司内开源项目(https://gitee.com/kekingcn)以及公共服务公共组件的研发维护、新技术的引进以及落地等。运维部分主要负责devops系统研发以及k8s容器环境的维护等工作。
架构组招聘
目前架构组还有两个虚位以待,欢迎志同道合的你来和我们一起交流。简历可发送至邮箱:chenkailing@keking.cn