SHO酱的Blog

SHO酱的Blog

CentOS 编译、打包、部署、运行 kkFileView

2024-01-10
CentOS 编译、打包、部署、运行 kkFileView

起因

别问,问就是业务需要!

在此之前在 Windows 服务器上安装部署过 kkFileView 服务,其实很简单到官网的 Git 库中下载源码,用开发工具(如 IDEA)打开编译打包,再上传到服务器上配置一下就好了。

但是同样的操作,部署到 CentOS 上面就是不行,图片文件可以预览,但 PDF、DOC、DWG 等文件都不能预览。

经过反复琢磨和实验,最终发现需要直接在 CentOS 环境下对 kkFileView 源码进行编译,之后再配置启动就可以了。

问题描述就到这里,下面记录在 CentOS 下 kkFileView 的编译打包过程。

版本

CentOS 7.9

Maven 3.9.6

kkFileView 4.3.0

CentOS 安装配置 Maven

服务环境中已经安装了 Java8 SDK 环境。

Maven 官网下载 bin 文件,我这里下载的是 apache-maven-3.9.6-bin.zip

系统中进入 /usr/local 目录,下载 bin 文件压缩包并解压缩文件,进入apache-maven-3.9.6目录,配置 conf 目录下的 settings.xml 文件

> cd /usr/local
> wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.zip
> unzip apache-maven-3.9.6-bin.zip
> cd apache-maven-3.9.6
> vi conf/settings.xml

在 settings.xml 文件中添加仓库源配置和JDK版本信息。

仓库源配置

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
 </mirror> 

JDK版本信息

<profile>    
 <id>jdk-1.8</id>    
 <activation>    
   <activeByDefault>true</activeByDefault>    
   <jdk>1.8</jdk>    
 </activation>    
   <properties>    
     <maven.compiler.source>1.8</maven.compiler.source>    
     <maven.compiler.target>1.8</maven.compiler.target>    
     <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    
   </properties>    
</profile>

配置环境变量

> vi /etc/profile
# 文件中末尾追加下面的内容
MAVEN_HOME=/usr/local/apache-maven-3.9.6
export PATH=${MAVEN_HOME}/bin:${PATH}
# 重载环境变量
source /etc/profile

验证 Maven

> mvn -v

Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /usr/local/apache-maven-3.9.6
Java version: 1.8.0_144, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_144/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.el7.x86_64", arch: "amd64", family: "unix"

CentOS 编译 kkFileView

下载源码包、解压、进入代码目录

> wget https://codeload.github.com/kekingcn/kkFileView/tar.gz/refs/tags/v4.3.0 -O kkFileView-4.3.0.tar.gz
> tar -xf kkFileView-4.3.0.tar.gz
> cd kkFileView-4.3.0/server

打包

> mvn clean
> mvn package -Dmaven.test.skip=true

kkFileView 配置和启动

编译 kkFileView 之后会在 server 目录下得到一个 target 文件夹,里面有两个压缩包kkFileView-4.3.0.tar.gzkkFileView-4.3.0.zipkkFileView-4.3.0.tar.gz是 Linux 使用的,kkFileView-4.3.0.zip是 Windows 使用的。

解压 kkFileView-4.3.0.tar.gz 文件,在解压后的文件中的 config 目录中编辑 application.properties 文件。

> vi application.properties
# 编辑下面一行,设置为对应的外部网络地址
#######################################可在运行时动态配置#######################################
#提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
base.url = http://xxx.xxx.xxx.xxx:8089/preview

配置完成后,来到 bin目录下,运行 startup.sh 启动 kkFileView 服务。

启动过程中会自动运行 install.sh 来安装 Office 所用到的 LibreOffice 依赖信息。

上传并安装中文字体

在运行 kkFileView 服务后,访问中文的 word 文档是存在乱码的问题,这是因为 Linux 环境中没有中文字体的原因。

kkFileView 官方的Q&A中已经给出了解决方法:

Q:预览乱码

A:乱码问题可能有如下两个原因

字体问题

大部分Linux系统上并没有预装中文字体或字体不全,需要把常用字体拷贝到Linux服务器上,具体操作如下: 下载如下字体包 https://kkfileview.keking.cn/fonts.zip 文件解压完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效

参考

如何打包并部署Linux kkFileView? – cmdSchool

CentOS 7.6安装Maven - 掘金 (juejin.cn)

kkFileView - 在线文件预览 (keking.cn)(官方Q&A)