第一次接触kkFileView这个开源文件预览项目时,我被它的功能吸引住了。它能直接在线预览Office、PDF、图片甚至CAD文件,完全不需要在本地安装任何软件。不过从源码开始构建确实遇到不少坑,这里把我的完整搭建过程记录下来,希望能帮到同样想自己部署的朋友。
首先需要准备开发环境。我用的是一台16G内存的MacBook Pro,但实际上只要满足以下条件就行:
源码获取有两种方式:
我选择了第二种方式,执行以下命令克隆代码:
bash复制git clone https://gitee.com/kekingcn/file-online-preview.git
这里有个小技巧:建议在克隆时指定--depth=1参数,可以大幅减少下载时间,因为我们不需要完整的提交历史。克隆完成后,用IDEA打开项目时,记得选择"Open as Maven Project",这样IDEA会自动识别pom.xml。
项目导入IDEA后,第一次构建很可能会卡在aspose-cad这个依赖上。这是因为这个jar包不在公共仓库,需要手动处理。我试过好几种方案,最终这个最靠谱:
xml复制<dependency>
<groupId>com.aspose.cad</groupId>
<artifactId>aspose-cad</artifactId>
<version>23.7</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/aspose-cad-23.7.jar</systemPath>
</dependency>
默认打包会生成Linux和Windows两个版本的部署包,但如果你只需要其中一种,可以修改pom.xml里的profiles配置。我建议保留这两个profile,因为实际部署时可能会遇到跨平台需求。
执行打包命令时有个坑要注意:必须使用IDEA内置的Maven面板执行,直接命令行可能会报错。具体步骤:
打包成功后,在target目录下会生成两个压缩包:
我用的是一台阿里云ECS,CentOS 7.9系统。部署前需要确保:
JDK安装步骤:
bash复制# 下载JDK
wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz
# 解压到/usr/local
tar -zxvf jdk-18_linux-x64_bin.tar.gz -C /usr/local/
# 配置环境变量
echo 'export JAVA_HOME=/usr/local/jdk-18.0.2.1' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
验证安装:
bash复制java -version
上传打包好的tar.gz文件到服务器后:
bash复制# 解压到/opt目录
tar -zxvf kkFileView-4.4.0-SNAPSHOT.tar.gz -C /opt/
# 进入bin目录
cd /opt/kkFileView-4.4.0-SNAPSHOT/bin
# 给脚本执行权限
chmod +x *.sh
# 启动服务
./startup.sh
启动后可以通过日志查看运行状态:
bash复制tail -f ../logs/kkFileView.log
中文乱码是Linux部署最常见的问题。我的解决方案是:
bash复制# 创建字体目录
mkdir -p /usr/share/fonts/zh_CN
# 安装字体工具
yum install -y fontconfig mkfontscale
# 刷新字体缓存
mkfontscale
mkfontdir
fc-cache -fv
默认8012端口可能会冲突,修改方法:
对于大文件预览,可能需要调整JVM参数:
bash复制# 修改bin/startup.sh
JAVA_OPTS="-Xms512m -Xmx2048m -XX:MetaspaceSize=128m"
预览文件会缓存到本地,长期运行可能占用大量空间。可以设置定时任务清理:
bash复制# 每天凌晨3点清理7天前的缓存
0 3 * * * find /opt/kkFileView-4.4.0-SNAPSHOT/file-cache -type f -mtime +7 -delete
问题1:启动时报端口占用
解决方案:
bash复制# 查找占用进程
netstat -tunlp | grep 8012
# 结束进程
kill -9 <PID>
问题2:Office文件预览失败
可能缺少LibreOffice,安装方法:
bash复制yum install -y libreoffice
问题3:PDF中文显示方框
这是字体问题,确保已正确安装中文字体,并检查JVM字体配置:
bash复制# 查看JVM可用字体
java -Djava.awt.headless=true -jar kkFileView-4.4.0-SNAPSHOT.jar -listfonts
在实际项目中部署kkFileView时,最大的经验是一定要先在测试环境充分验证。特别是字体和文件格式兼容性问题,不同Linux发行版可能会有差异。建议部署完成后,用各种类型的文件(尤其是中文命名的文件)做全面测试。