最近在作項目時,要在手機端實如今線文檔預覽的功能。因而百度了一下實現方案,大體是將文檔轉換成pdf,而後在經過插件實現預覽。這些方案沒有具體實現代碼,也沒有在線預覽的地址,再加上項目時間緊迫。只能考慮其它方案,這時微軟的office web apps方案映入眼簾,因而和同事一塊兒用一臺PC機折騰了幾天終於完成了部署,但願經過本篇記錄下安裝過程和遇到的坑。目前使用該方案的有 明道 微軟,我部署的服務地址:http://myscloud.vicp.cc/op/generate.aspx 下面是在線預覽的效果圖。html
使用該方案的好處:web
1.現有代碼改動量很小,幾乎能夠忽略不計。sql
2.無需本身寫代碼,只需一臺服務器便可shell
3.支持文檔類型很全面,doc,ppt,xls,docx,pptx,xlsx,pdf。瀏覽器
4.手機和pc都支持,支持文檔緩存,分頁瀏覽。緩存
閱讀目錄安全
介紹完特性之後,下面介紹服務的安裝部署。我的感受初次部署可能會以爲比較困難,由於這個服務限制仍是不少的。服務器
服務器環境要求網絡
1.轉換文檔須要兩臺服務器,一臺爲轉換server,另一臺爲域控server。(安裝office web apps的服務器必須加域才能安裝成功,若是沒有加域後面步驟會出現錯誤,疑難問題裏面會介紹)app
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工具有份一下系統,以避免出錯從頭開始安裝。
若是你在安裝過程當中遇到奇怪的錯誤而且解決了,但願能夠告訴我一下,以供我補充完善疑難問題這一項。目前該方案已經在購買服務器實施的過程當中,有須要實如今線文檔預覽的能夠考慮使用。