先看下官方文档:kkFileView - 在线文件预览
环境要求中的JDK8如果没有的,需先安装JDK8,这里不做展示。
第二个office相关环境要求在linux中会自动下载安装,不用管。
1、下载地址
Linux 或 MacOS 版:
https://kkfileview.keking.cn/kkFileView-4.1.0.tar.gz
Windows版
https://kkfileview.keking.cn/kkFileView-4.1.0.zip
Docker 离线文件
https://kkfileview.keking.cn/kkFileView-4.1.0-docker.tar
当然也可以通过其他方式获取安装包,这里略过。
以下以linux下安装为例进行安装部署
2、解压
自行选择目录
tar -zxvf kkFileView-4.1.0.tar.gz
3、修改配置
解压后的文件,/root/kkFileView-4.1.0/config/application.properties
这里的大部分配置使用默认配置即可,也可以根据实际需求进行修改,如服务器做了端口限制,可以在这里修改kkFileView的启动端口(默认启动端口为8012)
#server.port = ${KK_SERVER_PORT:8012}
server.port = ${KK_SERVER_PORT:8107}
4、启动
/root/kkFileView-4.1.0/bin
sh ./startup.sh
顺利的话可以通过日志/root/kkFileView-4.1.0/log/kkFileView.log看到kkFileView服务已正常启动。
当然了,一般都不会正常!
5、启动遇到的问题
问题关键日志:
启动报错:kkFileView启动office组件失败,请检查office组件是否可用
详细日志:
这里详细日志的最后部分Caused by: java.lang.IllegalStateException: a process with acceptString 'socket,host=127.0.0.1,port=2001' is already running; pid 95162迷惑性很强,给人端口占用的错觉,但是实际上这里跟端口占用没关系,主要的问题是office组件问题(呵呵)。
但是前面的官方文档已经指出,Linux不需要单独安装office组件,会自动安装,那这里怎么会报错呢?
一开始我也以为是office组件问题,百度了很多都是从组件问题出发解决问题,而忽略了正确答案,我这里是通过xshell远程连接服务器进行kk服务启动,xshell弹出提示
一开始没有在意这个,以为只是xshell的提示而已,就选择了否关闭了这个弹框。后面依然是按照组件问题百度,结果一直没有解决,后面尝试按照这个弹框的提示关闭了会话属性,kkFileView服务就启动成功了。。。。有知道原因的大神解释下为什么!!!
6、Nginx代理问题
nginx代理后,图片能正常预览,但是pdf等文件预览失败
在nginx中加了以下代理:
location /kkFileView/ { proxy_pass http://ip:8107/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Content-Type $upstream_http_content_type; proxy_set_header Content-Length $upstream_http_content_length; proxy_set_header Content-Disposition $upstream_http_content_disposition; proxy_redirect off; } |
我的kk服务启动端口是8107,nginx监听端口为8106
当访问未经过nginx代理的url时,图片预览正常
http://ip:8107/onlinePreview?url=aHR0cDovLzEwLjIwLjE2LjE2Njo4MTA2L2xjbXMvZmlsZS9zZXJ2ZXIvc3RhdGljLzY3MzQ3Njc4Yjc2MDNmZWQ2YTgwNTQ4NS5qcGc%3D
当访问经过nginx代理的url时,图片预览也正常
http://ip:8106/kkFileView/onlinePreview?url=aHR0cDovLzEwLjIwLjE2LjE2Njo4MTA2L2xjbXMvZmlsZS9zZXJ2ZXIvc3RhdGljLzY3MzQ3Njc4Yjc2MDNmZWQ2YTgwNTQ4NS5qcGc%3D
但当预览pdf等其他文件时就出现了异常
当访问未经过nginx代理的url时,pdf文件预览正常
当访问经过nginx代理的url时,就出现了异常
根据我们的nginx配置,当访问http://ip:8106/kkFileView/onlinePreview?url=aHR0cDovLzEwLjIwLjE2LjE2Njo4MTA2L2xjbXMvZmlsZS9zZXJ2ZXIvc3RhdGljLzY3MzU3MWE4Yjc2MDNmZWQ2YTgwNTQ4Ni5wZGY%3D&officePreviewType=pdf&tifPreviewType=jpg&tifPreviewType=jpg(最后这里是jpg是因为kk默认将office类型文档,默认为图片,可配置为pdf(预览时也有按钮切换))时,这里应该被代理到http://ip:8107/onlinePreview?url=aHR0cDovLzEwLjIwLjE2LjE2Njo4MTA2L2xjbXMvZmlsZS9zZXJ2ZXIvc3RhdGljLzY3MzU3MWE4Yjc2MDNmZWQ2YTgwNTQ4Ni5wZGY%3D&officePreviewType=pdf&tifPreviewType=jpg&tifPreviewType=jpg但是从浏览器调试看这里被转到了80端口,这里明显出现了问题,这是因为当使用nginx代理时,也需要在kkFileView的配置中做相对应的修改
修改kk配置后重启kk服务,重新访问代理后的url即可正常预览pdf等其他文件了