从0部署Office Web Apps服务,告别第三方处理office包吧
首先先来两张初步搭完实现的效果预热一下。(基于浏览器)
正如我上篇文章使用 PhpSpreadsheet 实现读取写入 Execl可以使用更好的方案来处理office软件,那么开始吧,本篇文章有点长。(我从下班写到现在,中间自己又走了一遍流程)如果有已经实现过的朋友,欢迎出来一起交流,毕竟后面还有很多路要走,
搭建背景
日常业务中,业务场景免不了和office软件打交道,比如查看一些execl.ppt,或者通过程序获取数据,生成execl.....,可能平常大多数人使用的都是第三方包,比如现在用的多的PhpSpreadheet......,第三方包确实提供了很大的便利性,里面封装了很多支持你操作的功能,阅读文档,通过不同的代码来实现你想要的数据格式以及生成最终的文件。但是体验并不是很友好,能不能在不安装客户端的情况下,通过浏览器在线查看编辑execl.word.ppt,这个时候,Office Web Apps(下面统称为OWA)服务就可以派上用场了。
关于OWA
OWA是office服务产品,提供基于浏览器文件查看和编辑服务。适用于产品和服务支持WOPI(到最后实现部分再提这个,现在知道就好),web应用程序开发接口协议。这些产品,称为主机,包括 SharePoint 2013 和 Lync Server 2013。OWA 服务器场可以为多个本地主机提供Office 服务。虽然 OWA 要求不运行任何其他服务器应用程序的专用的服务器,你可以改为在虚拟机实例上安装 Office Web Apps Server。下面放一张官网的图。
所以从上面的OWA服务来看,我们当然可以把OWA接入自己开发的系统中,进行文件的转换,最终展示在浏览器上。正如上面提到的WOPI,提供了一系列基于web方式的,使文档能在OWA中查看和编辑office服务。也就是说,只要我们的应用按照WOPI实现的接口,就可以调用OWA服务,实现在线文档查看编辑。而且还支持跨平台,可以在IOS,安卓使用,这样产品优势就体现出来了。我去看了下,目前我看到的是明道是基于OWA实现的,有几家公司此功能是对外收费的。下面我们先来安装OWA服务。
安装注意事项
不安装任何其他服务器正在运行 Office Web Apps Server 的服务器上。这包括 Exchange Server、 SharePoint Server、 Lync Server 和SQL Server。如果您有服务器不足,请考虑在一台服务器必须运行的虚拟机实例中的 Office Web Apps Server。
不安装任何服务或角色,取决于在端口 80、 443 或 809 上的 Web 服务器 (IIS) 角色因为 Office Web Apps Server 定期删除这些端口上的web 应用程序。
不安装任何版本的 Office。如果已安装,您需要先卸载它才能安装 Office Web Apps Server。
不安装 Office Web Apps Server 的域控制器上。它不会在 Active Directory 域服务 (AD DS) 的服务器上运行。(这里我多开了一台虚拟机用来装)
把大体的事项列了下,其实还有很多,官方文档还是很齐的。
为OWA服务安装必备软件
1.操作系统
对于操作系统官网上提供三款:Windows Server 2008 R2、Windows Server 2012 和 Windows Server 2012 R2,当然我这里选择的是Windows Server 2012,因为他最省事,装一个补丁就够了。(我已经保存了安装的所有东西,放在网盘,列好顺序,有需要的可以自己下载)。安装系统就不说了,傻瓜式,我是在虚拟机上完成部署的。
2.安装服务
进入系统后,点看服务器管理,点击添加角色。
然后开始之前下一步,安装类型,基于角色安装下一步,服务器选择已经选中了直接下一步,然后到达服务器角色,这里我们需要勾选一个web服务器,我这里已经安装过了
在安装IIS的时候要安装Web服务器下面的“管理服务”,然后就是等安装结束了。
当然也可以通过管理员身份运行PowerShell(效果一样)
Add-WindowsFeatureWeb-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices
3.安装Office Web Apps
在我给的文件夹中分别点开文件夹1,2安装,接着还是从上往下安装,解释一下,wacserver.exe就是office web apps安装包,下面带有2013的是它的补丁,最下面从字面意思也看的出来是他的语言包,这个安装也是傻瓜操作,就不说了。安装之后重启。否则接下来的操作中,PowerShell识别不了相关的cmdlet命令。然后我们先不管这台服务器。
安装域控
对于OWA服务的域要求,官网有这么一段话。
所以我这里是新开了一台虚拟机用来装域控,然后把刚才装了OWA服务的转换服务器加入到域控制器中。
新开一台虚拟机,还是一样可以先安装一个Windows service 2012 系统。
1.安装域
点击服务器管理,添加角色
开始之前 下一步
安装类型 基于角色.. 下一步
服务器选择 下一步
-
选择服务器角色这里,要选择安装AD域服务(Active Directory 域服务)
然后一直到安装结束
2.配置域
1.点击ADS,点击黄色部分的更多
2.点击“将此服务器升级为域控制器” 。
3.进入AD域服务器配置向导,选择 “添加新林” ,输入域(记住这个域,后面我们的转换服务器绑定的就是这个域),点击下一步。
4.填写密码,下一步
5.提示DNS无法创建,没关系,直接下一步。
6。然后一直默认下一步知道安装结束。如果报错了。可能用户没有设置密码,给这个用户设置一个密码,再回来。
安装完成应该会重启。
将转换服务器加入到域控制器
1.回到了我们之前创建的转换服务器,修改转换服务器的NDS,指向域控服务器的ip地址。
2.打开计算机属性,修改计算机全称,我给了计算机一个新的全称,用来当作之后的转换服务器域名,然后更改他的域,填上之前创建域控的域名。最终效果如下。
重新打开域控服务器,点击管理 > 添加服务器,输入转换服务器修改后的计算机名称,立即查找。将搜索到的服务器双击添加到右边,点击确定。 只要你之前把转换服务器绑定到当前域控了就能找到。
然后在域控服务器里面,你就能看到两台服务器联机(我这里还有一台没显示出来,是因为我把转换服务器关了,事实证明8G运行内存真的不够),到这里域控服务器安装结束。剩下最后一点了。内网使用,虚拟机我设置的都是桥接
部署OWA服务
在OfficeWebApps服务器上,以管理员身份打开PowerShell,键入命令
New-OfficeWebAppsFarm–InternalURL"http://office.yukong.com"–AllowHttp–EditingEnabled
这段命令整体意思是创建一个OWA服务器场,里面的参数介绍一下。
1.–InternalURL:是运行的OWS,我理解成平常我们用来访问的域名了。里面的
office.yukong.com就是我们之前设置的转换服务器计算机全称。
2.–AllowHttp:配置服务器场使用HTTP。所以你也可以使用https,具体操作类似,
查看文档
3.EditingEnabled:启用OfficeWebApps与SharePoint2013一起使用时中
编辑。此参数不使用LyncServer2013,因为该主机不支持编辑。
按下回车,会出现提示,输入y,回车。会出现一个列表界面。我们现在需要检验安装是否成功。
InternalURL就是我们指定的OWA服务器场。在你的虚拟机上访问
http://servername/hosting/discovery
我这里的servername就是office.yukong.com。
出现这样的页面说明你安装没问题
这个页面是一个xml文件,主要是对应不同的文件转换转换服务器转换的地址。下面会提到一点。
关于WOPI关系结构
前面有提到过WOPI,只要我们实现了标准的WOPI接口,我们就能实现在线转换文件。
Browser浏览器
WOPI Server指我们存放文档的web服务
WOPI Client指的就是提供转换的OWA服务
从图中可以看出,转换服务器最终要请求我们两次,第一次,告诉他文件信息,第二次给他文件。所以WOPI Server至少要提供两个服务。一个是CheckFileInfo服务,另一个是GetFile服务。
1.CheckFileInfo服务
1.此服务返回的是请求文件的基本信息,WOPI Host以json方式返回给WOPI Client.
2.服务的URL为:HTTP://server/<...>/wopi*/files/<id>
3.返回的参数有很多,但是至少要五个属性:
OwnerId:文件所有者编号
BaseFileName: 文件名。
Size: 文件大小,以bytes为单位。
SHA256: 文件的256位bit的SHA-2编码散列内容。
Version: 文件版本号,文件如果被编辑,版本号也要跟着改变
2.GetInfo服务
此服务返回文件内容,以数据流的形式返回给WOPI Client。服务的URL为:HTTP://server/<...>/wopi*/files/<id>/contents。*两个服务之间只相差了一个/contents,这是为了让WOPI Client根据CheckFileInfo的Url推导出GetInfo,所以千万别自己破坏了这层关系。
另外我们当然可以在地址后面带一个身份令牌,第一次WOPI Client接受到这个令牌,第二次请求服务的时候他会把这个令牌给GetInfo服务,然后由WOPI Server来验证当前用户对文件的权限。
具体的url服务以及其中的所有参数参考官方文档:http://msdn.microsoft.com/en-us/library/hh622920(v=office.12).aspx
对于之前的服务请参考官方文档:https://docs.microsoft.com/zhcn/webappsserver/office-web-apps-server
其实写到这里已经差不多尾声了,毕竟这里面的东西太多了,写不完的,我这里也就实现了对office基于浏览器查看的服务,编辑什么的还没来得及看。
最后我在自己物理机项目中通过OWS进行简单人工PPT案例转换(也就是开头的图)
我来分析一下这个地址,前面部分的192.168.2.231/p/PowerPointFrame.aspx?(这里的192.168.2.231就是转换地址的ip,上文中的office.yukong.com),因为我们现在要转换的是pptx,所以我们从http://192.168.2.231查找pptx的转换方式
后面的地址就是文件地址了,也就是我当前物理机的项目。
这篇文章只是开个头,如果有这方面需求的朋友可以参考这篇文章加官方文档部署自己的Office Web apps 服务,接下来我还会做进一步的调整,还会去实现在线编辑,后续可能还会整理出来文章。有错误,请指点。
No Comments