KkFileView4.1.0部署文档--linux

先看下官方文档: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等其他文件了。

ps补充=============

直接关闭xshell弹窗与设置X11转发执行结果不同,后面我问了通义千问,以下是千问的回答:

问:在xshell执行启动脚本时,xshell会弹出提示:需要Xmanger软件来处理X11转发请求。。。我直接关闭这个弹框就会启动报错,当我按照弹框提示关闭隧道页面中的X11转发选项就可以正常执行,难道xshell的弹框及X11转发选项会影响远程脚本的执行?

答:

是的,XShell 的 X11 转发选项确实会影响远程脚本的执行,特别是当涉及到图形界面应用程序时。在这种情况下,soffice 尝试启动时可能会请求 X11 转发,而如果没有正确配置 X11 转发,会导致启动失败。

解释

  1. X11 转发

    • X11 转发允许远程服务器上的图形应用程序在本地机器上显示其图形界面。
    • 当 X11 转发启用时,XShell 会尝试通过 X11 转发协议将图形界面数据传输到本地机器。
    • 如果远程应用程序不需要图形界面(如 soffice --headless),但仍然请求 X11 转发,可能会导致启动失败或出现错误提示。
  2. 关闭 X11 转发

    • 关闭 X11 转发可以避免不必要的图形界面请求,从而确保命令行应用程序正常运行。

解决方案

  1. 关闭 X11 转发

    • 在 XShell 中,关闭 X11 转发选项。
    • 具体步骤如下:
      1. 打开 XShell。
      2. 选择您的会话,右键点击并选择“属性”。
      3. 在“属性”窗口中,导航到“隧道”选项卡。
      4. 取消选中“X11 转发”复选框。
      5. 点击“确定”保存更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17242.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[论文笔记]An LLM Compiler for Parallel Function Calling

引言 今天带来一篇优化函数调用的论文笔记——An LLM Compiler for Parallel Function Calling。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 当前的函数(工具)调用方法通常需要对每个函数进行顺序推理和操作&…

基于JAVA的资源检索系统(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

展望:多模态融合与marker推断

技术进步使得利用高维、高通量、多尺度的生物医学数据从多个角度研究患者和疾病成为可能。在肿瘤学中,正在生成大量数据,从分子、组织病理学到临床记录。深度学习的引入极大地促进了生物医学数据的分析。然而,大多数方法都侧重于单一模态&…

AI在电商平台中的创新应用:提升销售效率与用户体验的数字化转型

1. 引言 AI技术在电商平台的应用已不仅仅停留在基础的数据分析和自动化推荐上。随着人工智能的迅速发展,越来越多的电商平台开始将AI技术深度融合到用户体验、定价策略、供应链优化、客户服务等核心业务中,从而显著提升运营效率和用户满意度。在这篇文章…

基于Java Springboot餐厅点餐系统(加入商家版)

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库:MySQL5.7…

NeRF在农业领域的应用-------------(1)

一、Exploring Accurate 3D Phenotyping in Greenhouse through Neural Radiance Fields(通过神经辐射场探索温室中精确的三维表型分析) 1.摘要 在精准农业中,准确收集植物表型对于优化可持续农业实践至关重要。 在受控实验室环境中进行的传…

pico-sdk(零)

pico-sdk(零) 项目概述license相关文档 依赖三方库链接 项目概述 Raspberry Pi Pico SDK(以下简称 SDK)提供了为 RP 系列微控制器设备(如 Raspberry Pi Pico 或 Raspberry Pi Pico 2)编写 C、C 或汇编语言…

基于java+SpringBoot+Vue的视频网站系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

vue注册全局组件,其他地方可以直接方便的调用

文章目录 问题注册全局组件完结 问题 本来我们想使用某个组件,需要在各个地方引入对应的参数,并配置好components内容,才可以使用 但是随着用的越来越多,这种方法变得重复且易出错 注册全局组件 修改main.js文件,放…

javaScript交互补充(元素的三大系列)

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等 获得元素距离带有定位祖先元素的位置获得元素自身的大小(宽度高度)注意:返回的数值都不…

基于SSM的特色美食推荐平台+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、店铺管理、美食类型、美食收录管理、论坛交流管理等)、普通用户(登录注册、论坛交流、信息查看、美食收藏、美食资讯等)技术栈&#xff1…

【javascript从零单排】变量let、var、const

🌈"It always seems impossible until it’s done." — Nelson Mandela 种一棵树最好是机会是十年前,其次是现在。 📗概念 在 JavaScript 中,变量是用于存储数据值的容器。可以使用变量来保存不同类型的数据&#xff0…

Marp for VScode插件 PPT无法预览的问题

优质好文:https://blog.csdn.net/lyuhaochina/article/details/141527208 这是因为很多人在VScode中安装markdown插件时都会安装插件Markdown Preview Enhanced,这个插件会和Marp插件的预览功能产生冲突,导致用Marp插件做的PPT无法预览 找到设置选项Markdown-previe…

响应时间指标的探索

响应时间指标的探索 最近又看到响应时间的一些讨论,就顺着这个响应时间的一些资料整理了如下内容 1968年 目前能够追溯的最早定义响应时间的文章应该是Rober B.Miller于1968年在AFIPS 68 (Fall, part I): Proceedings of the December 9-11, 1968, fall joint comp…

VRT: 关于视频修复的模型

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月15日14点34分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

从基础到进阶,Dockerfile 如何使用环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是 Dockerfile 环境变量?🔖1. `ENV` 指令🔖2. `ARG` 指令🔖语法:🔖使用 `ARG` 的例子:📝 如何使用环境变量提高 Dockerfile 的灵活性🔖1. 动态配置环境🔖2. 配置不同的运行环境🔖3. 多…

使用AI制作视频的一些感受

浦饭幽助真人灵丸 大家好,我是阿赵。 最近我开始用各种AI软件来制作一些视频,比如上次介绍的3D打印的黑龙波飞影的视频,就用了AI生成语音,还有一些换脸的视频。然后再比如上面这个浦饭幽助从漫画变成真人,然后再做出发…

从0开始创建Django项目-基础篇

文章目录 1、安装Django2、创建项目3、默认项目的介绍4、APP5、快速上手5.1 写一个页面5.2 templates模板5.3 静态文件5.3.1 static目录5.3.2 引用静态文件 6、模板语法7、请求和响应8、数据库操作8.1 安装第三方模块8.2 ORM8.3 案例:用户管理 1、安装Django pip install djan…

网络设备 - 这个有点难!

Linux 内核中的网络设备是整个网络通信的核心,它将硬件接口与内核的网络栈连接起来。对于许多初、中级学者而言,理解 Linux 网络设备的概念和工作机制可能显得复杂,但一旦掌握了这些内容,就能更深入地理解内核中的网络操作原理。本…

电商行业财一体化实施案例:如何通过对接实现多组织结算

电商行业财一体化实施案例:如何通过对接实现多组织结算 项目概述: 一家电子商务有限公司,专注于整合线上线下销售渠道,主营业务涵盖化妆品、日用品、乳制品、保健食品等产品的批发与零售。 公司背景与特色 主营业务&#xff1a…