转载:https://www.cnblogs.com/lovezilv/p/11011599.html
Office Web Apps,简称owa,是微软开发的在线预览office 文件服务。只要是做web开发技术的技术人员都知道,office文件预览,对于网站来说,绝对是一个难点,目前常见的预览office文件方法有:1>将office 文件转为图片 2>将office文件转换为html文件 3>使用在线预览服务
这三种方式,在实际工作中,本人都用过。 本人2012年参加工作;
2012-2015年,这三年,我们公司用浏览器预览office文件,采用的是图片预览方式,也就是将office文件转换为图片。但是,很快问题就来了,客户反映,ppt和pptx文件,没有动画,他们辛辛苦苦做的动画效果,在网站上不能很好的展现出来,于是,经过技术团队的钻研,我们将office文件转换为html文件,将ppt和pptx中的动画,用js中的动画进行替换。
2015-2018年,这三年,我们公司用浏览器预览office文件,采用的是html文件预览方式,也就是将office文件转换为html文件,进行预览。 本以为这种方案能够很好的解决动画预览问题,但是很快问题就来了,将office文件转换为html文件,在预览过程中,会出现以下问题:
1>转换成功率为90%左右。 总有10%的文件,是转换不成功的。 因为js的动画并不能完全兼容office动画,遇到较新或者较老的动画,转换会失败
2>部分转换出的文件重影,字符变化。 因为office中部分样式,无法用css样式体现出来,导致转换的html样式错乱,重影
3>excel文件,如果是很多行,或者多个sheet,效果很差
一旦方式以上两个问题,那就是没救了。 客服人员要不停向客户解释,道歉,非常被动。
2018年-至今,采用Office Web Apps服务方式。 这种方式非常好,解决了大部分问题,基本和本地office预览文件一致,但是依旧需要优化
1>用户网络如果较差,会导致文件加载慢
2>ppt/pptx文件中,部分音频文件无法播放
不过即使如此,Office Web Apps 解决方案,依然是office文件预览的最佳方案了。可以满足99%以上的用户预览文件需求,自去年采用这种方案以来,受到客户的极大好评。
说明:
本系列文章,既适合企业用户查看,满足高并发,高可用性,高安全性要求,同时也适合个人开发者看,个人开发者可以不关注负载均衡和https。
目前在网上介绍office web apps安装教程的文章很多,包括官网也有,但是写的都不够全面。 而且对于个人开发者,网上的教程已经足够了;
但是,对于企业开发者,目前的教程远远不够。
1>为保证安全性,企业需要支持https,而证书申请,证书配置,目前资料很少
2>为保证性能,企业需要采用负载均衡,否则一台owa服务器,无法保证稳定性和高并发,官网上介绍的负载均衡,经过调研,过于复杂,并且效果不好,而我们惊奇的发现,现在网上竟然没有owa+负载均衡+https的相关文章。
域控制器对服务器的要求不高,我们这里以windows server 2008R2为例
系统要求:windows server 2008R2
笔者也尝试使用了windows server 2012R2,发现效果不好,比较卡,而windows server2008R2,效果很好
以下是具体步骤:
1.进入服务管理器
2.点击:角色-添加角色
3.点下一步
4.选中active Directory域名服务,中间会有弹窗,点击添加必需的功能,并点击下一步
5.点击下一步,安装
6.点击Active Directory域服务
7.点击 “运行 Active Directory 域服务安装向导(dcpromo.exe)”
8.点下一步按钮
9.选择在“在新林中新建域”,并点击下一步
10.填写根域名,并下一步
注意:根据经验,根域名最好不要是现实存在的域名,比方说不能是x.baidu.com,否则其他服务器,无法加入域
11.点下一步
注意:这里可以使用默认的
12.直接点击下一步
注意,点下一步的时候,时间有点长,要耐心等待
13.有个错误报警,不用管,直接选择是,并下一步
14.设置密码后,并下一步
15.步骤完成后,重启机器
注意:以下步骤是创建域账号,并添加域管理员以及远程登录权限,这步很重要,因为只有域账号,才能进行owa的相关设置
16.从“开始”中找到“Active Directory用户和计算机”并点击
17.依次选中Users-右键选择“新建”-用户,如下图
18.填写基本信息后,点击下一步
19,输入密码,并点下一步
为方便起见,我直接选择了密码永不过期
20.选中刚才创建的用户,并右键-属性
21.选择隶属于,并添加Remote Desktop Users;Domain Admins 权限
最终的效果是这样
这样,新建的域名账号即有了远程登录权限以及域管理员权限
后记:
用域账号远程登录系统后,发现域账号并没有管理员权限,比方说,打开power shell,还是需要右键-用管理员身份运行,才有管理员权限,这个时候,需要配置下安全策略,具体如下截图:
如上截图,将配置更改好后,重启服务器即可。
前提条件:1>一台window server 2008R2 服务器
2>您已经在同一内网的另外一台服务器上安装好了域控制器文档请看我写的另外一篇文章:
office web apps安装部署,配置https,负载均衡(二)域控制器安装并配置域账号
用administrator【管理员账号一般是这个,具体根据实际情况来】远程到服务器
具体步骤如下截图:
一:设置服务器DNS地址,具体步骤如下
1.
2.
3.
4.
5.
二:服务器连接域控制器
1.
2.
3.
5.输入域控制器配置的域账号用户名密码
前提条件:
1.一台windows server 2008R2服务器,并且已经配置了域;
服务器连接域控制器的相关文档,请查看上一篇文章:
office web apps安装部署,配置https,负载均衡(三)服务器连接域控制器
2.相关软件地址
链接:https://pan.baidu.com/s/1TMCRyS4-_VAWxz236eG8zg
提取码:5xki
具体步骤:
1.用域账号登录服务器,同时配置安全策略,保证域账号有管理员权限,安全策略的配置,在office web apps部署,配置https,负载均衡(二)域控制器安装并配置域账号 中的最后一步,有详细阐述,这里只截一张图
2.卸载服务器上原有版本的 .NET Framework【很重要】
注意:如果此步骤不执行,极有可能导致文件无法预览,而且预览报的错是:
,浏览器控制台报错 ERR_CONNECTION_RESET
3.安装.Net FrameWork 4.5
4.安装IIS和墨迹服务
为了安全起见,全部勾上吧,不然后面除了问题,很麻烦
安装成功后,重启机器
5.运行 wacserver.exe
6.运行wacserverlanguagepack.exe
7.运行wacserversp2013-kb2880558-fullfile-x64-glb.exe
前提条件:您已经完成了域控制器的配置,拥有域账号,并且已经安装了OWA启动所需要的必要软件;
具体步骤可以参考:
office web apps安装部署,配置https,负载均衡(一)背景介绍
office web apps安装部署,配置https,负载均衡(二)域控制器安装并配置域账号
office web apps安装部署,配置https,负载均衡(三)服务器连接域控制器
office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件
步骤:
1.右键PowerShell工具,并以管理员身份运行
一:Http 服务器场配置:
2.执行脚本
2.ExternalUrl 是安装owa相关软件的服务器的外网ip地址
3.OpenFromUrlEnabled 这个要设置为True,否则地址将无法访问
4.EditingEnabled是允许编辑的意思,要配置为True
5.AllowHttp允许http访问
6.访问ip会报错
这个时候,要在cmd(注意不是powershell)中执行:%systemroot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
执行完脚本后,预览一切正常了,
二:Https服务器场配置
由于笔者是用的是阿里云,所以这里的示例,域名,负载均衡,证书,都采用阿里云的相关操作,当然,原理都是想通的,采用其他方式获取域名,负载均衡,证书都是可以的。
1.申请域名证书,并将域名指向域服务器所在的地址,如果需要配置负载均衡,则需要将域名指向负载均衡地址
具体参考:如何申请阿里云免费SSL证书(可用于https网站)并下载下来
2.在服务器中导入在第一步中下载的ssl证书,这里我们需要的是iis证书,具体操作步骤如下图截图:
1>.证书下载下来,是如下面截图所示的两个文件,一个是pfx文件,一个是txt文件,txt文件中存储的是密码
2>打开运行,并输入mmc进行执行
3>打开控制台后,按照截图,一次进行如下操作
①添加删除单元
②选择证书并添加
③选择计算机账户,并下一步
④直接点击完成
⑤点击确定
⑥进入证书-个人,在右侧空白区域右键,并选择导入操作
⑦直接下一步
8.选择刚才下载的证书的pfx文件
⑨输入txt中的密码
⑩证书导入配置即可完成
3.更改证书友好名称
选中你要更改证书的那条记录,右键属性,在名称那栏更改即可
4.重新配置服务器场
1>设置证书友好名称: Set-OfficeWebAppsFarm -CertificateName xxx
2>重新设置InternalURL,ExternalURL
Set-OfficeWebAppsFarm -InternalURL https://计算机全名
Set-OfficeWebAppsFarm -ExternalURL https://外网域名/
设置好后,重启OWA服务,访问域名,即可
满心欢喜的以为大功告成了,换来的确是晴天霹雳,输入文件地址,打开发现报错:很抱歉,遇到问题,无法打开此演示文稿。请重试。
换个文档,报错:很抱歉,PowerPoint Web App 打开此演示文稿时遇到问题,要查看此演示文稿,请在Mircosoft PowerPoint中打开它。
经过查看错误日志,知道原来是用域名访问后,他内部又一次访问了域名,造成了访问环路,这个时候,我们只要配置下host就可以了,将域名指向127.0.0.1,如下图设置:
注意:hosts文件的路径在:C:\Windows\System32\drivers\etc
设置完以后,不会再报错了,正常预览,感觉生活是如此之美好
owa可以采用任何的负载均衡方案,我们这里采用阿里云提供的负载均衡解决方案
前提条件,你已经配置了一台域控制器,两台域服务器【即安装了owa相关软件,并将计算机隶属于域】;
如果您不清楚怎么做,那么请看一下前面几个教程吧:
office web apps安装部署,配置https,负载均衡(一)背景介绍
office web apps安装部署,配置https,负载均衡(二)域控制器安装并配置域账号
office web apps安装部署,配置https,负载均衡(三)服务器连接域控制器
office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件
office web apps安装部署,配置https,负载均衡(五)配置服务器场
1.在阿里云上购买负载均衡
具体步骤如下:
1>找到负载均衡连接,点进去
2>创建负载均衡
3>选择性能共享型实例,点击立即购买即可
4>配置负载均衡
①找到对应的负载均衡,点击监听配置向导
②监听的配置选择tcp,443端口,然后下一步
③选择对应的域服务器【注意不是域控制器】,443端口,相应的权重,继续下一步
我的服务器最终配置如下图:
④直接下一步,配置即可完成
5>拓展:域名指向负载均衡
①进入域名控制台,找到对应的域名,点击解析
②点击添加记录
③填写相关信息
设置完成即可
该篇文章,是这个系列文章的最后一篇文章,该篇文章将详细解答owa在安装过程中常见的问题。
如果您没有搭建好office web apps,您可以查看前面的一系列文章,查看具体步骤:
office web apps安装部署,配置https,负载均衡(一)背景介绍
office web apps安装部署,配置https,负载均衡(二)域控制器安装并配置域账号
office web apps安装部署,配置https,负载均衡(三)服务器连接域控制器
office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件
office web apps安装部署,配置https,负载均衡(五)配置服务器场
office web apps安装部署,配置https,负载均衡(六)配置负载均衡
问题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
这种情况,说明是用administrator登录的,需要切换到域账户下面操作。
问题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 -i
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)安装完毕。
问题3: 文件太大解决方案(>10M)
①进入到:
C:\Program Files\Microsoft Office Web Apps\OpenFromUrlHost
修改该文件夹下的:Settings_Service.ini
增加这句话:
OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000
注意,这个单位是KB,除以1024会得到多少M,我上面设置的结果是500M,因为512000KB/1024=500MB
②进入到 C:\Program Files\Microsoft Office Web Apps\OpenFromUrlWeb 下的Settings_Service.ini,进行相同的修改
问题4:输入文件地址,打开发现报错:很抱歉,遇到问题,无法打开此演示文稿。请重试。
换个文档,报错:很抱歉,PowerPoint Web App 打开此演示文稿时遇到问题,要查看此演示文稿,请在Mircosoft PowerPoint中打开它。
经过查看错误日志,知道原来是用域名访问后,他内部又一次访问了域名,造成了访问环路,这个时候,我们只要配置下host就可以了,将域名指向127.0.0.1,如下图设置:
注意:hosts文件的路径在:C:\Windows\System32\drivers\etc
设置完以后,不会再报错了,正常预览
问题5:域账号加入不了域
需要将域服务器的dns设置为域控制器的内网地址
问题6:域账号没有权限
用域账号远程登录系统后,发现域账号并没有管理员权限,比方说,打开power shell,还是需要右键-用管理员身份运行,才有管理员权限,这个时候,需要配置下安全策略,具体如下截图:
如上截图,将配置更改好后,重启服务器即可。
问题7:
,浏览器控制台报错 ERR_CONNECTION_RESET
这个问题一般是服务器上有更高版本的.Net Framework,那就不要客气了,卸载掉,重新安装.Net Framework4.5 吧,安装完以后,最好把owa相关的软件也都重装一遍。