简介:Office Online Server 2016 中文版安装部署详细步骤文档,面向需要在内网搭建在线文档预览与协作环境的 IT 运维人员,帮助从零完成域控搭建、依赖安装、服务配置到网站发布。压缩包仅含 1 个 docx 文件,大小约 2.04MB,全文按阶段组织,便于按顺序执行。文档覆盖部署全程:先通过服务器管理器搭建 AD 域控并升级为域控制器,再使用 PowerShell 命令批量安装 Web Server、.NET Framework 等功能组件,并安装 .NET Framework 4.5.2、Visual C++ Redistributable 等前置软件;随后完成 Office Online Server 主程序与中文语言包安装,执行 New-OfficeWebAppsFarm 等配置命令,最后借助 IIS 添加网站完成发布。文档中还列出了各必备软件的官方下载地址,并对密码设置、DNS 提示无法创建等易错步骤给出了明确提示。针对安装中常见的 DNS 报错、HTTP 访问异常,文档给出了处理办法;此外还介绍了通过 hosting/discovery 与 generate.aspx 页面验证部署是否成功的方法。目前已有 3878 人学习该文档,适合初次部署或需快速查阅排错思路的运维人员作为操作手册。
1. 先搞清楚你要装的是“服务”,不是 Office 桌面软件
某公司想给内部文档系统加在线预览,老板一句话丢过来:能不能打开 Word 不用下载、浏览器直接看?调研一圈后,最省事的方案其实是 Office Online Server 2016——它把 Office 文件渲染成网页,用户根本不用装 Office 套件,服务器部署一次,全公司都能通过浏览器预览 Word、Excel、PPT。这个软件中文版的安装不是“下一步、下一步”那么轻松:服务器要加入域、装齐 IIS 和 .NET 前置角色、准备好 HTTPS 证书,最后还要用 PowerShell 建场。整个流程里,真正劝退人的不是主程序安装,而是环境准备和语言文字这一串细节。下面按准备、安装、建场、验证的顺序,把 Office Online Server 2016 中文版一条龙走完。适合正在搭 SharePoint 的运维,也适合想给自研文档系统加预览能力的后端开发;如果只是本地偶尔看文件,装 LibreOffice 更快,别折腾这套。
2. 环境准备:域、角色、证书,缺一个都装不顺
2.1 为什么 OOS 必须跑在域成员服务器上
Office Online Server 2016 不是一台独立服务器就能随便跑的。它对外提供文档预览服务,对内要和 SharePoint、域账户体系打交道,所以最基础的要求是:这台服务器必须是域成员,而且不能是域控制器。实际部署时我习惯准备两台以上的服务器放负载均衡后面,每台规格不用太夸张,8 核 16G 内存加一块独立的日志盘就够了;单台也能跑通测试,但正式环境建议至少两台,因为文档转换非常吃 CPU。
除了加域,还有几个硬性条件,都是血泪经验换来的:服务器上不能装任何 Office 桌面套件,也不能装 SharePoint;系统盘的临时目录要给足空间,预览文档时 OOS 会先做格式转换,缓存文件经常占用几十 GB;两台服务器的时间必须和域控同步,时间偏移太大会导致 Kerberos 认证出问题,这是很多部署文档不会提的黑匣子。换句话说,这台服务器是“专用角色服务器”,不要顺手当文件服务器或个人办公机用。
2.2 用 Install-WindowsFeature 一次装齐 IIS 与 .NET 角色
OOS 2016 依赖 IIS、.NET Framework 4.5.2 以及一批 Web 功能组件。手动在“添加角色和功能”里逐个勾选很容易漏,我一般直接用 PowerShell 把官方要求的那一组功能装齐,Windows Server 2012 R2 和 2016 都适用。以下命令在管理员 PowerShell 里执行:
Install-WindowsFeature Web-Server, Web-Mgmt-Tools, Web-Mgmt-Console, Web-Scripting-Tools, Web-Windows-Auth, Web-Metabase, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter, NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, Server-Media-Foundation, Web-WebSockets, Web-ASP-NET45 -IncludeManagementTools这段命令覆盖了 OOS 运行所需的全部核心角色。几个关键参数值得多说一句:Web-Windows-Auth是 Windows 身份验证,不装的话后续场内机器之间互相通信会验证失败;Web-WebSockets用于 WOPI 协议里的长连接,少了它文档预览会出现莫名的断开;Server-Media-Foundation负责音视频文件的解码,PPT 里的嵌入视频能不能预览就看它。-IncludeManagementTools会把 IIS 管理控制台一起装上,方便后面排查站点绑定。
装完之后系统一般会提示重启。重启后还要补一个容易被忽略的依赖:Microsoft Visual C++ 2015 运行库。很多安装失败都是因为这台服务器缺少这个运行库,而安装日志里报的错又跟它毫无关系。补完运行库后,用下面命令快速确认相关功能是不是真的装上了:
Get-WindowsFeature Web-Server, NET-Framework-45-ASPNET | Select-Object Name, InstallStateInstallState显示Installed才代表这一步真正完成。如果显示Removed,多数情况下是刚才没有以管理员身份运行 PowerShell,或者系统更新没有打全。不要跳过后置检查,后面建场失败时你一定会回头怀疑这一步。
2.3 证书先装进“本地计算机”存储
OOS 2016 强制要求 HTTPS,证书是整个安装过程中坑最多的地方。企业内网环境可以申请内部 CA 签发的证书,公网访问场景就用正式证书商的证书。证书的主题必须是你计划给 OOS 使用的访问域名,比如oos.内部域名,如果用 IP 访问或者域名和证书不匹配,浏览器和 WOPI 客户端都会直接拒绝连接。
证书导入这一步是关键。很多人下载证书后习惯双击 pfx 文件直接导入,结果证书被放进了“当前用户”的证书存储,而 OOS 建场时只会去读“本地计算机”的证书存储,于是New-OfficeWebAppsFarm报“找不到证书”。正确的做法是在 mmc 里添加“证书”管理单元,选择“计算机账户”,再把证书导入到“个人”节点下。导入时记得勾选“包含私钥”,没有私钥的证书无法用于 TLS 绑定。
导入后用这条命令检查证书是否就位:
Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*oos*" } | Format-List Subject, Thumbprint, HasPrivateKey重点看三项:Subject是否包含访问域名,HasPrivateKey必须为True,另外确认商店路径开头是Cert:\LocalMachine而不是Cert:\CurrentUser。证书在后续建场时会按主题名称自动匹配,所以这里的域名一定不能写错,否则建场命令会默默匹配到同名的老证书。
2.4 建场前用一条脚本做环境自检
在安装主程序之前,我习惯先用脚本把环境状态一次性打出来,避免装到一半才发现前置条件没满足。自检项包括:机器是否在域里、IIS 是否安装、.NET 是否启用、443 端口是否被占用、目标磁盘剩余空间。脚本如下:
Write-Host "域状态:" (Get-WmiObject Win32_ComputerSystem).PartOfDomain Write-Host "IIS 功能:" (Get-WindowsFeature Web-Server).InstallState Write-Host "磁盘 C: 剩余:" (Get-PSDrive C).Free / 1GB Write-Host "443 端口监听:" (Get-NetTCPConnection -LocalPort 443 -ErrorAction SilentlyContinue | Select-Object -First 1).StatePartOfDomain为True、Web-Server为Installed、磁盘剩余空间大于 30GB 时,环境就算基本合格。443 端口此时应该是空白的,因为 OOS 还没建场;如果已经有其他站点占用 443,需要先处理掉,否则建场后站点绑定会冲突。做完这一步,再去装主程序,顺利程度会高很多。
3. 主程序与中文语言包安装:双击之外还要跑两条 PowerShell
3.1 挂载镜像,用 setup.exe 完成主程序安装
Office Online Server 2016 的安装介质是镜像文件,下载后先挂载到虚拟光驱,或者解压到服务器本地磁盘。这里不要图省事直接通过网络共享路径运行安装程序,容易因为权限问题中途失败。我用的是服务器本地解压目录,管理员身份打开命令行,进入介质目录后运行setup.exe。
安装向导前半段和普通软件没什么区别,但有两个点值得注意:第一,安装程序会先做环境检测,如果检测到 Office 桌面套件或 SharePoint 组件,会直接红屏中断,并且不给详细原因;第二,安装过程默认会把完整功能装到C:\Program Files\Office Online Server,路径不要改,改路径后续补丁和语言包可能出现匹配问题。
主程序安装完成后需要重启服务器。重启后不要急着配置,先到“控制面板 → 程序和功能”里确认一下,除了 Office Online Server 主程序外,不应该再出现任何 Microsoft Office 相关条目。这一步确认干净了,再进入语言包环节。
3.2 中文语言包要单独装,装完切换机器语言
Office Online Server 2016 主程序默认只有英文界面,中文预览界面要靠语言包。注意,这个语言包不是主程序安装向导里的选项,而是一个独立的安装程序,需要单独下载、单独运行。我踩过的坑是:有人以为装了中文版镜像就等于有中文界面,结果预览界面死活是英文,问题就出在语言包没有装。
语言包的安装同样是在管理员命令行里运行,安装完成后用 PowerShell 把本机语言设置为中文:
Set-OfficeWebAppsMachine -Language zh-cn iisresetSet-OfficeWebAppsMachine是 OOS 独有的机器级配置命令,-Language zh-cn表示把当前机器的界面语言和默认文档语言设为简体中文。后面接的iisreset是重启 IIS,目的是让新语言配置立即生效。语言包安装顺序我建议放在主程序重启之后、建场之前;如果已经建了场再装语言包,虽然也能补上,但一部分已启动的预览会话会继续显示英文,需要手工回收工作进程才能彻底切换,非常麻烦。
3.3 面板验证:Get-OfficeWebAppsMachine 与语言包清单
主程序和语言包装完后,不要急着进入建场,先用两条命令验证安装结果。第一条检查机器状态:
Get-OfficeWebAppsMachine正常输出里能看到当前机器的角色、语言、证书绑定等信息。如果这里报错,说明主程序安装不完整,回去重装主程序,不要继续往下走。第二条检查语言包:
Get-OfficeWebAppsInstalledLanguagePack输出里会列出所有已安装的语言包条目。能看到zh-cn才算真正成功。如果这条命令没有输出任何内容,说明语言包没有装进去,重新运行语言包安装程序。要特别提醒:语言包安装完成后,如果后续重新执行过New-OfficeWebAppsFarm或重置过 IIS,建议再执行一次Set-OfficeWebAppsMachine -Language zh-cn,因为场初始化时有可能把语言配置覆盖回默认值。
4. 用 PowerShell 创建场:New-OfficeWebAppsFarm 参数是重头戏
4.1 New-OfficeWebAppsFarm 常用参数与推荐值
主程序和语言包都装完后,OOS 还处在“未初始化”状态,必须创建一个场才能对外服务。建场命令是New-OfficeWebAppsFarm,核心操作就是配好下表的参数。最容易出错的是区分InternalURL和ExternalURL的语义,前者是场内部机器之间使用的地址,后者是客户端浏览器访问的地址;单机测试场景这两个可以相同。
| 参数 | 作用 | 推荐值 |
|---|---|---|
InternalURL | 场内部通信地址 | https://oos.内部域名,必须 HTTPS |
ExternalURL | 客户端访问地址 | https://oos.公网域名,无外网需求时与 InternalURL 相同 |
CertificateName | 证书主题名 | 与证书 Subject 保持一致 |
CacheSizeInGB | 文档转换缓存大小 | 20~50,并发高时调大 |
LogLocation | 日志目录 | 非系统盘独立目录 |
OpenFromUrlEnabled | 允许从 URL 打开文档 | 第三方系统预览时设为$true |
OpenFromUncEnabled | 允许从 UNC 路径打开 | 默认$false,高安全环境保持关闭 |
TranslationEnabled | 机器翻译功能 | 国内环境一般设$false |
单机测试的完整建场命令我一般这样写:
New-OfficeWebAppsFarm ` -InternalURL "https://oos.内部域名" ` -ExternalURL "https://oos.公网域名" ` -CertificateName "oos.公网域名" ` -CacheSizeInGB 20 ` -OpenFromUrlEnabled:$true ` -OpenFromUncEnabled:$false命令里的证书名必须能精确匹配到Cert:\LocalMachine\My里的证书主题。OpenFromUrlEnabled在测试第三方文档系统时建议打开,否则通过 URL 方式预览会被拒绝;如果只服务 SharePoint,这个参数可以直接去掉。-CertificateName匹配不到证书时场会创建失败,报错信息会直白地告诉你“找不到证书”,原因八成就是证书存错位置或没有私钥。
4.2 建完场后的 IIS、DNS 与防火墙收尾
OOS 建场成功后,IIS 里会自动创建一个名为OfficeWebApps的站点,监听 443 端口,不需要手工添加新站点。很多人习惯手动去“默认网站”里加绑定,结果反而把自动站点搞乱。正确姿势是:建场完先检查 IIS 站点列表,确认OfficeWebApps站点处于“已启动”状态,再处理网络层。
端口占用检查用NetTCPConnection或netstat都行,命令行直出的结果更直观:
netstat -ano | findstr :443如果 443 被其他进程占用,优先停掉那个站点或服务。接着放行防火墙,单台测试环境加一条入站规则即可:
New-NetFirewallRule -DisplayName "OOS HTTPS 443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action AllowDNS 解析看你的访问场景:内网使用就把oos.内部域名解析到 OOS 服务器 IP;公网访问则把公网域名解析到负载均衡器或映射到对应公网 IP。负载均衡做健康检查时,健康检查 URL 填https://oos域名/hosting/health,检查频率建议 5 秒一次,超时设为 3 秒,这样后端节点异常时能及时摘除。
4.3 接 SharePoint 或自定义系统的两种对接路径
OOS 本身不提供文档管理界面,它只是一个转换和渲染服务,必须和前端系统对接。最常见的对接对象是 SharePoint:在 SharePoint 服务器上执行绑定命令,让 SharePoint 自动发现 OOS 节点。命令如下:
New-SPWOPIBinding -ServerName "oos.公网域名"执行完可以再用Get-SPWOPIBinding查看绑定状态。SharePoint 通过 WOPI 协议与 OOS 通信,文档库里的 Office 文件会直接走浏览器预览。
如果对接的是自研系统,最简单的预览方式是 iframe 嵌入 OOS 的view.aspx端点,文档地址放在src参数里并做 URL 编码。假设你的文档链接是https://内部站点/doc.docx,预览页地址就是:
https://oos.公网域名/op/view.aspx?src=https%3A%2F%2F内部站点%2Fdoc.docx注意这里src指向的文档地址必须也是 HTTPS 可访问的,而且 OOS 服务器要能访问到那个地址,否则预览页面会一直转圈。OpenFromUrlEnabled必须为$true,否则返回错误。这个方式是 OOS 最轻量的接入方案,不涉及复杂协议,适合快速验证链路。
5. 最容易翻车的 5 个安装坑与排查思路
5.1 现象:装完主程序,建场时提示无法初始化
主程序明明安装成功,但执行New-OfficeWebAppsFarm时报“场初始化失败”或直接提示环境不满足。检查了域、IIS、证书都没问题,最后才发现服务器上装过 Office 桌面套件。OOS 对这种事是零容忍的,安装程序和建场命令都会检测桌面 Office 组件。
原因很简单:OOS 官方规定它必须运行在专用服务器上,任何 Office 桌面产品都会造成文件类型关联和组件冲突。解决方法是彻底卸载桌面 Office,包括 Office 全家桶、Visio、Project 这类关联产品,卸载后重启服务器再重跑建场命令。如果卸载不干净,可以用“控制面板 → 程序和功能”确认列表里已经没有 Microsoft Office 相关条目。这个坑是最难发现的,因为报错信息里不会写“检测到 Office”。
5.2 现象:New-OfficeWebAppsFarm 报“找不到证书”
命令执行时报错信息明确提到证书找不到,但证书明明已经在 mmc 里能看到。这种情况多数是证书导入到了当前用户存储,而不是本地计算机存储。OOS 建场只读取Cert:\LocalMachine\My,你看到的证书和它看到的不是同一个地方。
解决方法是把证书迁移到机器存储。如果原来只有 pfx 文件,直接重新导入到“本地计算机”即可;如果证书已经在当前用户存储里,可以用 mmc 导出再导入,或者用 PowerShell 迁移:
$cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object { $_.Subject -like "*oos*" } | Select-Object -First 1 Export-Certificate -Cert $cert -FilePath .\temp.cer Import-Certificate -FilePath .\temp.cer -CertStoreLocation Cert:\LocalMachine\My这里有一个容易忽略的前提:原证书必须带有私钥,否则导出再导入后HasPrivateKey仍是False。带有私钥的标准做法是导出 pfx 格式,再导入机器存储,导入时勾选“允许导出私钥”。
5.3 现象:健康检查页面 403 / 404
建场完成后访问https://oos域名/hosting/health,返回 403 或 404,而服务器本机访问https://localhost/hosting/health时一切正常。这个现象说明服务本身是健康的,问题出在访问路径或域名解析上。
原因大部分集中在三处:一是外部域名解析指向了负载均衡器或网关,而不是 OOS 服务器;二是 IIS 里OfficeWebApps站点绑定的域名和访问域名不一致;三是证书域名和访问域名不匹配,浏览器或 HTTP 客户端因为 TLS 校验失败直接返回 403。排查顺序建议先在本机 hosts 文件里把域名指向 OOS 服务器 IP,用浏览器访问;通了再逐步检查 DNS、防火墙和负载均衡规则。健康检查页能返回 200,是判断服务是否正常的最快手段。
5.4 现象:中文界面死活不生效
语言包装了,Get-OfficeWebAppsInstalledLanguagePack也能看到zh-cn,但预览文档时右键菜单、工具栏、加载提示还是英文。这个坑我修过很多次,原因一般有两个:一个是机器语言没切到中文,另一个是浏览器请求语言优先级问题。
处理方式分两步。第一步在服务器上重新执行语言设置命令:
Set-OfficeWebAppsMachine -Language zh-cn iisreset第二步看浏览器发送的Accept-Language请求头。如果浏览器首选语言是英文,OOS 会按英文渲染界面,即使服务器语言是中文也一样。Chrome 里把语言优先级改成“中文(简体)”后,再刷新预览页就能看到中文界面。这个和服务器配置没关系,属于客户端语言协商机制,别在服务器上反复折腾。
5.5 现象:外网打不开,内网正常
内网访问预览一切正常,切到外网环境就打不开页面,常见的反应是把锅甩给 OOS,实际上问题几乎都在网络链路。内网能访问说明 OOS 服务和站点绑定是对的,外网失败要从 DNS 到防火墙逐层排查。
第一步确认外网域名解析到正确的公网入口;第二步确认公网入口到 OOS 服务器的端口映射放行 443;第三步确认 OOS 服务器本地防火墙允许来自公网网段的 443 入站连接;第四步确认ExternalURL参数值就是外网访问域名,同时证书 SAN 里包含这个外网域名。内网正常并不代表外网一定正常,ExternalURL配置错误会导致 WOPI 回调地址全是内网地址,浏览器拿着内网地址自然打不开。
6. 装完怎么验:健康检查、语言验证与一份真实文档
6.1 Test-OfficeWebAppsFarm 和 hosting/health 怎么看
建场完成后,第一件事是跑场健康检查命令:
Test-OfficeWebAppsFarm命令会遍历场内所有服务器和缓存角色,输出每一项的检查结果。重点关注HealthResult里有没有非 0 状态,一般常见警告集中在三个方面:证书即将到期、磁盘剩余空间不足、缓存驱动不在线。证书还有一两个月到期时,Test-OfficeWebAppsFarm会给出黄色警告但服务仍可用,别等它变成红色才换证书。
浏览器直接访问健康页也很有用:访问https://oos域名/hosting/health,返回 200 说明服务进程和 HTTPS 绑定都没有问题。这个页面是负载均衡健康检查的标准路径,也是后续日常巡检的首要指标。
6.2 用一份真实 docx 走完预览流程
命令检查只能证明服务“活着”,文档能不能真正渲染出来,还得拿真实文件测试。测试文档建议用 Word、Excel、PPT 各准备一份,不要拿 PDF 当验收标准,PDF 预览依赖另外的组件,不在这次部署范围内。
访问方式用最直接的view.aspx端点。先执行下面的命令获取 OOS 的发现信息:
Invoke-WebRequest "https://oos域名/hosting/discovery" -UseBasicParsing | Select-Object -Expand Content返回的 XML 里能看到一组 app 条目,其中Document_conversion就是文档格式转换的入口。随后把测试文档放到一个 OOS 服务器能访问的 HTTPS 地址,浏览器打开预览页:
https://oos域名/op/view.aspx?src=<url编码后的文档地址>页面能把 docx 内容渲染出来,说明从 URL 打开到格式转换的整条链路已通;再确认一下界面语言,右键菜单是中文就说明语言包和语言切换全部生效。这一套走完,Office Online Server 2016 中文版从服务器准备到业务交付才算真正完成。
我每次搭完这套环境,都会顺手在服务器上留一个部署记录,把证书到期时间、语言包版本、DNS 指向写清楚。原因很简单:OOS 平时不怎么需要碰,但一旦文档预览出问题,最先要被盘问的就是这几个基础配置。有个记录,排查时能省下一个下午。希望帮到你。
本文还有配套的精品资源,点击获取