前言碎語
首先非常感謝社群同仁對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容器環境的維護等工作。
架構組招聘
目前架構組還有兩個虛位以待,歡迎志同道合的你來和我們一起交流。履歷可發送至郵箱:[email protected]