最近在做項目時,要在手機端實現在線文檔預覽的功能。於是百度了一下實現方案,大致是將文檔轉換成pdf,然后在通過插件實現預覽。這些方案沒有具體實現代碼,也沒有在線預覽的地址,再加上項目時間緊迫。只能考慮其它方案,這時微軟的office web apps方案映入眼簾,於是和同事一起用一台PC機折騰了幾天終於完成了部署,希望通過本篇記錄下安裝過程和遇到的坑。目前使用該方案的有 明道 微軟,我部署的服務地址:http://myscloud.vicp.cc/op/generate.aspx 下面是在線預覽的效果圖。
使用該方案的好處:
1.現有代碼改動量很小,幾乎可以忽略不計。
2.無需自己寫代碼,只需一台服務器即可
3.支持文檔類型很全面,doc,ppt,xls,docx,pptx,xlsx,pdf。
4.手機和pc都支持,支持文檔緩存,分頁瀏覽。
閱讀目錄
安裝部署步驟
介紹完特性以后,下面介紹服務的安裝部署。個人感覺初次部署可能會覺得比較困難,因為這個服務限制還是很多的。
服務器環境要求
1.轉換文檔需要兩台服務器,一台為轉換server,另外一台為域控server。(安裝office web apps的服務器必須加域才能安裝成功,如果沒有加域后面步驟會出現錯誤,疑難問題里面會介紹)
2.系統要求為widow server2008R2 64bit SP1或者以上,NET Framework 4.5,KB2592525,Windows PowerShell 3.0,IIS,保證80 443 809端口不被占用,確保當前機器沒有安裝office,確保當前機器沒有安裝Exchange,sharepoint,lync server,sql server
3.服務器帶寬和內存越高越好,測試發現比較耗性能,原因得從服務的實現原理上講起。office web apps服務會通過用戶提供的文檔src,從src服務器上把文檔下載下來,然后進行轉換,根據文檔名稱進行緩存,轉換完成以后返回。 帶寬越大下載過程使用的時間越短,服務器性能越好轉換速度越快。
域控服務器安裝這里就不介紹了,有需要的可以參考域服務器安裝部署這篇文章。
軟件准備
1.本文安裝步驟所需的軟件我都放在百度雲盤了,可以進行下載。下載地址:http://pan.baidu.com/s/1hrBeYqw
步驟
下面的安裝步驟很重要,不按順序安裝可能出現未知錯誤,很難解決,所以建議按照下面步驟進行安裝。
1.安裝.net framework4.5
2.安裝iis7
打開服務器管理,添加角色
這里說明一點,把這些功能全部都勾上,后面運行命令的時候會用到。
3.安裝補丁
Windows Server 2008 R2 x64 Edition 更新程序 (KB2592525)_Windows6.1-KB2592525-x64.msu
4.安裝powershell
Windows6.1-KB2506143-x64.msu
5.安裝墨跡支持
服務器管理,添加功能
6.安裝office web apps
官網下載URL:http://download.microsoft.com/do ... D8639/wacserver.exe
7.安裝office web apps語言包
wacserverlanguagepack.exe
8.安裝office web apps sp1補丁包
9.通過PowerShell配置Office web apps
這個步驟是最容易出錯的,記得要使用域賬戶右鍵管理員方式運行
Import-Module OfficeWebApps
New-OfficeWebAppsFarm -InternalURL http://xx.domin.com -ExternalURL http://xx.domin.com -AllowHttp -EditingEnabled -OpenFromUrlEnabled
New-OfficeWebAppsFarm 的使用及各參數含義可以去微軟官網查看:http://technet.microsoft.com/zh-cn/library/jj219436.aspx
-InternalURL:內網瀏覽地址,http://xx.domin.com 其中 xx表示計算機名 domin.com 表示域名
-ExternalURL:外網瀏覽地址
-AllowHttp 允許80端口訪問
-OpenFromUrlEnabled 允許通過url方式進行預覽
-CacheLocation 緩存文件存放路徑 默認是C:\ProgramData\Microsoft\OfficeWebApps\Working\d
-CacheSizeInGB 最大緩存文件大小 單位GB 默認為15GB
關於-InternalURL的怎么設置,可以計算機右鍵-》屬性進行查看 計算機全名則是需要的地址
執行完命令就可以在iis中查看了,可以看到自動添加了兩個站點,通過上面的地址http://xx.domin.com 進行瀏覽,出現下面的界面則表示整個安裝完成了。
可以通過 http://xx.domin.com/hosting/discovery查看描述
使用過程中如果想修改服務配置,可以通過Set-OfficeWebAppsFarm命令進行修改
Set-OfficeWebAppsFarm -AllowHttp
我這邊裝完以后通過花生殼映射了一個外網地址,大家可以訪問預覽(網絡可能不穩定)。http://myscloud.vicp.cc/op/generate.aspx
使用示例
安裝完成office web apps以后,你可以采用以下方式實現在線預覽。
//在線預覽服務地址 var strOfficeApps="https://docview.mingdao.com"; //文檔地址,需要外網能訪問 var strFileUrl="http://74881.vhost65.cloudvhost.net/doc/test.docx"; var strUrl =strOfficeApps+"/op/embed.aspx/src="+encodeURIComponent(strFileUrl);
這樣生成的地址即可以在瀏覽器中預覽了,你可以把這個地址嵌入到iframe中進行使用
<iframe src='strUrl' width='476px' height='288px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Web Apps</a>.</iframe>
服務器部署疑難問題
下面列舉一下安裝部署過程中出現的幾個問題及解決辦法
1.New-OfficeWebAppsFarm : 登錄失敗: 未知的用戶名或錯誤密碼
PS C:\Users\Administrator> New-OfficeWebAppsFarm -InternalURL "http://xxxx" -AllowHttp -EditingEnabled New-OfficeWebAppsFarm : 登錄失敗: 未知的用戶名或錯誤密碼。 所在位置 行:1 字符: 1 + New-OfficeWebAppsFarm -InternalURL "http://xxxx" -AllowHttp -EditingE ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [New-OfficeWebAppsFarm], AuthenticationException + FullyQualifiedErrorId : System.Security.Authentication.AuthenticationException,Microsoft.Office.Web.Apps.Adminis tration.NewFarmCommand 如果碰到這種問題,可能是使用的本地賬戶登錄的,需要切換到域賬戶下面操作。
2.HTTP 錯誤 500.21
訪問 http://xxxx/hosting/discovery HTTP 錯誤 500.21 - Internal Server Error 處理程序“DiscoveryService”在其模塊列表中有一個錯誤模塊“ManagedPipelineHandler”
出現這種錯誤是第一步安裝的.net framework4.5未在iis中注冊導致的,以管理員方式打開cmd,運行以下命令 cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
.\aspnet_regiis.exe -iru Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.17929 用於在本地計算機上安裝和卸載 ASP.NET 的管理實用工具。 版權所有(C) Microsoft Corporation。保留所有權利。 開始安裝 ASP.NET (4.0.30319.17929)。 ............. ASP.NET (4.0.30319.17929)安裝完畢。
iisreset /restart /noforce 正在嘗試停止... Internet 服務已成功停止 正在嘗試啟動... Internet 服務已成功啟動
3.文件太大解決方案(>10M)
服務默認支持的最大文件大小是10M,大於10M會報錯。可以通過以下步驟解決此問題 OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000 后面不要加分號
1.打開如圖文件Settings_Service.ini,文件目錄為C:\Program Files\Microsoft Office Web Apps\OpenFromUrlHost
; --- OpenFromUrlHost --- ; ; The application root for the current application ApplicationRoot=(System.String)/oh
在默認內容后添加(512000/1024M,可以根據自己的需求設定)
OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000
2.修改 C:\Program Files\Microsoft Office Web Apps\OpenFromUrlWeb 下的Settings_Service.ini,進行相同的修改
3.重啟office web apps服務
再重新試一下>10M的文件,發現可以訪問了
4.文檔地址為ip不是域名的預覽報錯解決方案
比如文檔地址為http://10.5.192.168/A.docx 這個時候預覽會報錯 ,而相應的地址為http://mydoc.com/A.docx 域名的則是好的。這個問題估計是微軟自己的安全驗證問題,為了解決此問題我采取了一種地址轉發的方式。
步驟:在Http80站點下添加轉發應用程序,站點文件路徑一定要選在C:\Windows\System32\drivers\etc 下,並且賦予讀寫權限,為了方便修改hosts文件
正常預覽訪問的是:http://mydoc.com/op/embed.aspx/src=文檔地址,現在改為http://mydoc.com/Redirect/embed.aspx/src=文檔地址
代碼會判斷如果是ip則在hosts添加ip和域名的映射關系
Redirect站點代碼下載地址:Redirect站點
總結
整個方案不需要自己額外寫代碼,麻煩的地方在於安裝部署,出現錯誤很難排查,主要還是因為資料少。所以建議安裝到office web apps步驟時,用ghost工具備份一下系統,以免出錯從頭開始安裝。
如果你在安裝過程中遇到奇怪的錯誤並且解決了,希望可以告訴我一下,以供我補充完善疑難問題這一項。目前該方案已經在購買服務器實施的過程中,有需要實現在線文檔預覽的可以考慮使用。